From b43adb740625f76304423a6c4e563a290981c07a Mon Sep 17 00:00:00 2001 From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com> Date: Sat, 11 Apr 2020 16:24:40 -0500 Subject: [PATCH 001/582] Add quick connect --- src/controllers/auth/login.js | 48 ++++++++++++++++++++++++ src/libraries/apiclient/apiclientcore.js | 23 +++++++++++- src/login.html | 4 ++ 3 files changed, 74 insertions(+), 1 deletion(-) diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js index 4296b8bfb3..746384a64c 100644 --- a/src/controllers/auth/login.js +++ b/src/controllers/auth/login.js @@ -150,6 +150,53 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout }); } + function loginQuickConnect() { + var apiClient = getApiClient(); + var identifier = "" + var interval = 0; + var friendlyName = "test"; + $.get('/QuickConnect/Initiate?FriendlyName=' + friendlyName).then(json => { + if (!json.Secret || !json.Code) { + Dashboard.alert({ + message: json.Error, + title: "Error" + }); + return; + } + + Dashboard.alert({ + message: "Authorize request " + json.Code + " to continue", + title: "Quick Connect Code" + }); + + loading.show(); + + identifier = json.Secret; + interval = setInterval(() => { + $.get('/QuickConnect/Connect?Secret=' + identifier).then(x => { + if(x.Authenticated) { + apiClient.quickConnect(x.Authentication).then((result) => { + var user = result.User; + var serverId = getParameterByName("serverid"); + var newUrl; + + if (user.Policy.IsAdministrator && !serverId) { + newUrl = "dashboard.html"; + } else { + newUrl = "home.html"; + } + + loading.hide(); + Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient); + Dashboard.navigate(newUrl); + clearInterval(interval); + }); + } + }); + }, 5000); + }); + } + view.querySelector("#divUsers").addEventListener("click", function (e) { var card = dom.parentWithClass(e.target, "card"); var cardContent = card ? card.querySelector(".cardContent") : null; @@ -183,6 +230,7 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout Dashboard.navigate("forgotpassword.html"); }); view.querySelector(".btnCancel").addEventListener("click", showVisualForm); + view.querySelector(".btnQuick").addEventListener("click", loginQuickConnect); view.querySelector(".btnManual").addEventListener("click", function () { view.querySelector("#txtManualName").value = ""; showManualForm(view, true); diff --git a/src/libraries/apiclient/apiclientcore.js b/src/libraries/apiclient/apiclientcore.js index 557a4e1033..80be946a60 100644 --- a/src/libraries/apiclient/apiclientcore.js +++ b/src/libraries/apiclient/apiclientcore.js @@ -356,7 +356,28 @@ define(["events", "appStorage"], function(events, appStorage) { instance.onAuthenticated ? instance.onAuthenticated(instance, result).then(afterOnAuthenticated) : afterOnAuthenticated() }, reject) }) - }, ApiClient.prototype.ensureWebSocket = function() { + }, ApiClient.prototype.quickConnect = function (token) { + if (!token) return Promise.reject(); + var url = this.getUrl("Users/AuthenticateWithQuickConnect"), + instance = this; + return new Promise(function(resolve, reject) { + var postData = { + Token: token + }; + instance.ajax({ + type: "POST", + url: url, + data: JSON.stringify(postData), + dataType: "json", + contentType: "application/json" + }).then(function(result) { + var afterOnAuthenticated = function() { + redetectBitrate(instance), resolve(result) + }; + instance.onAuthenticated ? instance.onAuthenticated(instance, result).then(afterOnAuthenticated) : afterOnAuthenticated() + }, reject) + }) + }, ApiClient.prototype.ensureWebSocket = function() { if (!this.isWebSocketOpenOrConnecting() && this.isWebSocketSupported()) try { this.openWebSocket() } catch (err) { diff --git a/src/login.html b/src/login.html index 8e48901c11..343b85906e 100644 --- a/src/login.html +++ b/src/login.html @@ -42,6 +42,10 @@ + + + + Incoming login requests: +
+ +
+ diff --git a/src/quickconnect.html b/src/quickconnect.html new file mode 100644 index 0000000000..770796a10e --- /dev/null +++ b/src/quickconnect.html @@ -0,0 +1,29 @@ +
+
+
+
+
+

Quick Connect

+
+
+ + Quick connect is: Failed to load status + +
+ + +
If unchecked, users will have to click the Activate button in their profile before initiating a quick connect login.
+
+ + +
+
+
\ No newline at end of file diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 11c89b01da..930df8be49 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -349,6 +349,12 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " href: "devices.html", pageIds: ["devicesPage", "devicePage"], icon: "devices" + }); + links.push({ + name: "Quick Connect", + href: "quickconnect.html", + pageIds: ["quickConnectPage", "quickConnectPage"], + icon: "devices" }); links.push({ name: globalize.translate("HeaderActivity"), diff --git a/src/scripts/routes.js b/src/scripts/routes.js index 9c3db58a7f..1520e96632 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -72,6 +72,12 @@ define([ transition: "fade", controller: "user/subtitles" }); + defineRoute({ + path: "/mypreferencesquickconnect.html", + autoFocus: false, + transition: "fade", + controller: "user/quickconnect" + }); defineRoute({ path: "/dashboard.html", @@ -103,6 +109,12 @@ define([ roles: "admin", controller: "device" }); + defineRoute({ + path: "/quickconnect.html", + autoFocus: false, + roles: "admin", + controller: "quickconnect" + }); defineRoute({ path: "/dlnaprofile.html", autoFocus: false, diff --git a/src/scripts/site.js b/src/scripts/site.js index 3b992eaf2b..311478c019 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -829,6 +829,7 @@ var AppInfo = {}; define("displaySettings", [componentsPath + "/displaysettings/displaysettings"], returnFirstDependency); define("playbackSettings", [componentsPath + "/playbacksettings/playbacksettings"], returnFirstDependency); define("homescreenSettings", [componentsPath + "/homescreensettings/homescreensettings"], returnFirstDependency); + define("quickConnectSettings", [componentsPath + "/quickconnectsettings/quickconnectsettings"], returnFirstDependency); define("playbackManager", [componentsPath + "/playback/playbackmanager"], getPlaybackManager); define("layoutManager", [componentsPath + "/layoutManager", "apphost"], getLayoutManager); define("homeSections", [componentsPath + "/homesections/homesections"], returnFirstDependency); From fdfdcd60fe3d7a66cfc334f0692978fc3bb8e27c Mon Sep 17 00:00:00 2001 From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com> Date: Mon, 13 Apr 2020 16:23:16 -0500 Subject: [PATCH 003/582] Switch off of jQuery --- CONTRIBUTORS.md | 1 + .../quickconnectsettings/quickconnectsettings.js | 8 +++++--- src/controllers/auth/login.js | 12 ++++++------ src/controllers/quickconnect.js | 16 +++++++++------- src/controllers/user/menu.js | 2 +- src/controllers/user/quickconnect.js | 9 +++++++++ src/mypreferencesquickconnect.html | 6 +++--- src/quickconnect.html | 2 +- 8 files changed, 35 insertions(+), 21 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index aa3ec707e3..ffbf054829 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -34,6 +34,7 @@ - [Ryan Hartzell](https://github.com/ryan-hartzell) - [Thibault Nocchi](https://github.com/ThibaultNocchi) - [MrTimscampi](https://github.com/MrTimscampi) + - [ConfusedPolarBear](https://github.com/ConfusedPolarBear) # Emby Contributors diff --git a/src/components/quickconnectsettings/quickconnectsettings.js b/src/components/quickconnectsettings/quickconnectsettings.js index a30db441e6..ed7985dcfa 100644 --- a/src/components/quickconnectsettings/quickconnectsettings.js +++ b/src/components/quickconnectsettings/quickconnectsettings.js @@ -15,12 +15,14 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa } function list(apiClient) { - var elem = $("#quickConnectIncoming"); - elem.html(""); + console.debug("getting json"); apiClient.getJSON("/QuickConnect/List").then(json => { - console.debug("raw json", json); + var elem = $("#quickConnectIncoming"); + elem.html(""); + console.debug("raw json", json, "length is", json.length); for(var i = 0; i < json.length; i++) { var current = json[i]; + console.debug("current is", current); var html = "
  • " + current.Code + " - " + current.FriendlyName + " - "; if(!current.Authenticated) { diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js index f5dc9b487b..845ae9a38f 100644 --- a/src/controllers/auth/login.js +++ b/src/controllers/auth/login.js @@ -153,10 +153,10 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout function loginQuickConnect() { var apiClient = getApiClient(); var friendlyName = "test"; - - var url = apiClient.getUrl("/QuickConnect/Initiate?FriendlyName=" + friendlyName); - apiClient.getJSON(url) - .then(json => { + + var url = apiClient.getUrl("/QuickConnect/Initiate?FriendlyName=" + friendlyName); + apiClient.getJSON(url) + .then(json => { if (!json.Secret || !json.Code) { Dashboard.alert({ message: json.Error, @@ -173,9 +173,9 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout loading.show(); var interval = setInterval(() => { - var url = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret); + var url = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret); apiClient.getJSON(url) - .then(data => { + .then(data => { if(data.Authenticated) { apiClient.quickConnect(data.Authentication).then((result) => { var user = result.User; diff --git a/src/controllers/quickconnect.js b/src/controllers/quickconnect.js index e3d1f76054..5c3c8f9a18 100644 --- a/src/controllers/quickconnect.js +++ b/src/controllers/quickconnect.js @@ -2,13 +2,15 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading, "use strict"; function loadPage(page, status) { + console.debug("status is \"" + status + "\""); + var active = (status == "Active"); var available = (status == "Available") || active; - - $("#quickConnectStatus").text(status.toLocaleLowerCase()); - $("#chkQuickConnectAvailable").checked(available); - $("#chkQuickConnectActive").checked(active); - + + page.querySelector("#quickConnectStatus").textContent = status.toLocaleLowerCase(); + page.querySelector("#chkQuickConnectAvailable").checked = available; + page.querySelector("#chkQuickConnectActive").checked = active; + loading.hide(); } @@ -44,8 +46,8 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading, } $(document).on("pageinit", "#quickConnectPage", function () { - $("#quickConnectPage").off("submit", onSubmit).on("submit", onSubmit); - $("#btnQuickConnectSubmit").click(onSubmit); + document.querySelector("#quickConnectPage").onsubmit = onSubmit; + document.querySelector("#btnQuickConnectSubmit").onclick = onSubmit; }).on("pageshow", "#quickConnectPage", function () { loading.show(); var page = this; diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js index ff8db72681..f5d05c5be3 100644 --- a/src/controllers/user/menu.js +++ b/src/controllers/user/menu.js @@ -24,7 +24,7 @@ define(["apphost", "connectionManager", "layoutManager", "listViewStyle", "emby- page.querySelector(".lnkHomePreferences").setAttribute("href", "mypreferenceshome.html?userId=" + userId); page.querySelector(".lnkPlaybackPreferences").setAttribute("href", "mypreferencesplayback.html?userId=" + userId); page.querySelector(".lnkSubtitlePreferences").setAttribute("href", "mypreferencessubtitles.html?userId=" + userId); - page.querySelector(".lnkQuickConnectPreferences").setAttribute("href", "mypreferencesquickconnect.html?userId=" + userId); + page.querySelector(".lnkQuickConnectPreferences").setAttribute("href", "mypreferencesquickconnect.html?userId=" + userId); if (window.NativeShell && window.NativeShell.AppHost.supports("clientsettings")) { page.querySelector(".clientSettings").classList.remove("hide"); diff --git a/src/controllers/user/quickconnect.js b/src/controllers/user/quickconnect.js index d6f2ae25c1..6e63bcdc08 100644 --- a/src/controllers/user/quickconnect.js +++ b/src/controllers/user/quickconnect.js @@ -2,6 +2,13 @@ define(["quickConnectSettings", "dom", "globalize", "loading", "userSettings", " "use strict"; return function (view, params) { + function notImplemented() { + Dashboard.alert({ + message: "This button is not implemented yet, you must check the checkbox labeled \"Always accept quick connect login requests\" in the dashboard", + title: "Not implemented" + }); + } + var quickConnectSettingsInstance = null; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); @@ -9,6 +16,8 @@ define(["quickConnectSettings", "dom", "globalize", "loading", "userSettings", " view.addEventListener("viewshow", function () { console.debug("defining instance"); + $("#btnQuickConnectActivate").click(notImplemented); + quickConnectSettingsInstance = new QuickConnectSettings({ serverId: ApiClient.serverId(), userId: userId, diff --git a/src/mypreferencesquickconnect.html b/src/mypreferencesquickconnect.html index 326ce51b48..b9ffdfaccd 100644 --- a/src/mypreferencesquickconnect.html +++ b/src/mypreferencesquickconnect.html @@ -1,12 +1,12 @@
    - Incoming login requests:
      -
    • Failed to load incoming requests
    • -
    +
  • Failed to load incoming requests
  • + diff --git a/src/quickconnect.html b/src/quickconnect.html index 770796a10e..875716285c 100644 --- a/src/quickconnect.html +++ b/src/quickconnect.html @@ -16,7 +16,7 @@
    If unchecked, users will have to click the Activate button in their profile before initiating a quick connect login.
    From c37e8f2f1bcb827893fe32a3fcf77107964a853e Mon Sep 17 00:00:00 2001 From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com> Date: Sat, 18 Apr 2020 19:20:15 -0500 Subject: [PATCH 004/582] Implement auto refresh and activate button --- .../quickconnectsettings.js | 85 +++++++++++++------ src/controllers/auth/login.js | 75 ++++++++-------- src/controllers/quickconnect.js | 54 +++++++----- src/controllers/user/quickconnect.js | 63 +++++++------- src/mypreferencesmenu.html | 4 +- src/mypreferencesquickconnect.html | 2 +- src/quickconnect.html | 6 +- src/scripts/librarymenu.js | 2 +- src/scripts/site.js | 2 +- 9 files changed, 170 insertions(+), 123 deletions(-) diff --git a/src/components/quickconnectsettings/quickconnectsettings.js b/src/components/quickconnectsettings/quickconnectsettings.js index ed7985dcfa..fc167802d8 100644 --- a/src/components/quickconnectsettings/quickconnectsettings.js +++ b/src/components/quickconnectsettings/quickconnectsettings.js @@ -1,11 +1,10 @@ -define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loading', 'connectionManager', 'homeSections', 'dom', 'events', 'listViewStyle', 'emby-select', 'emby-checkbox'], function (require, appHost, layoutManager, focusManager, globalize, loading, connectionManager, homeSections, dom, events) { +define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loading', 'connectionManager', 'listViewStyle', 'emby-select', 'emby-checkbox'], function (require, appHost, layoutManager, focusManager, globalize, loading, connectionManager) { "use strict"; function authorizeRequest(event) { var lookup = event.data.lookup; - var apiClient = event.data.apiClient; var url = ApiClient.getUrl("/QuickConnect/Authorize"); - apiClient.ajax({ + ApiClient.ajax({ type: "POST", url: url, data: { @@ -13,46 +12,72 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa } }, true); } - - function list(apiClient) { - console.debug("getting json"); - apiClient.getJSON("/QuickConnect/List").then(json => { - var elem = $("#quickConnectIncoming"); + + QuickConnectSettings.prototype.list = function(argPage) { + ApiClient.getJSON("/QuickConnect/List").then(json => { + var elem = $(argPage.querySelector("#quickConnectIncoming")); elem.html(""); - console.debug("raw json", json, "length is", json.length); - for(var i = 0; i < json.length; i++) { + for (var i = 0; i < json.length; i++) { var current = json[i]; - console.debug("current is", current); var html = "
  • " + current.Code + " - " + current.FriendlyName + " - "; - - if(!current.Authenticated) { + + if (!current.Authenticated) { html += "authorize"; - } - else { + } else { html += " (already authorized)"; } - + html += "
  • "; elem.append(html); - $("#qc" + current.Lookup).click({ lookup: current.Lookup, apiClient: apiClient}, authorizeRequest); + $("#qc" + current.Lookup).click({ lookup: current.Lookup }, authorizeRequest); } + + return true; + }).catch((e) => { + console.error("Unable to get quick connect login requests. error:", e); }); - } + }; + + QuickConnectSettings.prototype.activate = function() { + var url = ApiClient.getUrl("/QuickConnect/Activate"); + ApiClient.ajax({ + type: "POST", + url: url, + contentType: "application/json", + dataType: "json" + }).then((json) => { + let message = json.Error; + + console.log("message is \"" + message + "\""); + if (message && message !== "") { + console.error("Error activating quick connect. Error: ", json.Error); + + Dashboard.alert({ + title: "Unable to activate quick connect", + message: message + }); + + return false; + } + + Dashboard.alert({ + message: "Already active" + }); + + return true; + }).catch((e) => { + console.error("Error activating quick connect. Error:", e); + throw e; + }); + }; function QuickConnectSettings(options) { this.options = options; } QuickConnectSettings.prototype.loadData = function () { - loading.show(); - - var apiClient = connectionManager.getApiClient(this.options.serverId); - - list(apiClient); - - console.debug("request list finished"); - - loading.hide(); + this.options.interval = setInterval(this.list, 5000, this.options.page); + this.list(this.options.page); }; QuickConnectSettings.prototype.submit = function () { @@ -60,8 +85,14 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa }; QuickConnectSettings.prototype.destroy = function () { + console.debug("clearing refresh interval", this.options.interval); + clearInterval(this.options.interval); this.options = null; }; + QuickConnectSettings.prototype.interval = function (interval) { + this.options.interval = interval; + }; + return QuickConnectSettings; }); diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js index 845ae9a38f..94fa15d412 100644 --- a/src/controllers/auth/login.js +++ b/src/controllers/auth/login.js @@ -152,51 +152,54 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout function loginQuickConnect() { var apiClient = getApiClient(); - var friendlyName = "test"; - + var friendlyName = navigator.userAgent; // TODO: what should this be changed to? + var url = apiClient.getUrl("/QuickConnect/Initiate?FriendlyName=" + friendlyName); apiClient.getJSON(url) - .then(json => { - if (!json.Secret || !json.Code) { + .then(json => { + if (!json.Secret || !json.Code) { + Dashboard.alert({ + message: json.Error, + title: "Error" + }); + + return false; + } + Dashboard.alert({ - message: json.Error, - title: "Error" + message: "Authorize request " + json.Code + " to continue", + title: "Quick Connect Code" }); - return; - } - Dashboard.alert({ - message: "Authorize request " + json.Code + " to continue", - title: "Quick Connect Code" - }); + loading.show(); - loading.show(); + var interval = setInterval(async function() { + let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret); + let data = await apiClient.getJSON(connectUrl); + if (data.Authenticated) { + let result = await apiClient.quickConnect(data.Authentication); + var user = result.User; + var serverId = getParameterByName("serverid"); + var newUrl = "home.html"; - var interval = setInterval(() => { - var url = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret); - apiClient.getJSON(url) - .then(data => { - if(data.Authenticated) { - apiClient.quickConnect(data.Authentication).then((result) => { - var user = result.User; - var serverId = getParameterByName("serverid"); - var newUrl; + if (user.Policy.IsAdministrator && !serverId) { + newUrl = "dashboard.html"; + } - if (user.Policy.IsAdministrator && !serverId) { - newUrl = "dashboard.html"; - } else { - newUrl = "home.html"; - } + loading.hide(); + Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient); + Dashboard.navigate(newUrl); + clearInterval(interval); - loading.hide(); - Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient); - Dashboard.navigate(newUrl); - clearInterval(interval); - }); + return true; } - }); - }, 5000); - }); + return false; + }, 5000); + + return true; + }).catch((e) => { + console.error("Unable to initiate quick connect login request. Error:", e); + }); } view.querySelector("#divUsers").addEventListener("click", function (e) { @@ -240,7 +243,7 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout view.querySelector(".btnSelectServer").addEventListener("click", function () { Dashboard.selectServer(); }); - view.addEventListener("viewshow", function (e) { + view.addEventListener("viewshow", function () { loading.show(); if (!appHost.supports('multiserver')) { diff --git a/src/controllers/quickconnect.js b/src/controllers/quickconnect.js index 5c3c8f9a18..a6ebc381ce 100644 --- a/src/controllers/quickconnect.js +++ b/src/controllers/quickconnect.js @@ -1,9 +1,8 @@ -define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading, libraryMenu) { +define(["jQuery", "loading", "fnchecked"], function ($, loading) { "use strict"; + var page; function loadPage(page, status) { - console.debug("status is \"" + status + "\""); - var active = (status == "Active"); var available = (status == "Available") || active; @@ -16,44 +15,53 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading, function onSubmit() { loading.show(); - - var available = $("#chkQuickConnectAvailable").is(":checked") ? "Available" : "Unavailable"; + + var newStatus = page.querySelector("#chkQuickConnectAvailable").checked ? "Available" : "Unavailable"; + if (newStatus && page.querySelector("#chkQuickConnectActive").checked) { + newStatus = "Active"; + } + var url = ApiClient.getUrl("/QuickConnect/Available"); - + ApiClient.ajax({ type: "POST", data: { - "Status": available + "Status": newStatus }, url: url }, true).then(() => { - if($("#chkQuickConnectActive").is(":checked")) { - url = ApiClient.getUrl("/QuickConnect/Activate"); - ApiClient.ajax({ - type: "POST", - url: url - }, true); - } - Dashboard.alert({ message: "Settings saved", title: "Saved" }); + + setTimeout(updatePage, 500); + + return true; + }).catch((e) => { + console.error("Unable to set quick connect status. error:", e); }); - + loading.hide(); return false; } - $(document).on("pageinit", "#quickConnectPage", function () { - document.querySelector("#quickConnectPage").onsubmit = onSubmit; - document.querySelector("#btnQuickConnectSubmit").onclick = onSubmit; - }).on("pageshow", "#quickConnectPage", function () { - loading.show(); - var page = this; + function updatePage() { var promise1 = ApiClient.getQuickConnect("Status"); - Promise.all([promise1]).then(function (responses) { + Promise.all([promise1]).then((responses) => { loadPage(page, responses[0]); + return true; + }).catch((e) => { + console.error("Unable to get quick connect status. error:", e); }); + } + + $(document).on("pageshow", "#quickConnectPage", function () { + loading.show(); + page = this; + + page.querySelector("#btnQuickConnectSubmit").onclick = onSubmit; + + updatePage(); }); }); diff --git a/src/controllers/user/quickconnect.js b/src/controllers/user/quickconnect.js index 6e63bcdc08..fae5d49865 100644 --- a/src/controllers/user/quickconnect.js +++ b/src/controllers/user/quickconnect.js @@ -1,50 +1,55 @@ define(["quickConnectSettings", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (QuickConnectSettings, dom, globalize, loading, userSettings, autoFocuser) { "use strict"; - return function (view, params) { - function notImplemented() { - Dashboard.alert({ - message: "This button is not implemented yet, you must check the checkbox labeled \"Always accept quick connect login requests\" in the dashboard", - title: "Not implemented" - }); - } - + return function (view) { var quickConnectSettingsInstance = null; - var hasChanges; - var userId = params.userId || ApiClient.getCurrentUserId(); - var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new userSettings(); + view.addEventListener("viewshow", function () { - console.debug("defining instance"); - - $("#btnQuickConnectActivate").click(notImplemented); - quickConnectSettingsInstance = new QuickConnectSettings({ - serverId: ApiClient.serverId(), - userId: userId, - element: view.querySelector(".quickConnectSettingsContainer"), - userSettings: currentSettings, - enableSaveButton: false, - enableSaveConfirmation: false, - autoFocus: autoFocuser.isEnabled() + page: view, + interval: 0 }); - + + view.querySelector("#btnQuickConnectActivate").addEventListener("click", () => { + quickConnectSettingsInstance.activate(quickConnectSettingsInstance); + }); + quickConnectSettingsInstance.loadData(); - }); - view.addEventListener("change", function () { - hasChanges = true; + + ApiClient.getQuickConnect("Status").then((status) => { + let btn = view.querySelector("#btnQuickConnectActivate"); + + if (status === "Unavailable") { + btn.textContent = "Quick connect is not available on this server"; + btn.disabled = true; + return false; + } + + else if (status === "Available") { + return false; + } + + btn.style.display = "none"; + return true; + }).catch((e) => { + throw e; + }); }); view.addEventListener("viewbeforehide", function () { - hasChanges = false; - if (quickConnectSettingsInstance) { quickConnectSettingsInstance.submit(); } + onDestroy(); }); view.addEventListener("viewdestroy", function () { + onDestroy(); + }); + + function onDestroy() { if (quickConnectSettingsInstance) { quickConnectSettingsInstance.destroy(); quickConnectSettingsInstance = null; } - }); + } }; }); diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index c8db1d17f3..bfc5e793ef 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -51,13 +51,13 @@
    - +
    Quick Connect
    - +
    diff --git a/src/mypreferencesquickconnect.html b/src/mypreferencesquickconnect.html index b9ffdfaccd..d92e49a427 100644 --- a/src/mypreferencesquickconnect.html +++ b/src/mypreferencesquickconnect.html @@ -2,7 +2,7 @@ - + Incoming login requests:
      diff --git a/src/quickconnect.html b/src/quickconnect.html index 875716285c..9a7dfdfb3e 100644 --- a/src/quickconnect.html +++ b/src/quickconnect.html @@ -6,9 +6,9 @@

      Quick Connect

    - + Quick connect is: Failed to load status - +
    If unchecked, users will have to click the Activate button in their profile before initiating a quick connect login.
    - + diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 930df8be49..2accf4948d 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -350,7 +350,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " pageIds: ["devicesPage", "devicePage"], icon: "devices" }); - links.push({ + links.push({ name: "Quick Connect", href: "quickconnect.html", pageIds: ["quickConnectPage", "quickConnectPage"], diff --git a/src/scripts/site.js b/src/scripts/site.js index 311478c019..3b8abf2bfe 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -829,7 +829,7 @@ var AppInfo = {}; define("displaySettings", [componentsPath + "/displaysettings/displaysettings"], returnFirstDependency); define("playbackSettings", [componentsPath + "/playbacksettings/playbacksettings"], returnFirstDependency); define("homescreenSettings", [componentsPath + "/homescreensettings/homescreensettings"], returnFirstDependency); - define("quickConnectSettings", [componentsPath + "/quickconnectsettings/quickconnectsettings"], returnFirstDependency); + define("quickConnectSettings", [componentsPath + "/quickconnectsettings/quickconnectsettings"], returnFirstDependency); define("playbackManager", [componentsPath + "/playback/playbackmanager"], getPlaybackManager); define("layoutManager", [componentsPath + "/layoutManager", "apphost"], getLayoutManager); define("homeSections", [componentsPath + "/homesections/homesections"], returnFirstDependency); From 43d01146a23b9ee9c4044a5d0b545ee6fe6ce692 Mon Sep 17 00:00:00 2001 From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com> Date: Sun, 19 Apr 2020 01:39:05 -0500 Subject: [PATCH 005/582] Fix linting --- .../quickconnectsettings/quickconnectsettings.js | 2 +- src/controllers/quickconnect.js | 4 ++-- src/controllers/user/quickconnect.js | 4 +--- src/libraries/apiclient/apiclientcore.js | 7 ++++--- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/components/quickconnectsettings/quickconnectsettings.js b/src/components/quickconnectsettings/quickconnectsettings.js index fc167802d8..c65782cafe 100644 --- a/src/components/quickconnectsettings/quickconnectsettings.js +++ b/src/components/quickconnectsettings/quickconnectsettings.js @@ -61,7 +61,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa } Dashboard.alert({ - message: "Already active" + message: "Successfully activated" }); return true; diff --git a/src/controllers/quickconnect.js b/src/controllers/quickconnect.js index a6ebc381ce..35e5516f45 100644 --- a/src/controllers/quickconnect.js +++ b/src/controllers/quickconnect.js @@ -2,7 +2,7 @@ define(["jQuery", "loading", "fnchecked"], function ($, loading) { "use strict"; var page; - function loadPage(page, status) { + function loadPage(status) { var active = (status == "Active"); var available = (status == "Available") || active; @@ -49,7 +49,7 @@ define(["jQuery", "loading", "fnchecked"], function ($, loading) { function updatePage() { var promise1 = ApiClient.getQuickConnect("Status"); Promise.all([promise1]).then((responses) => { - loadPage(page, responses[0]); + loadPage(responses[0]); return true; }).catch((e) => { console.error("Unable to get quick connect status. error:", e); diff --git a/src/controllers/user/quickconnect.js b/src/controllers/user/quickconnect.js index fae5d49865..2b03dec415 100644 --- a/src/controllers/user/quickconnect.js +++ b/src/controllers/user/quickconnect.js @@ -23,9 +23,7 @@ define(["quickConnectSettings", "dom", "globalize", "loading", "userSettings", " btn.textContent = "Quick connect is not available on this server"; btn.disabled = true; return false; - } - - else if (status === "Available") { + } else if (status === "Available") { return false; } diff --git a/src/libraries/apiclient/apiclientcore.js b/src/libraries/apiclient/apiclientcore.js index 04421b8372..e1892505fc 100644 --- a/src/libraries/apiclient/apiclientcore.js +++ b/src/libraries/apiclient/apiclientcore.js @@ -358,8 +358,8 @@ define(["events", "appStorage"], function(events, appStorage) { }) }, ApiClient.prototype.quickConnect = function (token) { if (!token) return Promise.reject(); - var url = this.getUrl("Users/AuthenticateWithQuickConnect"), - instance = this; + var url = this.getUrl("Users/AuthenticateWithQuickConnect"); + var instance = this; return new Promise(function(resolve, reject) { var postData = { Token: token @@ -372,7 +372,8 @@ define(["events", "appStorage"], function(events, appStorage) { contentType: "application/json" }).then(function(result) { var afterOnAuthenticated = function() { - redetectBitrate(instance), resolve(result) + redetectBitrate(instance); + return resolve(result); }; instance.onAuthenticated ? instance.onAuthenticated(instance, result).then(afterOnAuthenticated) : afterOnAuthenticated() }, reject) From bf03a7ba57af89f1a38c41457dbe7c70f501a04d Mon Sep 17 00:00:00 2001 From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com> Date: Sat, 25 Apr 2020 15:46:22 -0500 Subject: [PATCH 006/582] Improve UI --- .../quickconnectsettings.js | 42 ++++++++++++++----- src/controllers/auth/login.js | 42 ++++++++++++------- src/controllers/quickconnect.js | 12 ++---- src/mypreferencesmenu.html | 2 +- src/mypreferencesquickconnect.html | 5 +-- src/quickconnect.html | 5 --- src/scripts/librarymenu.js | 2 +- 7 files changed, 65 insertions(+), 45 deletions(-) diff --git a/src/components/quickconnectsettings/quickconnectsettings.js b/src/components/quickconnectsettings/quickconnectsettings.js index c65782cafe..59250df76a 100644 --- a/src/components/quickconnectsettings/quickconnectsettings.js +++ b/src/components/quickconnectsettings/quickconnectsettings.js @@ -11,25 +11,45 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa "Lookup": lookup } }, true); + + require(["toast"], function (toast) { + toast("Request authorized"); + }); + + // prevent bubbling + return false; } QuickConnectSettings.prototype.list = function(argPage) { ApiClient.getJSON("/QuickConnect/List").then(json => { + let found = false; var elem = $(argPage.querySelector("#quickConnectIncoming")); - elem.html(""); - for (var i = 0; i < json.length; i++) { - var current = json[i]; - var html = "
  • " + current.Code + " - " + current.FriendlyName + " - "; + elem.text("No pending login requests"); - if (!current.Authenticated) { - html += "authorize"; - } else { - html += " (already authorized)"; + for (var i = 0; i < json.length; i++) { + if (!found) { + elem.html(""); + found = true; } - html += "
  • "; + var current = json[i]; + + let html = '
    '; + html += '
    ' + current.Code + '
    '; + html += '
    ' + current.FriendlyName + '
    '; + html += '
    '; + + if (!current.Authenticated) { + html += 'authorize'; + } else { + html += " (authorized)"; + } + + html += '
    '; elem.append(html); + $("#qc" + current.Lookup).click({ lookup: current.Lookup }, authorizeRequest); + $("#div" + current.Lookup).click({ lookup: current.Lookup }, authorizeRequest); } return true; @@ -60,8 +80,8 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa return false; } - Dashboard.alert({ - message: "Successfully activated" + require(["toast"], function (toast) { + toast("Successfully activated"); }); return true; diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js index 94fa15d412..ff36939fb2 100644 --- a/src/controllers/auth/login.js +++ b/src/controllers/auth/login.js @@ -152,7 +152,7 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout function loginQuickConnect() { var apiClient = getApiClient(); - var friendlyName = navigator.userAgent; // TODO: what should this be changed to? + var friendlyName = navigator.userAgent; var url = apiClient.getUrl("/QuickConnect/Initiate?FriendlyName=" + friendlyName); apiClient.getJSON(url) @@ -174,25 +174,37 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout loading.show(); var interval = setInterval(async function() { - let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret); - let data = await apiClient.getJSON(connectUrl); - if (data.Authenticated) { - let result = await apiClient.quickConnect(data.Authentication); - var user = result.User; - var serverId = getParameterByName("serverid"); - var newUrl = "home.html"; + try { + let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret); + let data = await apiClient.getJSON(connectUrl); + if (data.Authenticated) { + let result = await apiClient.quickConnect(data.Authentication); + var user = result.User; + var serverId = getParameterByName("serverid"); + var newUrl = "home.html"; - if (user.Policy.IsAdministrator && !serverId) { - newUrl = "dashboard.html"; + if (user.Policy.IsAdministrator && !serverId) { + newUrl = "dashboard.html"; + } + + loading.hide(); + Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient); + Dashboard.navigate(newUrl); + clearInterval(interval); + + return true; } + } catch (e) { + Dashboard.alert({ + message: "Quick connect was deactivated before the login request could be approved", + title: "Unexpected error" + }); - loading.hide(); - Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient); - Dashboard.navigate(newUrl); + console.error("Unable to login with quick connect", e); clearInterval(interval); - - return true; + loading.hide(); } + return false; }, 5000); diff --git a/src/controllers/quickconnect.js b/src/controllers/quickconnect.js index 35e5516f45..3432e79231 100644 --- a/src/controllers/quickconnect.js +++ b/src/controllers/quickconnect.js @@ -3,12 +3,10 @@ define(["jQuery", "loading", "fnchecked"], function ($, loading) { var page; function loadPage(status) { - var active = (status == "Active"); - var available = (status == "Available") || active; + var available = status === "Available" || status === "Active"; page.querySelector("#quickConnectStatus").textContent = status.toLocaleLowerCase(); page.querySelector("#chkQuickConnectAvailable").checked = available; - page.querySelector("#chkQuickConnectActive").checked = active; loading.hide(); } @@ -17,9 +15,6 @@ define(["jQuery", "loading", "fnchecked"], function ($, loading) { loading.show(); var newStatus = page.querySelector("#chkQuickConnectAvailable").checked ? "Available" : "Unavailable"; - if (newStatus && page.querySelector("#chkQuickConnectActive").checked) { - newStatus = "Active"; - } var url = ApiClient.getUrl("/QuickConnect/Available"); @@ -30,9 +25,8 @@ define(["jQuery", "loading", "fnchecked"], function ($, loading) { }, url: url }, true).then(() => { - Dashboard.alert({ - message: "Settings saved", - title: "Saved" + require(["toast"], function (toast) { + toast("Settings saved"); }); setTimeout(updatePage, 500); diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index bfc5e793ef..6f753e5554 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -51,7 +51,7 @@
    - + tap_and_play
    Quick Connect
    diff --git a/src/mypreferencesquickconnect.html b/src/mypreferencesquickconnect.html index d92e49a427..b58ca8074f 100644 --- a/src/mypreferencesquickconnect.html +++ b/src/mypreferencesquickconnect.html @@ -3,10 +3,9 @@ Activate - Incoming login requests:
    -
      -
    • Failed to load incoming requests
    • +
      +
      Failed to load incoming requests
    diff --git a/src/quickconnect.html b/src/quickconnect.html index 9a7dfdfb3e..7d7ec879a6 100644 --- a/src/quickconnect.html +++ b/src/quickconnect.html @@ -14,11 +14,6 @@ Enable quick connect on this server - -
    If unchecked, users will have to click the Activate button in their profile before initiating a quick connect login.
    -
    Failed to load incoming requests
    +
    ${MessagePleaseWait}
    diff --git a/src/quickconnect.html b/src/quickconnect.html index 7d7ec879a6..dff74eb836 100644 --- a/src/quickconnect.html +++ b/src/quickconnect.html @@ -3,16 +3,16 @@
    -

    Quick Connect

    +

    ${QuickConnect}

    - Quick connect is: Failed to load status + ${LabelCurrentStatus}
    diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 131dcf7472..e3ef65f22f 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -351,7 +351,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " icon: "devices" }); links.push({ - name: "Quick Connect", + name: globalize.translate("QuickConnect"), href: "quickconnect.html", pageIds: ["quickConnectPage", "quickConnectPage"], icon: "tap_and_play" diff --git a/src/strings/en-us.json b/src/strings/en-us.json index d5fc40ef01..ad390a0fe2 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -48,6 +48,7 @@ "AuthProviderHelp": "Select an Authentication Provider to be used to authenticate this user's password.", "Auto": "Auto", "AutoBasedOnLanguageSetting": "Auto (based on language setting)", + "Authorize": "authorize", "Backdrop": "Backdrop", "Backdrops": "Backdrops", "Banner": "Banner", @@ -63,6 +64,7 @@ "Browse": "Browse", "BrowsePluginCatalogMessage": "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.", + "ButtonActivate": "Activate", "ButtonAdd": "Add", "ButtonAddImage": "Add Image", "ButtonAddMediaLibrary": "Add Media Library", @@ -140,6 +142,7 @@ "ButtonTrailer": "Trailer", "ButtonUninstall": "Uninstall", "ButtonUp": "Up", + "ButtonUseQuickConnect": "Use Quick Connect", "ButtonViewWebsite": "View website", "ButtonWebsite": "Website", "CancelRecording": "Cancel recording", @@ -231,6 +234,7 @@ "EnableNextVideoInfoOverlayHelp": "At the end of a video, display info about the next video coming up in the current playlist.", "EnablePhotos": "Display photos", "EnablePhotosHelp": "Images will be detected and displayed alongside other media files.", + "EnableQuickConnect": "Enable quick connect on this server", "EnableStreamLooping": "Auto-loop live streams", "EnableStreamLoopingHelp": "Enable this if live streams only contain a few seconds of data and need to be continuously requested. Enabling this when not needed may cause problems.", "EnableThemeSongs": "Theme songs", @@ -587,6 +591,7 @@ "LabelCountry": "Country:", "LabelCriticRating": "Critic rating:", "LabelCurrentPassword": "Current password:", + "LabelCurrentStatus": "Current status:", "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:", @@ -1260,6 +1265,11 @@ "Programs": "Programs", "Quality": "Quality", "QueueAllFromHere": "Queue all from here", + "QuickConnect": "Quick Connect", + "QuickConnectActivationSuccessful": "Successfully activated", + "QuickConnectAuthorizeCode": "Authorize request {0} to continue", + "QuickConnectNoPending": "No pending login requests", + "QuickConnectNotAvailable": "Quick connect is not available on this server", "Raised": "Raised", "Rate": "Rate", "RecentlyWatched": "Recently watched", From a6d37e763319c1e65f1a7358a1b8ac0895b6492c Mon Sep 17 00:00:00 2001 From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com> Date: Sun, 26 Apr 2020 17:47:31 -0500 Subject: [PATCH 008/582] Change missed var declarations into let --- .../quickconnectsettings/quickconnectsettings.js | 8 ++++---- src/controllers/auth/login.js | 14 +++++++------- src/controllers/quickconnect.js | 10 +++++----- src/controllers/user/quickconnect.js | 2 +- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/components/quickconnectsettings/quickconnectsettings.js b/src/components/quickconnectsettings/quickconnectsettings.js index 6010fab5c3..45bfe815cc 100644 --- a/src/components/quickconnectsettings/quickconnectsettings.js +++ b/src/components/quickconnectsettings/quickconnectsettings.js @@ -23,16 +23,16 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa QuickConnectSettings.prototype.list = function(argPage) { ApiClient.getJSON("/QuickConnect/List").then(json => { let found = false; - var elem = argPage.querySelector('#quickConnectIncoming'); + let elem = argPage.querySelector('#quickConnectIncoming'); elem.innerText = globalize.translate('QuickConnectNoPending'); - for (var i = 0; i < json.length; i++) { + for (let i = 0; i < json.length; i++) { if (!found) { elem.innerHTML = ""; found = true; } - var current = json[i]; + let current = json[i]; let html = '
    '; html += '
    ' + current.Code + '
    '; @@ -57,7 +57,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa }; QuickConnectSettings.prototype.activate = function() { - var url = ApiClient.getUrl("/QuickConnect/Activate"); + let url = ApiClient.getUrl("/QuickConnect/Activate"); ApiClient.ajax({ type: "POST", url: url, diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js index 86e8874e7e..8b0bcdd28d 100644 --- a/src/controllers/auth/login.js +++ b/src/controllers/auth/login.js @@ -151,10 +151,10 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout } function loginQuickConnect() { - var apiClient = getApiClient(); - var friendlyName = navigator.userAgent; + let apiClient = getApiClient(); + let friendlyName = navigator.userAgent; - var url = apiClient.getUrl("/QuickConnect/Initiate?FriendlyName=" + friendlyName); + let url = apiClient.getUrl("/QuickConnect/Initiate?FriendlyName=" + friendlyName); apiClient.getJSON(url) .then(json => { if (!json.Secret || !json.Code) { @@ -173,15 +173,15 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout loading.show(); - var interval = setInterval(async function() { + let interval = setInterval(async function() { try { let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret); let data = await apiClient.getJSON(connectUrl); if (data.Authenticated) { let result = await apiClient.quickConnect(data.Authentication); - var user = result.User; - var serverId = getParameterByName("serverid"); - var newUrl = "home.html"; + let user = result.User; + let serverId = getParameterByName("serverid"); + let newUrl = "home.html"; if (user.Policy.IsAdministrator && !serverId) { newUrl = "dashboard.html"; diff --git a/src/controllers/quickconnect.js b/src/controllers/quickconnect.js index 3432e79231..93b74a1b52 100644 --- a/src/controllers/quickconnect.js +++ b/src/controllers/quickconnect.js @@ -1,9 +1,9 @@ define(["jQuery", "loading", "fnchecked"], function ($, loading) { "use strict"; - var page; + let page; function loadPage(status) { - var available = status === "Available" || status === "Active"; + let available = status === "Available" || status === "Active"; page.querySelector("#quickConnectStatus").textContent = status.toLocaleLowerCase(); page.querySelector("#chkQuickConnectAvailable").checked = available; @@ -14,9 +14,9 @@ define(["jQuery", "loading", "fnchecked"], function ($, loading) { function onSubmit() { loading.show(); - var newStatus = page.querySelector("#chkQuickConnectAvailable").checked ? "Available" : "Unavailable"; + let newStatus = page.querySelector("#chkQuickConnectAvailable").checked ? "Available" : "Unavailable"; - var url = ApiClient.getUrl("/QuickConnect/Available"); + let url = ApiClient.getUrl("/QuickConnect/Available"); ApiClient.ajax({ type: "POST", @@ -41,7 +41,7 @@ define(["jQuery", "loading", "fnchecked"], function ($, loading) { } function updatePage() { - var promise1 = ApiClient.getQuickConnect("Status"); + let promise1 = ApiClient.getQuickConnect("Status"); Promise.all([promise1]).then((responses) => { loadPage(responses[0]); return true; diff --git a/src/controllers/user/quickconnect.js b/src/controllers/user/quickconnect.js index 035aef8f2f..bee0c1b817 100644 --- a/src/controllers/user/quickconnect.js +++ b/src/controllers/user/quickconnect.js @@ -2,7 +2,7 @@ define(["quickConnectSettings", "dom", "globalize", "loading", "userSettings", " "use strict"; return function (view) { - var quickConnectSettingsInstance = null; + let quickConnectSettingsInstance = null; view.addEventListener("viewshow", function () { quickConnectSettingsInstance = new QuickConnectSettings({ From 8655de4469c3aade0e1f949169c8f536a43e210b Mon Sep 17 00:00:00 2001 From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com> Date: Fri, 1 May 2020 13:49:06 -0500 Subject: [PATCH 009/582] Rename to camel case --- .../quickConnectSettings.js} | 0 src/controllers/{quickconnect.js => quickConnect.js} | 0 src/controllers/user/{quickconnect.js => quickConnect.js} | 0 ...referencesquickconnect.html => myPreferencesQuickConnect.html} | 0 src/{quickconnect.html => quickConnect.html} | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename src/components/{quickconnectsettings/quickconnectsettings.js => quickConnectSettings/quickConnectSettings.js} (100%) rename src/controllers/{quickconnect.js => quickConnect.js} (100%) rename src/controllers/user/{quickconnect.js => quickConnect.js} (100%) rename src/{mypreferencesquickconnect.html => myPreferencesQuickConnect.html} (100%) rename src/{quickconnect.html => quickConnect.html} (100%) diff --git a/src/components/quickconnectsettings/quickconnectsettings.js b/src/components/quickConnectSettings/quickConnectSettings.js similarity index 100% rename from src/components/quickconnectsettings/quickconnectsettings.js rename to src/components/quickConnectSettings/quickConnectSettings.js diff --git a/src/controllers/quickconnect.js b/src/controllers/quickConnect.js similarity index 100% rename from src/controllers/quickconnect.js rename to src/controllers/quickConnect.js diff --git a/src/controllers/user/quickconnect.js b/src/controllers/user/quickConnect.js similarity index 100% rename from src/controllers/user/quickconnect.js rename to src/controllers/user/quickConnect.js diff --git a/src/mypreferencesquickconnect.html b/src/myPreferencesQuickConnect.html similarity index 100% rename from src/mypreferencesquickconnect.html rename to src/myPreferencesQuickConnect.html diff --git a/src/quickconnect.html b/src/quickConnect.html similarity index 100% rename from src/quickconnect.html rename to src/quickConnect.html From d8cfe064e60379033fdf61a963efbc27296130af Mon Sep 17 00:00:00 2001 From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com> Date: Fri, 1 May 2020 14:18:04 -0500 Subject: [PATCH 010/582] Changed code to camel case --- src/controllers/user/menu.js | 2 +- src/scripts/librarymenu.js | 2 +- src/scripts/routes.js | 8 ++++---- src/scripts/site.js | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js index f5d05c5be3..9482b26cb5 100644 --- a/src/controllers/user/menu.js +++ b/src/controllers/user/menu.js @@ -24,7 +24,7 @@ define(["apphost", "connectionManager", "layoutManager", "listViewStyle", "emby- page.querySelector(".lnkHomePreferences").setAttribute("href", "mypreferenceshome.html?userId=" + userId); page.querySelector(".lnkPlaybackPreferences").setAttribute("href", "mypreferencesplayback.html?userId=" + userId); page.querySelector(".lnkSubtitlePreferences").setAttribute("href", "mypreferencessubtitles.html?userId=" + userId); - page.querySelector(".lnkQuickConnectPreferences").setAttribute("href", "mypreferencesquickconnect.html?userId=" + userId); + page.querySelector(".lnkQuickConnectPreferences").setAttribute("href", "myPreferencesQuickConnect.html?userId=" + userId); if (window.NativeShell && window.NativeShell.AppHost.supports("clientsettings")) { page.querySelector(".clientSettings").classList.remove("hide"); diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index e3ef65f22f..d123395ca0 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -352,7 +352,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " }); links.push({ name: globalize.translate("QuickConnect"), - href: "quickconnect.html", + href: "quickConnect.html", pageIds: ["quickConnectPage", "quickConnectPage"], icon: "tap_and_play" }); diff --git a/src/scripts/routes.js b/src/scripts/routes.js index 1520e96632..f0806f56e0 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -73,10 +73,10 @@ define([ controller: "user/subtitles" }); defineRoute({ - path: "/mypreferencesquickconnect.html", + path: "/myPreferencesQuickConnect.html", autoFocus: false, transition: "fade", - controller: "user/quickconnect" + controller: "user/quickConnect" }); defineRoute({ @@ -110,10 +110,10 @@ define([ controller: "device" }); defineRoute({ - path: "/quickconnect.html", + path: "/quickConnect.html", autoFocus: false, roles: "admin", - controller: "quickconnect" + controller: "quickConnect" }); defineRoute({ path: "/dlnaprofile.html", diff --git a/src/scripts/site.js b/src/scripts/site.js index 3b8abf2bfe..ca8a828b0b 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -829,7 +829,7 @@ var AppInfo = {}; define("displaySettings", [componentsPath + "/displaysettings/displaysettings"], returnFirstDependency); define("playbackSettings", [componentsPath + "/playbacksettings/playbacksettings"], returnFirstDependency); define("homescreenSettings", [componentsPath + "/homescreensettings/homescreensettings"], returnFirstDependency); - define("quickConnectSettings", [componentsPath + "/quickconnectsettings/quickconnectsettings"], returnFirstDependency); + define("quickConnectSettings", [componentsPath + "/quickConnectSettings/quickConnectSettings"], returnFirstDependency); define("playbackManager", [componentsPath + "/playback/playbackmanager"], getPlaybackManager); define("layoutManager", [componentsPath + "/layoutManager", "apphost"], getLayoutManager); define("homeSections", [componentsPath + "/homesections/homesections"], returnFirstDependency); From 2655b4dca3da200f9dc720f37b4d6e7f32b4d839 Mon Sep 17 00:00:00 2001 From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com> Date: Mon, 4 May 2020 17:23:57 -0500 Subject: [PATCH 011/582] Migrate API changes to apiclient repo --- src/libraries/apiclient/apiclientcore.js | 25 ------------------------ 1 file changed, 25 deletions(-) diff --git a/src/libraries/apiclient/apiclientcore.js b/src/libraries/apiclient/apiclientcore.js index e1892505fc..557a4e1033 100644 --- a/src/libraries/apiclient/apiclientcore.js +++ b/src/libraries/apiclient/apiclientcore.js @@ -356,31 +356,6 @@ define(["events", "appStorage"], function(events, appStorage) { instance.onAuthenticated ? instance.onAuthenticated(instance, result).then(afterOnAuthenticated) : afterOnAuthenticated() }, reject) }) - }, ApiClient.prototype.quickConnect = function (token) { - if (!token) return Promise.reject(); - var url = this.getUrl("Users/AuthenticateWithQuickConnect"); - var instance = this; - return new Promise(function(resolve, reject) { - var postData = { - Token: token - }; - instance.ajax({ - type: "POST", - url: url, - data: JSON.stringify(postData), - dataType: "json", - contentType: "application/json" - }).then(function(result) { - var afterOnAuthenticated = function() { - redetectBitrate(instance); - return resolve(result); - }; - instance.onAuthenticated ? instance.onAuthenticated(instance, result).then(afterOnAuthenticated) : afterOnAuthenticated() - }, reject) - }) - }, ApiClient.prototype.getQuickConnect = function(verb) { - var url = this.getUrl("/QuickConnect/" + verb); - return this.getJSON(url); }, ApiClient.prototype.ensureWebSocket = function() { if (!this.isWebSocketOpenOrConnecting() && this.isWebSocketSupported()) try { this.openWebSocket() From 2ea2132740238f79136e7e398d78a9d25329c9fa Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 29 May 2020 23:32:45 +0200 Subject: [PATCH 012/582] Add barebones comic book reader --- package.json | 2 + src/bundle.js | 6 + src/components/comicsPlayer/plugin.js | 215 +++++++++++++++++++++ src/components/playback/playbackmanager.js | 6 +- src/components/pluginManager.js | 2 +- src/scripts/site.js | 4 +- webpack.common.js | 18 +- yarn.lock | 5 + 8 files changed, 252 insertions(+), 6 deletions(-) create mode 100644 src/components/comicsPlayer/plugin.js diff --git a/package.json b/package.json index 749c62d39c..aefec20d7a 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ "jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto", "jquery": "^3.5.1", "jstree": "^3.3.7", + "libarchive.js": "^1.3.0", "libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-smarttv", "material-design-icons-iconfont": "^5.0.1", "native-promise-only": "^0.8.0-a", @@ -92,6 +93,7 @@ "src/components/autoFocuser.js", "src/components/cardbuilder/cardBuilder.js", "src/scripts/fileDownloader.js", + "src/components/comicsPlayer/plugin.js", "src/components/images/imageLoader.js", "src/components/lazyLoader/lazyLoaderIntersectionObserver.js", "src/components/playback/mediasession.js", diff --git a/src/bundle.js b/src/bundle.js index d7ba6c6a51..fd9099aaf3 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -176,3 +176,9 @@ _define('connectionManagerFactory', function () { _define('appStorage', function () { return apiclient.AppStorage; }); + +// libarchive.js +var libarchive = require('libarchive.js'); +_define('libarchive', function () { + return libarchive; +}); diff --git a/src/components/comicsPlayer/plugin.js b/src/components/comicsPlayer/plugin.js new file mode 100644 index 0000000000..43469bfed4 --- /dev/null +++ b/src/components/comicsPlayer/plugin.js @@ -0,0 +1,215 @@ +import connectionManager from 'connectionManager'; +import loading from 'loading'; +import dialogHelper from 'dialogHelper'; +import keyboardnavigation from 'keyboardnavigation'; +import appRouter from 'appRouter'; +import 'css!../slideshow/style'; +import * as libarchive from 'libarchive'; + +export class ComicsPlayer { + constructor() { + this.name = 'Comics Player'; + this.type = 'mediaplayer'; + this.id = 'comicsplayer'; + this.priority = 1; + this.imageMap = new Map(); + + this.onDialogClosed = this.onDialogClosed.bind(this); + this.onWindowKeyUp = this.onWindowKeyUp.bind(this); + } + + play(options) { + this._progress = 0; + + let elem = this.createMediaElement(); + return this.setCurrentSrc(elem, options); + } + + stop() { + this.unbindEvents(); + + let elem = this._mediaElement; + + if (elem) { + dialogHelper.close(elem); + this._mediaElement = null; + } + + // Hide loader in case player was not fully loaded yet + loading.hide(); + } + + onDialogClosed() { + this.stop(); + } + + onWindowKeyUp(e) { + let key = keyboardnavigation.getKeyName(e); + switch (key) { + case 'Escape': + this.stop(); + break; + } + } + + bindEvents() { + document.addEventListener('keyup', this.onWindowKeyUp); + } + + unbindEvents() { + document.removeEventListener('keyup', this.onWindowKeyUp); + } + + createMediaElement() { + let elem = this._mediaElement; + + if (elem) { + return elem; + } + + elem = document.getElementById('comicsPlayer'); + if (!elem) { + elem = dialogHelper.createDialog({ + exitAnimationDuration: 400, + size: 'fullscreen', + autoFocus: false, + scrollY: false, + exitAnimation: 'fadeout', + removeOnClose: true + }); + elem.id = 'bookPlayer'; + + elem.classList.add('slideshowDialog'); + + elem.innerHTML = '
    '; + + this.bindEvents(); + + dialogHelper.open(elem); + } + + this._mediaElement = elem; + + return elem; + } + + setCurrentSrc(elem, options) { + let item = options.items[0]; + this._currentItem = item; + + loading.show(); + + let serverId = item.ServerId; + let apiClient = connectionManager.getApiClient(serverId); + + libarchive.Archive.init({ + workerUrl: appRouter.baseUrl() + '/libraries/worker-bundle.js' + }); + + return new Promise((resolve, reject) => { + let downloadUrl = apiClient.getItemDownloadUrl(item.Id); + const archiveSource = new ArchiveSource(downloadUrl); + var instance = this; + import('swiper').then(({default: Swiper}) => { + archiveSource.load().then(() => { + loading.hide(); + this.swiperInstance = new Swiper(elem.querySelector('.slideshowSwiperContainer'), { + direction: 'horizontal', + // Loop is disabled due to the virtual slides option not supporting it. + loop: false, + zoom: { + minRatio: 1, + toggle: true, + containerClass: 'slider-zoom-container' + }, + autoplay: false, + keyboard: { + enabled: true + }, + preloadImages: true, + slidesPerView: 1, + slidesPerColumn: 1, + initialSlide: 0, + // Virtual slides reduce memory consumption for large libraries while allowing preloading of images; + virtual: { + slides: archiveSource.urls, + cache: true, + renderSlide: instance.getImgFromUrl, + addSlidesBefore: 1, + addSlidesAfter: 1 + } + }); + }); + }); + }); + } + + getImgFromUrl(url) { + return `
    +
    + +
    +
    `; + } + + canPlayMediaType(mediaType) { + return (mediaType || '').toLowerCase() === 'book'; + } + + canPlayItem(item) { + if (item.Path && (item.Path.endsWith('cbz') || item.Path.endsWith('cbr'))) { + return true; + } + return false; + } +} + +class ArchiveSource { + constructor(url) { + this.url = url; + this.files = []; + this.urls = []; + this.loadPromise = this.load(); + this.itemsLoaded = 0; + } + + async load() { + let res = await fetch(this.url); + if (!res.ok) { + return; + } + let blob = await res.blob(); + this.archive = await libarchive.Archive.open(blob); + this.raw = await this.archive.getFilesArray(); + this.numberOfFiles = this.raw.length; + await this.archive.extractFiles(); + + let files = await this.archive.getFilesArray(); + files.sort((a, b) => { + if (a.file.name < b.file.name) + return -1; + else + return 1; + }); + + for (let file of files) { + let url = URL.createObjectURL(file.file); + this.urls.push(url); + } + } + + getLength() { + return this.raw.length; + } + + async item(index) { + if (this.urls[index]) { + return this.urls[index]; + } + + await this.loadPromise; + return this.urls[index]; + } +} + +export default ComicsPlayer; diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 59108cf72e..053088ef2f 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -2187,7 +2187,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla // Only used internally self.getCurrentTicks = getCurrentTicks; - function playPhotos(items, options, user) { + function playOther(items, options, user) { var playStartIndex = options.startIndex || 0; var player = getPlayer(items[playStartIndex], options); @@ -2216,9 +2216,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return Promise.reject(); } - if (firstItem.MediaType === 'Photo') { + if (firstItem.MediaType === 'Photo' || firstItem.MediaType === 'Book') { - return playPhotos(items, options, user); + return playOther(items, options, user); } var apiClient = connectionManager.getApiClient(firstItem.ServerId); diff --git a/src/components/pluginManager.js b/src/components/pluginManager.js index 6cb56d767b..fd35d344bf 100644 --- a/src/components/pluginManager.js +++ b/src/components/pluginManager.js @@ -58,7 +58,7 @@ define(['events', 'globalize'], function (events, globalize) { return new Promise(function (resolve, reject) { require([pluginSpec], (pluginFactory) => { - var plugin = new pluginFactory(); + var plugin = pluginFactory.default ? new pluginFactory.default() : new pluginFactory(); // See if it's already installed var existing = instance.pluginsList.filter(function (p) { diff --git a/src/scripts/site.js b/src/scripts/site.js index aeb651d888..2e83928f97 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -490,6 +490,7 @@ var AppInfo = {}; 'components/playback/experimentalwarnings', 'components/htmlAudioPlayer/plugin', 'components/htmlVideoPlayer/plugin', + 'components/comicsPlayer/plugin', 'components/photoPlayer/plugin', 'components/youtubeplayer/plugin', 'components/backdropScreensaver/plugin', @@ -701,7 +702,8 @@ var AppInfo = {}; 'events', 'credentialprovider', 'connectionManagerFactory', - 'appStorage' + 'appStorage', + 'comicReader' ] }, urlArgs: urlArgs, diff --git a/webpack.common.js b/webpack.common.js index 03beb63a73..2cc8478d86 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -1,10 +1,12 @@ const path = require('path'); const CopyPlugin = require('copy-webpack-plugin'); +const WorkerPlugin = require('worker-plugin'); const Assets = [ 'alameda/alameda.js', 'native-promise-only/npo.js', + 'libarchive.js/dist/worker-bundle.js', 'libass-wasm/dist/js/subtitles-octopus-worker.js', 'libass-wasm/dist/js/subtitles-octopus-worker.data', 'libass-wasm/dist/js/subtitles-octopus-worker.wasm', @@ -13,6 +15,11 @@ const Assets = [ 'libass-wasm/dist/js/subtitles-octopus-worker-legacy.js.mem' ]; +const LibarchiveWasm = [ + 'libarchive.js/dist/wasm-gen/libarchive.js', + 'libarchive.js/dist/wasm-gen/libarchive.wasm' +]; + module.exports = { context: path.resolve(__dirname, 'src'), entry: './bundle.js', @@ -34,6 +41,15 @@ module.exports = { to: path.resolve(__dirname, './dist/libraries') }; }) - ) + ), + new CopyPlugin( + LibarchiveWasm.map(asset => { + return { + from: path.resolve(__dirname, `./node_modules/${asset}`), + to: path.resolve(__dirname, './dist/libraries/wasm-gen/') + }; + }) + ), + new WorkerPlugin() ] }; diff --git a/yarn.lock b/yarn.lock index 20fdef5de1..5b8df85f45 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6783,6 +6783,11 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libarchive.js@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/libarchive.js/-/libarchive.js-1.3.0.tgz#18c42c6b4ce727a02359c90769e4e454cf3743cd" + integrity sha512-EkQfRXt9DhWwj6BnEA2TNpOf4jTnzSTUPGgE+iFxcdNqjktY8GitbDeHnx8qZA0/IukNyyBUR3oQKRdYkO+HFg== + "libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-smarttv": version "4.0.0" resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#58e9a3f1a7f7883556ee002545f445a430120639" From 985396af14ce0fc37a1f418561f60c92fbf40664 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 30 Jun 2020 00:47:34 +0300 Subject: [PATCH 013/582] Move tvlatest tab to suggestions section --- src/controllers/shows/tvlatest.js | 64 ------ src/controllers/shows/tvrecommended.js | 276 +++++++++++++++---------- src/tv.html | 28 ++- 3 files changed, 176 insertions(+), 192 deletions(-) delete mode 100644 src/controllers/shows/tvlatest.js diff --git a/src/controllers/shows/tvlatest.js b/src/controllers/shows/tvlatest.js deleted file mode 100644 index 08e420a595..0000000000 --- a/src/controllers/shows/tvlatest.js +++ /dev/null @@ -1,64 +0,0 @@ -define(['loading', 'components/groupedcards', 'cardBuilder', 'apphost', 'imageLoader'], function (loading, groupedcards, cardBuilder, appHost, imageLoader) { - 'use strict'; - - function getLatestPromise(context, params) { - loading.show(); - var userId = ApiClient.getCurrentUserId(); - var parentId = params.topParentId; - var options = { - IncludeItemTypes: 'Episode', - Limit: 30, - Fields: 'PrimaryImageAspectRatio,BasicSyncInfo', - ParentId: parentId, - ImageTypeLimit: 1, - EnableImageTypes: 'Primary,Backdrop,Thumb' - }; - return ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)); - } - - function loadLatest(context, params, promise) { - promise.then(function (items) { - var html = ''; - appHost.supports('imageanalysis'); - html += cardBuilder.getCardsHtml({ - items: items, - shape: 'backdrop', - preferThumb: true, - showTitle: true, - showSeriesYear: true, - showParentTitle: true, - overlayText: false, - cardLayout: false, - showUnplayedIndicator: false, - showChildCountIndicator: true, - centerText: true, - lazy: true, - overlayPlayButton: true, - lines: 2 - }); - var elem = context.querySelector('#latestEpisodes'); - elem.innerHTML = html; - imageLoader.lazyChildren(elem); - loading.hide(); - - require(['autoFocuser'], function (autoFocuser) { - autoFocuser.autoFocus(context); - }); - }); - } - - return function (view, params, tabContent) { - var self = this; - var latestPromise; - - self.preRender = function () { - latestPromise = getLatestPromise(view, params); - }; - - self.renderTab = function () { - loadLatest(tabContent, params, latestPromise); - }; - - tabContent.querySelector('#latestEpisodes').addEventListener('click', groupedcards.onItemsContainerClick); - }; -}); diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js index 8087a03096..fc165cf1e5 100644 --- a/src/controllers/shows/tvrecommended.js +++ b/src/controllers/shows/tvrecommended.js @@ -6,8 +6,6 @@ define(['events', 'inputManager', 'libraryMenu', 'layoutManager', 'loading', 'do name: globalize.translate('TabShows') }, { name: globalize.translate('TabSuggestions') - }, { - name: globalize.translate('TabLatest') }, { name: globalize.translate('TabUpcoming') }, { @@ -27,14 +25,11 @@ define(['events', 'inputManager', 'libraryMenu', 'layoutManager', 'loading', 'do case 'suggestions': return 1; - case 'latest': - return 2; - case 'favorites': return 1; case 'genres': - return 4; + return 3; default: return 0; @@ -59,101 +54,159 @@ define(['events', 'inputManager', 'libraryMenu', 'layoutManager', 'loading', 'do } } + function initSuggestedTab(page, tabContent) { + var containers = tabContent.querySelectorAll('.itemsContainer'); + + for (var i = 0, length = containers.length; i < length; i++) { + setScrollClasses(containers[i], enableScrollX()); + } + } + + function loadSuggestionsTab(view, params, tabContent) { + var parentId = params.topParentId; + var userId = ApiClient.getCurrentUserId(); + console.debug('loadSuggestionsTab'); + loadResume(tabContent, userId, parentId); + loadLatest(tabContent, userId, parentId); + loadNextUp(tabContent, userId, parentId); + } + + function loadResume(view, userId, parentId) { + var screenWidth = dom.getWindowSize().innerWidth; + var options = { + SortBy: 'DatePlayed', + SortOrder: 'Descending', + IncludeItemTypes: 'Episode', + Filters: 'IsResumable', + Limit: screenWidth >= 1920 ? 5 : screenWidth >= 1600 ? 5 : 3, + Recursive: true, + Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo', + CollapseBoxSetItems: false, + ParentId: parentId, + ImageTypeLimit: 1, + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', + EnableTotalRecordCount: false + }; + ApiClient.getItems(userId, options).then(function (result) { + if (result.Items.length) { + view.querySelector('#resumableSection').classList.remove('hide'); + } else { + view.querySelector('#resumableSection').classList.add('hide'); + } + + var allowBottomPadding = !enableScrollX(); + var container = view.querySelector('#resumableItems'); + cardBuilder.buildCards(result.Items, { + itemsContainer: container, + preferThumb: true, + shape: getThumbShape(), + scalable: true, + overlayPlayButton: true, + allowBottomPadding: allowBottomPadding, + cardLayout: false, + showTitle: true, + showYear: true, + centerText: true + }); + loading.hide(); + + require(['autoFocuser'], function (autoFocuser) { + autoFocuser.autoFocus(view); + }); + }); + } + + function loadLatest(view, userId, parentId) { + var options = { + userId: userId, + IncludeItemTypes: 'Episode', + Limit: 30, + Fields: 'PrimaryImageAspectRatio,BasicSyncInfo', + ParentId: parentId, + ImageTypeLimit: 1, + EnableImageTypes: 'Primary,Backdrop,Thumb' + }; + ApiClient.getLatestItems(options).then(function (items) { + var section = view.querySelector('#latestItemsSection'); + var allowBottomPadding = !enableScrollX(); + var container = section.querySelector('#latestEpisodesItems'); + cardBuilder.buildCards(items, { + parentContainer: section, + itemsContainer: container, + items: items, + shape: 'backdrop', + preferThumb: true, + showTitle: true, + showSeriesYear: true, + showParentTitle: true, + overlayText: false, + cardLayout: false, + allowBottomPadding: allowBottomPadding, + showUnplayedIndicator: false, + showChildCountIndicator: true, + centerText: true, + lazy: true, + overlayPlayButton: true, + lines: 2 + }); + loading.hide(); + + require(['autoFocuser'], function (autoFocuser) { + autoFocuser.autoFocus(view); + }); + }); + } + + function loadNextUp(view, userId, parentId) { + var query = { + userId: userId, + Limit: 24, + Fields: 'PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo', + ParentId: parentId, + ImageTypeLimit: 1, + EnableImageTypes: 'Primary,Backdrop,Thumb', + EnableTotalRecordCount: false + }; + query.ParentId = libraryMenu.getTopParentId(); + ApiClient.getNextUpEpisodes(query).then(function (result) { + if (result.Items.length) { + view.querySelector('.noNextUpItems').classList.add('hide'); + } else { + view.querySelector('.noNextUpItems').classList.remove('hide'); + } + + var section = view.querySelector('#nextUpItemsSection'); + var container = section.querySelector('#nextUpItems'); + cardBuilder.buildCards(result.Items, { + parentContainer: section, + itemsContainer: container, + preferThumb: true, + shape: 'backdrop', + scalable: true, + showTitle: true, + showParentTitle: true, + overlayText: false, + centerText: true, + overlayPlayButton: true, + cardLayout: false + }); + loading.hide(); + + require(['autoFocuser'], function (autoFocuser) { + autoFocuser.autoFocus(view); + }); + }); + } + + function enableScrollX() { + return !layoutManager.desktop; + } + + function getThumbShape() { + return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; + } + return function (view, params) { - function reload() { - loading.show(); - loadResume(); - loadNextUp(); - } - - function loadNextUp() { - var query = { - Limit: 24, - Fields: 'PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo', - UserId: ApiClient.getCurrentUserId(), - ImageTypeLimit: 1, - EnableImageTypes: 'Primary,Backdrop,Thumb', - EnableTotalRecordCount: false - }; - query.ParentId = libraryMenu.getTopParentId(); - ApiClient.getNextUpEpisodes(query).then(function (result) { - if (result.Items.length) { - view.querySelector('.noNextUpItems').classList.add('hide'); - } else { - view.querySelector('.noNextUpItems').classList.remove('hide'); - } - - var container = view.querySelector('#nextUpItems'); - cardBuilder.buildCards(result.Items, { - itemsContainer: container, - preferThumb: true, - shape: 'backdrop', - scalable: true, - showTitle: true, - showParentTitle: true, - overlayText: false, - centerText: true, - overlayPlayButton: true, - cardLayout: false - }); - loading.hide(); - - require(['autoFocuser'], function (autoFocuser) { - autoFocuser.autoFocus(view); - }); - }); - } - - function enableScrollX() { - return !layoutManager.desktop; - } - - function getThumbShape() { - return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; - } - - function loadResume() { - var parentId = libraryMenu.getTopParentId(); - var screenWidth = dom.getWindowSize().innerWidth; - var limit = screenWidth >= 1600 ? 5 : 6; - var options = { - SortBy: 'DatePlayed', - SortOrder: 'Descending', - IncludeItemTypes: 'Episode', - Filters: 'IsResumable', - Limit: limit, - Recursive: true, - Fields: 'PrimaryImageAspectRatio,SeriesInfo,UserData,BasicSyncInfo', - ExcludeLocationTypes: 'Virtual', - ParentId: parentId, - ImageTypeLimit: 1, - EnableImageTypes: 'Primary,Backdrop,Thumb', - EnableTotalRecordCount: false - }; - ApiClient.getItems(ApiClient.getCurrentUserId(), options).then(function (result) { - if (result.Items.length) { - view.querySelector('#resumableSection').classList.remove('hide'); - } else { - view.querySelector('#resumableSection').classList.add('hide'); - } - - var allowBottomPadding = !enableScrollX(); - var container = view.querySelector('#resumableItems'); - cardBuilder.buildCards(result.Items, { - itemsContainer: container, - preferThumb: true, - shape: getThumbShape(), - scalable: true, - showTitle: true, - showParentTitle: true, - overlayText: false, - centerText: true, - overlayPlayButton: true, - allowBottomPadding: allowBottomPadding, - cardLayout: false - }); - }); - } function onBeforeTabChange(e) { preLoadTab(view, parseInt(e.detail.selectedTabIndex)); @@ -184,26 +237,22 @@ define(['events', 'inputManager', 'libraryMenu', 'layoutManager', 'loading', 'do break; case 2: - depends.push('controllers/shows/tvlatest'); - break; - - case 3: depends.push('controllers/shows/tvupcoming'); break; - case 4: + case 3: depends.push('controllers/shows/tvgenres'); break; - case 5: + case 4: depends.push('controllers/shows/tvstudios'); break; - case 6: + case 5: depends.push('controllers/shows/episodes'); break; - case 7: + case 6: depends.push('scripts/searchtab'); } @@ -222,7 +271,7 @@ define(['events', 'inputManager', 'libraryMenu', 'layoutManager', 'loading', 'do if (index === 1) { controller = self; - } else if (index === 7) { + } else if (index === 6) { controller = new controllerFactory(view, tabContent, { collectionType: 'tvshows', parentId: params.topParentId @@ -289,19 +338,20 @@ define(['events', 'inputManager', 'libraryMenu', 'layoutManager', 'loading', 'do var self = this; var currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId)); var initialTabIndex = currentTabIndex; + var suggestionsTabIndex = 1; self.initTab = function () { - var tabContent = self.tabContent; - setScrollClasses(tabContent.querySelector('#resumableItems'), enableScrollX()); + var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']"); + initSuggestedTab(view, tabContent); }; self.renderTab = function () { - reload(); + var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']"); + loadSuggestionsTab(view, params, tabContent); }; var tabControllers = []; var renderedTabs = []; - setScrollClasses(view.querySelector('#resumableItems'), enableScrollX()); view.addEventListener('viewshow', function (e) { isViewRestored = e.detail.isRestored; initTabs(); diff --git a/src/tv.html b/src/tv.html index ceb5c51b44..c646ecdb44 100644 --- a/src/tv.html +++ b/src/tv.html @@ -23,8 +23,15 @@
    +
    +
    +

    ${HeaderLatestEpisodes}

    +
    -
    +
    +
    + +

    ${HeaderNextUp}

    @@ -33,16 +40,7 @@
    -
    -
    -
    -

    ${HeaderLatestEpisodes}

    -
    -
    -
    -
    -
    -
    +
    -
    +
    -
    +
    -
    +
    @@ -69,6 +67,6 @@
    -
    +
    From 429c47f414851bf95f24736ce2e08e370c397eac Mon Sep 17 00:00:00 2001 From: nyanmisaka Date: Thu, 25 Jun 2020 16:53:45 +0800 Subject: [PATCH 014/582] add tonemapping settings --- src/components/itemMediaInfo/itemMediaInfo.js | 12 +++++ src/components/playerstats/playerstats.js | 28 ++++++++++ src/controllers/dashboard/encodingsettings.js | 26 +++++++++ src/encodingsettings.html | 53 +++++++++++++++++++ src/strings/en-us.json | 26 ++++++++- src/strings/zh-cn.json | 26 ++++++++- 6 files changed, 169 insertions(+), 2 deletions(-) diff --git a/src/components/itemMediaInfo/itemMediaInfo.js b/src/components/itemMediaInfo/itemMediaInfo.js index 81c84b6a23..ad5f261ec6 100644 --- a/src/components/itemMediaInfo/itemMediaInfo.js +++ b/src/components/itemMediaInfo/itemMediaInfo.js @@ -90,6 +90,18 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', if (stream.BitDepth) { attributes.push(createAttribute(globalize.translate('MediaInfoBitDepth'), stream.BitDepth + ' bit')); } + if (stream.VideoRange) { + attributes.push(createAttribute(globalize.translate('MediaInfoVideoRange'), stream.VideoRange)); + } + if (stream.ColorSpace) { + attributes.push(createAttribute(globalize.translate('MediaInfoColorSpace'), stream.ColorSpace)); + } + if (stream.ColorTransfer) { + attributes.push(createAttribute(globalize.translate('MediaInfoColorTransfer'), stream.ColorTransfer)); + } + if (stream.ColorPrimaries) { + attributes.push(createAttribute(globalize.translate('MediaInfoColorPrimaries'), stream.ColorPrimaries)); + } if (stream.PixelFormat) { attributes.push(createAttribute(globalize.translate('MediaInfoPixelFormat'), stream.PixelFormat)); } diff --git a/src/components/playerstats/playerstats.js b/src/components/playerstats/playerstats.js index a65baf3553..e3fe6452f8 100644 --- a/src/components/playerstats/playerstats.js +++ b/src/components/playerstats/playerstats.js @@ -279,6 +279,34 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'syncPlay }); } + if (videoStream.VideoRange) { + sessionStats.push({ + label: globalize.translate('LabelVideoRange'), + value: videoStream.VideoRange + }); + } + + if (videoStream.ColorSpace) { + sessionStats.push({ + label: globalize.translate('LabelColorSpace'), + value: videoStream.ColorSpace + }); + } + + if (videoStream.ColorTransfer) { + sessionStats.push({ + label: globalize.translate('LabelColorTransfer'), + value: videoStream.ColorTransfer + }); + } + + if (videoStream.ColorPrimaries) { + sessionStats.push({ + label: globalize.translate('LabelColorPrimaries'), + value: videoStream.ColorPrimaries + }); + } + var audioInfos = []; if (audioCodec) { diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js index 0f54f9d70f..d728321284 100644 --- a/src/controllers/dashboard/encodingsettings.js +++ b/src/controllers/dashboard/encodingsettings.js @@ -8,12 +8,20 @@ define(['jQuery', 'loading', 'globalize', 'dom', 'libraryMenu'], function ($, lo page.querySelector('#chkDecodingColorDepth10Hevc').checked = config.EnableDecodingColorDepth10Hevc; page.querySelector('#chkDecodingColorDepth10Vp9').checked = config.EnableDecodingColorDepth10Vp9; page.querySelector('#chkHardwareEncoding').checked = config.EnableHardwareEncoding; + page.querySelector('#chkTonemapping').checked = config.EnableTonemapping; $('#selectVideoDecoder', page).val(config.HardwareAccelerationType); $('#selectThreadCount', page).val(config.EncodingThreadCount); $('#txtDownMixAudioBoost', page).val(config.DownMixAudioBoost); page.querySelector('.txtEncoderPath').value = config.EncoderAppPathDisplay || ''; $('#txtTranscodingTempPath', page).val(systemInfo.TranscodingTempPath || ''); $('#txtVaapiDevice', page).val(config.VaapiDevice || ''); + $('#txtOpenclDevice', page).val(config.OpenclDevice || ''); + $('#selectTonemappingAlgorithm', page).val(config.TonemappingAlgorithm); + $('#selectTonemappingRange', page).val(config.TonemappingRange); + $('#txtTonemappingDesat', page).val(config.TonemappingDesat); + $('#txtTonemappingThreshold', page).val(config.TonemappingThreshold); + $('#txtTonemappingPeak', page).val(config.TonemappingPeak); + $('#txtTonemappingParam', page).val(config.TonemappingParam || ''); page.querySelector('#selectEncoderPreset').value = config.EncoderPreset || ''; page.querySelector('#txtH264Crf').value = config.H264Crf || ''; page.querySelector('#selectDeinterlaceMethod').value = config.DeinterlaceMethod || ''; @@ -59,6 +67,14 @@ define(['jQuery', 'loading', 'globalize', 'dom', 'libraryMenu'], function ($, lo config.EncodingThreadCount = $('#selectThreadCount', form).val(); config.HardwareAccelerationType = $('#selectVideoDecoder', form).val(); config.VaapiDevice = $('#txtVaapiDevice', form).val(); + config.OpenclDevice = $('#txtOpenclDevice', form).val(); + config.EnableTonemapping = form.querySelector('#chkTonemapping').checked; + config.TonemappingAlgorithm = form.querySelector('#selectTonemappingAlgorithm').value; + config.TonemappingRange = form.querySelector('#selectTonemappingRange').value; + config.TonemappingDesat = $('#txtTonemappingDesat', form).val(); + config.TonemappingThreshold = $('#txtTonemappingThreshold', form).val(); + config.TonemappingPeak = $('#txtTonemappingPeak', form).val(); + config.TonemappingParam = $('#txtTonemappingParam', form).val(); config.EncoderPreset = form.querySelector('#selectEncoderPreset').value; config.H264Crf = parseInt(form.querySelector('#txtH264Crf').value || '0'); config.DeinterlaceMethod = form.querySelector('#selectDeinterlaceMethod').value; @@ -141,6 +157,16 @@ define(['jQuery', 'loading', 'globalize', 'dom', 'libraryMenu'], function ($, lo page.querySelector('#txtVaapiDevice').removeAttribute('required'); } + if ('nvenc' == this.value) { + page.querySelector('.fldOpenclDevice').classList.remove('hide'); + page.querySelector('#txtOpenclDevice').setAttribute('required', 'required'); + page.querySelector('.tonemappingOptions').classList.remove('hide'); + } else { + page.querySelector('.fldOpenclDevice').classList.add('hide'); + page.querySelector('#txtOpenclDevice').removeAttribute('required'); + page.querySelector('.tonemappingOptions').classList.add('hide'); + } + if (this.value) { page.querySelector('.hardwareAccelerationOptions').classList.remove('hide'); } else { diff --git a/src/encodingsettings.html b/src/encodingsettings.html index 858375b145..c020df9121 100644 --- a/src/encodingsettings.html +++ b/src/encodingsettings.html @@ -31,6 +31,11 @@
    ${LabelVaapiDeviceHelp}
    +
    + +
    ${LabelOpenclDeviceHelp}
    +
    +

    ${LabelEnableHardwareDecodingFor}

    @@ -89,6 +94,54 @@
    +
    +
    + +
    ${AllowTonemappingHelp}
    +
    +
    + + +
    +
    + +
    ${TonemappingRangeHelp}
    +
    +
    + +
    ${LabelTonemappingDesatHelp}
    +
    +
    + +
    ${LabelTonemappingThresholdHelp}
    +
    +
    + +
    ${LabelTonemappingPeakHelp}
    +
    +
    + +
    ${LabelTonemappingParamHelp}
    +
    +
    +
    +
    + + +
    diff --git a/src/controllers/user/quickConnect/index.js b/src/controllers/user/quickConnect/index.js new file mode 100644 index 0000000000..80543a0b58 --- /dev/null +++ b/src/controllers/user/quickConnect/index.js @@ -0,0 +1,78 @@ +import QuickConnectSettings from 'quickConnectSettings'; +import globalize from 'globalize'; +import toast from 'toast'; + +export default function (view) { + let quickConnectSettingsInstance = null; + + view.addEventListener('viewshow', function () { + let codeElement = view.querySelector('#txtQuickConnectCode'); + + quickConnectSettingsInstance = new QuickConnectSettings({ + page: view, + interval: 0 + }); + + view.querySelector('#btnQuickConnectActivate').addEventListener('click', () => { + quickConnectSettingsInstance.activate(quickConnectSettingsInstance).then(() => { + renderPage(); + }); + }); + + view.querySelector('#btnQuickConnectAuthorize').addEventListener('click', () => { + if (!codeElement.validity.valid) { + toast(globalize.translate('QuickConnectInvalidCode')); + + return; + } + + let code = codeElement.value; + quickConnectSettingsInstance.authorize(code); + }); + + renderPage(); + }); + view.addEventListener('viewbeforehide', function () { + if (quickConnectSettingsInstance) { + quickConnectSettingsInstance.submit(); + } + onDestroy(); + }); + view.addEventListener('viewdestroy', function () { + onDestroy(); + }); + + function onDestroy() { + if (quickConnectSettingsInstance) { + quickConnectSettingsInstance.destroy(); + quickConnectSettingsInstance = null; + } + } + + function renderPage(forceActive = false) { + ApiClient.getQuickConnect('Status').then((status) => { + let btn = view.querySelector('#btnQuickConnectActivate'); + let container = view.querySelector('.quickConnectSettingsContainer'); + + // The activation button should only be visible when quick connect is unavailable (with the text replaced with an error) or when it is available (so it can be activated) + // The authorization container is only usable when quick connect is active, so it should be hidden otherwise + container.style.display = 'none'; + + if (status === 'Unavailable') { + btn.textContent = globalize.translate('QuickConnectNotAvailable'); + btn.disabled = true; + btn.classList.remove('button-submit'); + btn.classList.add('button'); + } else if (status === 'Active' || forceActive) { + container.style.display = ''; + btn.style.display = 'none'; + } + + return true; + }).catch((e) => { + throw e; + }); + } + + renderPage(); +} diff --git a/src/myPreferencesQuickConnect.html b/src/myPreferencesQuickConnect.html deleted file mode 100644 index 4f1f9febab..0000000000 --- a/src/myPreferencesQuickConnect.html +++ /dev/null @@ -1,11 +0,0 @@ -
    - - -
    -
    -
    ${MessagePleaseWait}
    - -
    -
    diff --git a/src/quickConnect.html b/src/quickconnect.html similarity index 89% rename from src/quickConnect.html rename to src/quickconnect.html index dff74eb836..671bb88d77 100644 --- a/src/quickConnect.html +++ b/src/quickconnect.html @@ -1,6 +1,6 @@
    -
    -
    +
    +

    ${QuickConnect}

    @@ -19,6 +19,6 @@ -
    +
    -
    \ No newline at end of file +
    diff --git a/src/scripts/routes.js b/src/scripts/routes.js index 3472d66496..ec623a485c 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -94,10 +94,11 @@ define([ controller: 'user/home/index' }); defineRoute({ - path: '/myPreferencesQuickConnect.html', + alias: '/mypreferencesquickconnect.html', + path: '/controllers/user/quickConnect/index.html', autoFocus: false, transition: 'fade', - controller: 'user/quickConnect' + controller: 'user/quickConnect/index' }); defineRoute({ alias: '/mypreferencesplayback.html', @@ -145,10 +146,10 @@ define([ controller: 'dashboard/devices/device' }); defineRoute({ - path: '/quickConnect.html', + path: '/quickconnect.html', autoFocus: false, roles: 'admin', - controller: "quickConnect" + controller: 'dashboard/quickconnect' }); defineRoute({ path: '/dlnaprofile.html', diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 57a025d8b7..17e4662d2a 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -48,7 +48,7 @@ "AuthProviderHelp": "Select an Authentication Provider to be used to authenticate this user's password.", "Auto": "Auto", "AutoBasedOnLanguageSetting": "Auto (based on language setting)", - "Authorize": "authorize", + "Authorize": "Authorize", "Backdrop": "Backdrop", "Backdrops": "Backdrops", "Banner": "Banner", @@ -816,6 +816,7 @@ "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.", + "LabelQuickConnectCode": "Quick connect code:", "LabelReadHowYouCanContribute": "Learn how you can contribute.", "LabelReasonForTranscoding": "Reason for transcoding:", "LabelRecord": "Record:", @@ -1322,8 +1323,12 @@ "QuickConnect": "Quick Connect", "QuickConnectActivationSuccessful": "Successfully activated", "QuickConnectAuthorizeCode": "Authorize request {0} to continue", - "QuickConnectNoPending": "No pending login requests", - "QuickConnectNotAvailable": "Quick connect is not available on this server", + "QuickConnectAuthorizeSuccess": "Request authorized", + "QuickConnectAuthorizeFail": "Unknown quick connect code", + "QuickConnectDescription": "To sign in with quick connect, select the Quick Connect button on the device you are logging in from and enter the displayed code below.", + "QuickConnectInvalidCode": "Invalid quick connect code", + "QuickConnectNotAvailable": "Ask your server administrator to enable quick connect", + "QuickConnectNotActive": "Quick connect is not active on this server", "Raised": "Raised", "Rate": "Rate", "RecentlyWatched": "Recently watched", From 48899bead2a0c1e53eb518e45f6e41f53496b2c3 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 1 Aug 2020 14:48:48 +0200 Subject: [PATCH 017/582] Update Swiper to 6.1.1 --- package.json | 2 +- src/bundle.js | 4 ++-- yarn.lock | 30 +++++++++++++++--------------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 17d175b7e7..b91d1004f6 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.0.2", "sortablejs": "^1.10.2", - "swiper": "^5.4.5", + "swiper": "^6.1.1", "webcomponents.js": "^0.7.24", "whatwg-fetch": "^3.2.0" }, diff --git a/src/bundle.js b/src/bundle.js index ae2a59f0d5..3c21ed66a6 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -60,8 +60,8 @@ _define('resize-observer-polyfill', function() { }); // swiper -var swiper = require('swiper/js/swiper'); -require('swiper/css/swiper.min.css'); +var swiper = require('swiper/swiper-bundle'); +require('swiper/swiper-bundle.css'); _define('swiper', function() { return swiper; }); diff --git a/yarn.lock b/yarn.lock index 09181bfc78..ef66f04419 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3510,12 +3510,12 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" -dom7@^2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/dom7/-/dom7-2.1.5.tgz#a79411017800b31d8400070cdaebbfc92c1f6377" - integrity sha512-xnhwVgyOh3eD++/XGtH+5qBwYTgCm0aW91GFgPJ3XG+jlsRLyJivnbP0QmUBFhI+Oaz9FV0s7cxgXHezwOEBYA== +dom7@^3.0.0-alpha.7: + version "3.0.0-alpha.7" + resolved "https://registry.yarnpkg.com/dom7/-/dom7-3.0.0-alpha.7.tgz#3b4ba156a83fa37fb3fa34b8ab40a1a41a56feb1" + integrity sha512-3epkQPsKsbk2Dixqqgm2DT/KzhiAPByjDK7emu6owwFLbM5UoiqWKgdsH+6PpMEgoeR6Ex/bW1UbOe0FWZU0zg== dependencies: - ssr-window "^2.0.0" + ssr-window "^3.0.0-alpha.1" domain-browser@^1.1.1: version "1.2.0" @@ -10462,10 +10462,10 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssr-window@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ssr-window/-/ssr-window-2.0.0.tgz#98c301aef99523317f8d69618f0010791096efc4" - integrity sha512-NXzN+/HPObKAx191H3zKlYomE5WrVIkoCB5IaSdvKokxTpjBdWfr0RaP+1Z5KOfDT0ZVz+2tdtiBkhsEQ9p+0A== +ssr-window@^3.0.0-alpha.1, ssr-window@^3.0.0-alpha.4: + version "3.0.0-alpha.4" + resolved "https://registry.yarnpkg.com/ssr-window/-/ssr-window-3.0.0-alpha.4.tgz#0c69a18c4305ecccdd8e11596155ca07b635f345" + integrity sha512-+dBRP/pZ+VyITxTzD0lMDzDwN/BmfUl8xi2e6t5Nz4+FqUphfcBLB1OOUSYCRNFB25rD3c8AJRYpY5rHTbL+kg== ssri@^6.0.1: version "6.0.1" @@ -11038,13 +11038,13 @@ svgo@^1.0.0, svgo@^1.3.2: unquote "~1.1.1" util.promisify "~1.0.0" -swiper@^5.4.5: - version "5.4.5" - resolved "https://registry.yarnpkg.com/swiper/-/swiper-5.4.5.tgz#a350f654bf68426dbb651793824925512d223c0f" - integrity sha512-7QjA0XpdOmiMoClfaZ2lYN6ICHcMm72LXiY+NF4fQLFidigameaofvpjEEiTQuw3xm5eksG5hzkaRsjQX57vtA== +swiper@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/swiper/-/swiper-6.1.1.tgz#1246f28557dd33968dc43e926bc6e9e9a7b3850d" + integrity sha512-w6rmEUnpuSWvzuIDJ+nTi7YQ4+pvr++zUnBO2VxkzOZbzQzcMNKNw1yj0RFEok682IHDPCs3LXSl8zSQ+zDEdw== dependencies: - dom7 "^2.1.5" - ssr-window "^2.0.0" + dom7 "^3.0.0-alpha.7" + ssr-window "^3.0.0-alpha.4" symbol-observable@1.0.1: version "1.0.1" From b5c1cbb5b39b59324666d1d2cdc5cd68d0a463e8 Mon Sep 17 00:00:00 2001 From: Cameron Date: Sun, 2 Aug 2020 12:16:14 +0100 Subject: [PATCH 018/582] Remove ailaising this in music --- src/controllers/itemDetails/index.js | 2 -- src/controllers/music/musicalbums.js | 37 ++++++++++---------- src/controllers/music/musicartists.js | 41 +++++++++++------------ src/controllers/music/musicgenres.js | 23 ++++++------- src/controllers/music/musicplaylists.js | 7 ++-- src/controllers/music/musicrecommended.js | 13 ++++--- 6 files changed, 58 insertions(+), 65 deletions(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index c65ce39d84..df2855d69a 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -29,8 +29,6 @@ import 'emby-select'; /* eslint-disable indent */ - loading = loading.default || loading; - function getPromise(apiClient, params) { const id = params.id; diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index 7d03c91073..55c66aee66 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -69,8 +69,8 @@ import 'emby-itemscontainer'; return savedQueryKey; } - function onViewStyleChange() { - const viewStyle = self.getCurrentViewStyle(); + const onViewStyleChange = () => { + const viewStyle = this.getCurrentViewStyle(); const itemsContainer = tabContent.querySelector('.itemsContainer'); if (viewStyle == 'List') { @@ -84,11 +84,11 @@ import 'emby-itemscontainer'; itemsContainer.innerHTML = ''; } - function reloadItems(page) { + const reloadItems = (page) => { loading.show(); isLoading = true; const query = getQuery(); - ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) { + ApiClient.getItems(ApiClient.getCurrentUserId(), query).then((result) => { function onNextPageClick() { if (isLoading) { return; @@ -124,7 +124,7 @@ import 'emby-itemscontainer'; sortButton: false, filterButton: false }); - const viewStyle = self.getCurrentViewStyle(); + const viewStyle = this.getCurrentViewStyle(); if (viewStyle == 'List') { html = listView.getListViewHtml({ items: result.Items, @@ -184,17 +184,16 @@ import 'emby-itemscontainer'; }); } - function updateFilterControls(tabContent) { + const updateFilterControls = (tabContent) => { const query = getQuery(); - self.alphaPicker.value(query.NameStartsWithOrGreater); + this.alphaPicker.value(query.NameStartsWithOrGreater); } let savedQueryKey; let pageData; - const self = this; let isLoading = false; - self.showFilterMenu = function () { + this.showFilterMenu = function () { import('components/filterdialog/filterdialog').then(({default: filterDialogFactory}) => { const filterDialog = new filterDialogFactory({ query: getQuery(), @@ -209,11 +208,11 @@ import 'emby-itemscontainer'; }); }; - self.getCurrentViewStyle = function () { + this.getCurrentViewStyle = function () { return getPageData().view; }; - function initPage(tabContent) { + const initPage = (tabContent) => { const alphaPickerElement = tabContent.querySelector('.alphaPicker'); const itemsContainer = tabContent.querySelector('.itemsContainer'); @@ -224,7 +223,7 @@ import 'emby-itemscontainer'; query.StartIndex = 0; reloadItems(tabContent); }); - self.alphaPicker = new AlphaPicker({ + this.alphaPicker = new AlphaPicker({ element: alphaPickerElement, valueChangeEvent: 'click' }); @@ -233,10 +232,10 @@ import 'emby-itemscontainer'; alphaPickerElement.classList.add('alphaPicker-fixed-right'); itemsContainer.classList.add('padded-right-withalphapicker'); - tabContent.querySelector('.btnFilter').addEventListener('click', function () { - self.showFilterMenu(); + tabContent.querySelector('.btnFilter').addEventListener('click', () => { + this.showFilterMenu(); }); - tabContent.querySelector('.btnSort').addEventListener('click', function (e) { + tabContent.querySelector('.btnSort').addEventListener('click', (e) => { libraryBrowser.showSortMenu({ items: [{ name: globalize.translate('OptionNameSort'), @@ -269,8 +268,8 @@ import 'emby-itemscontainer'; }); }); const btnSelectView = tabContent.querySelector('.btnSelectView'); - btnSelectView.addEventListener('click', function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); + btnSelectView.addEventListener('click', (e) => { + libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; @@ -287,12 +286,12 @@ import 'emby-itemscontainer'; initPage(tabContent); onViewStyleChange(); - self.renderTab = function () { + this.renderTab = function () { reloadItems(tabContent); updateFilterControls(tabContent); }; - self.destroy = function () {}; + this.destroy = function () {}; } /* eslint-enable indent */ diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index 23e0bbd459..713f66a72a 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -45,16 +45,16 @@ import 'emby-itemscontainer'; return getPageData(context).query; } - function getSavedQueryKey(context) { + const getSavedQueryKey = (context) => { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey(self.mode); + context.savedQueryKey = libraryBrowser.getSavedQueryKey(this.mode); } return context.savedQueryKey; } - function onViewStyleChange() { - const viewStyle = self.getCurrentViewStyle(); + const onViewStyleChange = () => { + const viewStyle = this.getCurrentViewStyle(); const itemsContainer = tabContent.querySelector('.itemsContainer'); if (viewStyle == 'List') { @@ -68,14 +68,14 @@ import 'emby-itemscontainer'; itemsContainer.innerHTML = ''; } - function reloadItems(page) { + const reloadItems = (page) => { loading.show(); isLoading = true; const query = getQuery(page); - const promise = self.mode == 'albumartists' ? + const promise = this.mode == 'albumartists' ? ApiClient.getAlbumArtists(ApiClient.getCurrentUserId(), query) : ApiClient.getArtists(ApiClient.getCurrentUserId(), query); - promise.then(function (result) { + promise.then((result) => { function onNextPageClick() { if (isLoading) { return; @@ -111,7 +111,7 @@ import 'emby-itemscontainer'; sortButton: false, filterButton: false }); - const viewStyle = self.getCurrentViewStyle(); + const viewStyle = this.getCurrentViewStyle(); if (viewStyle == 'List') { html = listView.getListViewHtml({ items: result.Items, @@ -167,20 +167,19 @@ import 'emby-itemscontainer'; }); } - function updateFilterControls(tabContent) { + const updateFilterControls = (tabContent) => { const query = getQuery(tabContent); - self.alphaPicker.value(query.NameStartsWithOrGreater); + this.alphaPicker.value(query.NameStartsWithOrGreater); } - const self = this; const data = {}; let isLoading = false; - self.showFilterMenu = function () { + this.showFilterMenu = function () { import('components/filterdialog/filterdialog').then(({default: filterDialogFactory}) => { const filterDialog = new filterDialogFactory({ query: getQuery(tabContent), - mode: self.mode, + mode: this.mode, serverId: ApiClient.serverId() }); events.on(filterDialog, 'filterchange', function () { @@ -191,11 +190,11 @@ import 'emby-itemscontainer'; }); }; - self.getCurrentViewStyle = function () { + this.getCurrentViewStyle = function () { return getPageData(tabContent).view; }; - function initPage(tabContent) { + const initPage = (tabContent) => { const alphaPickerElement = tabContent.querySelector('.alphaPicker'); const itemsContainer = tabContent.querySelector('.itemsContainer'); @@ -206,7 +205,7 @@ import 'emby-itemscontainer'; query.StartIndex = 0; reloadItems(tabContent); }); - self.alphaPicker = new AlphaPicker({ + this.alphaPicker = new AlphaPicker({ element: alphaPickerElement, valueChangeEvent: 'click' }); @@ -215,12 +214,12 @@ import 'emby-itemscontainer'; alphaPickerElement.classList.add('alphaPicker-fixed-right'); itemsContainer.classList.add('padded-right-withalphapicker'); - tabContent.querySelector('.btnFilter').addEventListener('click', function () { - self.showFilterMenu(); + tabContent.querySelector('.btnFilter').addEventListener('click', () => { + this.showFilterMenu(); }); const btnSelectView = tabContent.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); + libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; @@ -235,12 +234,12 @@ import 'emby-itemscontainer'; initPage(tabContent); onViewStyleChange(); - self.renderTab = function () { + this.renderTab = function () { reloadItems(tabContent); updateFilterControls(tabContent); }; - self.destroy = function () {}; + this.destroy = function () {}; } /* eslint-enable indent */ diff --git a/src/controllers/music/musicgenres.js b/src/controllers/music/musicgenres.js index 29e0d888e4..b018a270fb 100644 --- a/src/controllers/music/musicgenres.js +++ b/src/controllers/music/musicgenres.js @@ -42,11 +42,11 @@ import loading from 'loading'; return ApiClient.getGenres(ApiClient.getCurrentUserId(), query); } - function reloadItems(context, promise) { + const reloadItems = (context, promise) => { const query = getQuery(); - promise.then(function (result) { + promise.then((result) => { let html = ''; - const viewStyle = self.getCurrentViewStyle(); + const viewStyle = this.getCurrentViewStyle(); if (viewStyle == 'Thumb') { html = cardBuilder.getCardsHtml({ @@ -99,35 +99,34 @@ import loading from 'loading'; } function fullyReload() { - self.preRender(); - self.renderTab(); + this.preRender(); + this.renderTab(); } - const self = this; const data = {}; - self.getViewStyles = function () { + this.getViewStyles = function () { return 'Poster,PosterCard,Thumb,ThumbCard'.split(','); }; - self.getCurrentViewStyle = function () { + this.getCurrentViewStyle = function () { return getPageData().view; }; - self.setCurrentViewStyle = function (viewStyle) { + this.setCurrentViewStyle = function (viewStyle) { getPageData().view = viewStyle; libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); fullyReload(); }; - self.enableViewSelection = true; + this.enableViewSelection = true; let promise; - self.preRender = function () { + this.preRender = function () { promise = getPromise(); }; - self.renderTab = function () { + this.renderTab = function () { reloadItems(tabContent, promise); }; } diff --git a/src/controllers/music/musicplaylists.js b/src/controllers/music/musicplaylists.js index befeafcf4c..67e6a959eb 100644 --- a/src/controllers/music/musicplaylists.js +++ b/src/controllers/music/musicplaylists.js @@ -69,20 +69,19 @@ import loading from 'loading'; }); } - const self = this; const data = {}; - self.getCurrentViewStyle = function () { + this.getCurrentViewStyle = function () { return getPageData().view; }; let promise; - self.preRender = function () { + this.preRender = function () { promise = getPromise(); }; - self.renderTab = function () { + this.renderTab = function () { reloadItems(tabContent, promise); }; } diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index db7dac9547..df10d828bf 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -267,7 +267,7 @@ import 'flexStyles'; mainTabsManager.setTabs(view, currentTabIndex, getTabs, getTabContainers, onBeforeTabChange, onTabChange); } - function getTabController(page, index, callback) { + const getTabController = (page, index, callback) => { let depends; switch (index) { @@ -306,7 +306,7 @@ import 'flexStyles'; if (index == 0) { tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"); - self.tabContent = tabContent; + this.tabContent = tabContent; } let controller = tabControllers[index]; @@ -315,7 +315,7 @@ import 'flexStyles'; tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"); if (index === 0) { - controller = self; + controller = this; } else if (index === 7) { controller = new controllerFactory(view, tabContent, { collectionType: 'music', @@ -367,10 +367,9 @@ import 'flexStyles'; } } - var self = this; - var currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId)); + let currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId)); - self.initTab = function () { + this.initTab = function () { const tabContent = view.querySelector(".pageTabContent[data-index='0']"); const containers = tabContent.querySelectorAll('.itemsContainer'); @@ -379,7 +378,7 @@ import 'flexStyles'; } }; - self.renderTab = function () { + this.renderTab = function () { reload(); }; From 404bdc12dfc847723199e6df1d186d71fc3c2649 Mon Sep 17 00:00:00 2001 From: Cameron Date: Sun, 2 Aug 2020 19:13:13 +0100 Subject: [PATCH 019/582] lint --- src/components/imageeditor/imageeditor.js | 2 -- src/controllers/livetvsettings.js | 2 -- src/controllers/music/musicalbums.js | 8 ++++---- src/controllers/music/musicartists.js | 10 +++++----- src/controllers/music/musicgenres.js | 2 +- src/controllers/music/musicrecommended.js | 2 +- 6 files changed, 11 insertions(+), 15 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/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(); diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index 55c66aee66..7ea8fa254a 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -82,7 +82,7 @@ import 'emby-itemscontainer'; } itemsContainer.innerHTML = ''; - } + }; const reloadItems = (page) => { loading.show(); @@ -182,12 +182,12 @@ import 'emby-itemscontainer'; autoFocuser.autoFocus(tabContent); }); }); - } + }; const updateFilterControls = (tabContent) => { const query = getQuery(); this.alphaPicker.value(query.NameStartsWithOrGreater); - } + }; let savedQueryKey; let pageData; @@ -281,7 +281,7 @@ import 'emby-itemscontainer'; }); tabContent.querySelector('.btnPlayAll').addEventListener('click', playAll); tabContent.querySelector('.btnShuffle').addEventListener('click', shuffle); - } + }; initPage(tabContent); onViewStyleChange(); diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index 713f66a72a..32e0a22a07 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -51,7 +51,7 @@ import 'emby-itemscontainer'; } return context.savedQueryKey; - } + }; const onViewStyleChange = () => { const viewStyle = this.getCurrentViewStyle(); @@ -66,7 +66,7 @@ import 'emby-itemscontainer'; } itemsContainer.innerHTML = ''; - } + }; const reloadItems = (page) => { loading.show(); @@ -165,12 +165,12 @@ import 'emby-itemscontainer'; autoFocuser.autoFocus(tabContent); }); }); - } + }; const updateFilterControls = (tabContent) => { const query = getQuery(tabContent); this.alphaPicker.value(query.NameStartsWithOrGreater); - } + }; const data = {}; let isLoading = false; @@ -229,7 +229,7 @@ import 'emby-itemscontainer'; onViewStyleChange(); reloadItems(tabContent); }); - } + }; initPage(tabContent); onViewStyleChange(); diff --git a/src/controllers/music/musicgenres.js b/src/controllers/music/musicgenres.js index b018a270fb..2cd9e2114b 100644 --- a/src/controllers/music/musicgenres.js +++ b/src/controllers/music/musicgenres.js @@ -96,7 +96,7 @@ import loading from 'loading'; autoFocuser.autoFocus(context); }); }); - } + }; function fullyReload() { this.preRender(); diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index df10d828bf..53c9440750 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -339,7 +339,7 @@ import 'flexStyles'; callback(controller); }); - } + }; function preLoadTab(page, index) { getTabController(page, index, function (controller) { From 3c482cc9d8922049a32cc0d378ba68642fb76837 Mon Sep 17 00:00:00 2001 From: Supergamer1337 Date: Mon, 3 Aug 2020 13:11:23 +0200 Subject: [PATCH 020/582] Added overlay and play functionality. Co-authored-by: Esaias Tilly --- src/controllers/itemDetails/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index df2855d69a..51a08b579c 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1,5 +1,6 @@ import loading from 'loading'; import appRouter from 'appRouter'; +import itemShortcuts from 'itemShortcuts'; import layoutManager from 'layoutManager'; import connectionManager from 'connectionManager'; import * as userSettings from 'userSettings'; @@ -757,8 +758,8 @@ import 'emby-select'; overlayText: false, transition: false, disableIndicators: true, - disableHoverMenu: true, overlayPlayButton: true, + action: 'play', width: dom.getWindowSize().innerWidth * 0.25 }); @@ -1894,6 +1895,10 @@ import 'emby-select'; playCurrentItem(this, this.getAttribute('data-mode')); } + function onPosterClick(e) { + itemShortcuts.onClick.call(view.querySelector('.detailImageContainer'), e); + } + function onInstantMixClick() { playbackManager.instantMix(currentItem); } @@ -1980,6 +1985,7 @@ import 'emby-select'; bindAll(view, '.btnCancelSeriesTimer', 'click', onCancelSeriesTimerClick); bindAll(view, '.btnCancelTimer', 'click', onCancelTimerClick); bindAll(view, '.btnDownload', 'click', onDownloadClick); + view.querySelector('.detailImageContainer').addEventListener('click', onPosterClick); view.querySelector('.trackSelections').addEventListener('submit', onTrackSelectionsSubmit); view.querySelector('.btnSplitVersions').addEventListener('click', function () { splitVersions(self, view, apiClient, params); From 58361ce70cc92a91e64a587908b34409f7411dd6 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 6 Aug 2020 23:56:29 +0200 Subject: [PATCH 021/582] Remove focus-prevent-scroll, migrate gamepadtokey and chromecastHelper to ES6 --- package.json | 2 + src/bundle.js | 5 + src/legacy/focusPreventScroll.js | 43 -- .../chromecastPlayer/chromecastHelper.js | 400 +++++------ src/plugins/chromecastPlayer/plugin.js | 2 + src/scripts/gamepadtokey.js | 647 +++++++++--------- src/scripts/site.js | 5 +- yarn.lock | 5 + 8 files changed, 540 insertions(+), 569 deletions(-) delete mode 100644 src/legacy/focusPreventScroll.js diff --git a/package.json b/package.json index bf3ac42f97..2631a4ad68 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "epubjs": "^0.3.85", "fast-text-encoding": "^1.0.3", "flv.js": "^1.5.0", + "focus-options-polyfill": "^1.5.0", "headroom.js": "^0.11.0", "hls.js": "^0.14.7", "howler": "^2.2.0", @@ -278,6 +279,7 @@ "src/plugins/backdropScreensaver/plugin.js", "src/plugins/bookPlayer/plugin.js", "src/plugins/bookPlayer/tableOfContents.js", + "src/plugins/chromecastPlayer/chromecastHelper.js", "src/plugins/photoPlayer/plugin.js", "src/plugins/youtubePlayer/plugin.js", "src/scripts/alphanumericshortcuts.js", diff --git a/src/bundle.js b/src/bundle.js index ae2a59f0d5..bebc80a181 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -10,6 +10,11 @@ _define('fetch', function() { return fetch; }); +var focusPreventScroll = require('focus-options-polyfill'); +_define('focus-options-polyfill', function() { + return focusPreventScroll; +}); + // Blurhash var blurhash = require('blurhash'); _define('blurhash', function() { diff --git a/src/legacy/focusPreventScroll.js b/src/legacy/focusPreventScroll.js deleted file mode 100644 index 97d6b0b120..0000000000 --- a/src/legacy/focusPreventScroll.js +++ /dev/null @@ -1,43 +0,0 @@ -// TODO: Move to external library (https://github.com/calvellido/focus-options-polyfill) -// Polyfill to add support for preventScroll by focus function - -if (HTMLElement.prototype.nativeFocus === undefined) { - (function () { - var supportsPreventScrollOption = false; - try { - var focusElem = document.createElement('div'); - - focusElem.addEventListener('focus', function(event) { - event.preventDefault(); - event.stopPropagation(); - }, true); - - var opts = Object.defineProperty({}, 'preventScroll', { - // eslint-disable-next-line getter-return - get: function () { - supportsPreventScrollOption = true; - } - }); - - focusElem.focus(opts); - } catch (e) { - console.error('error checking preventScroll support'); - } - - if (!supportsPreventScrollOption) { - HTMLElement.prototype.nativeFocus = HTMLElement.prototype.focus; - - HTMLElement.prototype.focus = function(options) { - var scrollX = window.scrollX; - var scrollY = window.scrollY; - - this.nativeFocus(); - - // Restore window scroll if preventScroll - if (options && options.preventScroll) { - window.scroll(scrollX, scrollY); - } - }; - } - })(); -} diff --git a/src/plugins/chromecastPlayer/chromecastHelper.js b/src/plugins/chromecastPlayer/chromecastHelper.js index 3fbff5507b..5893a5fe20 100644 --- a/src/plugins/chromecastPlayer/chromecastHelper.js +++ b/src/plugins/chromecastPlayer/chromecastHelper.js @@ -1,229 +1,229 @@ -define(['events'], function (events) { - 'use strict'; +import events from 'events'; - // LinkParser +// LinkParser +// +// https://github.com/ravisorg/LinkParser +// +// Locate and extract almost any URL within a string. Handles protocol-less domains, IPv4 and +// IPv6, unrecognised TLDs, and more. +// +// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. +// http://creativecommons.org/licenses/by-sa/4.0/ +(function () { + // Original URL regex from the Android android.text.util.Linkify function, found here: + // http://stackoverflow.com/a/19696443 // - // https://github.com/ravisorg/LinkParser + // However there were problems with it, most probably related to the fact it was + // written in 2007, and it's been highly modified. // - // Locate and extract almost any URL within a string. Handles protocol-less domains, IPv4 and - // IPv6, unrecognised TLDs, and more. + // 1) I didn't like the fact that it was tied to specific TLDs, since new ones + // are being added all the time it wouldn't be reasonable to expect developer to + // be continually updating their regular expressions. // - // This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. - // http://creativecommons.org/licenses/by-sa/4.0/ - (function () { - // Original URL regex from the Android android.text.util.Linkify function, found here: - // http://stackoverflow.com/a/19696443 - // - // However there were problems with it, most probably related to the fact it was - // written in 2007, and it's been highly modified. - // - // 1) I didn't like the fact that it was tied to specific TLDs, since new ones - // are being added all the time it wouldn't be reasonable to expect developer to - // be continually updating their regular expressions. - // - // 2) It didn't allow unicode characters in the domains which are now allowed in - // many languages, (including some IDN TLDs). Again these are constantly being - // added to and it doesn't seem reasonable to hard-code them. Note this ended up - // not being possible in standard JS due to the way it handles multibyte strings. - // It is possible using XRegExp, however a big performance hit results. Disabled - // for now. - // - // 3) It didn't allow for IPv6 hostnames - // IPv6 regex from http://stackoverflow.com/a/17871737 - // - // 4) It was very poorly commented - // - // 5) It wasn't as smart as it could have been about what should be part of a - // URL and what should be part of human language. + // 2) It didn't allow unicode characters in the domains which are now allowed in + // many languages, (including some IDN TLDs). Again these are constantly being + // added to and it doesn't seem reasonable to hard-code them. Note this ended up + // not being possible in standard JS due to the way it handles multibyte strings. + // It is possible using XRegExp, however a big performance hit results. Disabled + // for now. + // + // 3) It didn't allow for IPv6 hostnames + // IPv6 regex from http://stackoverflow.com/a/17871737 + // + // 4) It was very poorly commented + // + // 5) It wasn't as smart as it could have been about what should be part of a + // URL and what should be part of human language. - var protocols = '(?:(?:http|https|rtsp|ftp):\\/\\/)'; - var credentials = "(?:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,64}" // username (1-64 normal or url escaped characters) - + "(?:\\:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,25})?" // followed by optional password (: + 1-25 normal or url escaped characters) - + '\\@)'; + const protocols = '(?:(?:http|https|rtsp|ftp):\\/\\/)'; + const credentials = "(?:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,64}" // username (1-64 normal or url escaped characters) + + "(?:\\:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,25})?" // followed by optional password (: + 1-25 normal or url escaped characters) + + '\\@)'; - // IPv6 Regex http://forums.intermapper.com/viewtopic.php?t=452 - // by Dartware, LLC is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License - // http://intermapper.com/ - var ipv6 = '(' - + '(([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))' - + '|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))' - + '|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))' - + '|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' - + '|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' - + '|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' - + '|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' - + '|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' - + ')(%.+)?'; + // IPv6 Regex http://forums.intermapper.com/viewtopic.php?t=452 + // by Dartware, LLC is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License + // http://intermapper.com/ + const ipv6 = '(' + + '(([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))' + + '|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))' + + '|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))' + + '|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + '|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + '|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + '|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + '|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + ')(%.+)?'; - var ipv4 = '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.' - + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.' - + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.' - + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])'; + const ipv4 = '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.' + + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.' + + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.' + + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])'; - // This would have been a lot cleaner if JS RegExp supported conditionals... - var linkRegExpString = + // This would have been a lot cleaner if JS RegExp supported conditionals... + const linkRegExpString = - // begin match for protocol / username / password / host - '(?:' + // begin match for protocol / username / password / host + '(?:' - // ============================ - // If we have a recognized protocol at the beginning of the URL, we're - // more relaxed about what we accept, because we assume the user wants - // this to be a URL, and we're not accidentally matching human language - + protocols + '?' + // ============================ + // If we have a recognized protocol at the beginning of the URL, we're + // more relaxed about what we accept, because we assume the user wants + // this to be a URL, and we're not accidentally matching human language + + protocols + '?' - // optional username:password@ - + credentials + '?' + // optional username:password@ + + credentials + '?' - // IP address (both v4 and v6) - + '(?:' + // IP address (both v4 and v6) + + '(?:' - // IPv6 - + ipv6 + // IPv6 + + ipv6 - // IPv4 - + '|' + ipv4 + // IPv4 + + '|' + ipv4 - + ')' + + ')' - // end match for protocol / username / password / host - + ')' + // end match for protocol / username / password / host + + ')' - // optional port number - + '(?:\\:\\d{1,5})?' + // optional port number + + '(?:\\:\\d{1,5})?' - // plus optional path and query params (no unicode allowed here?) - + '(?:' - + '\\/(?:' - // some characters we'll accept because it's unlikely human language - // would use them after a URL unless they were part of the url - + '(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])' - + '|(?:\\%[a-f0-9]{2})' - // some characters are much more likely to be used AFTER a url and - // were not intended to be included in the url itself. Mostly end - // of sentence type things. It's also likely that the URL would - // still work if any of these characters were missing from the end - // because we parsed it incorrectly. For these characters to be accepted - // they must be followed by another character that we're reasonably - // sure is part of the url - + "|(?:[\\;\\?\\:\\.\\!\\'\\(\\)\\,\\=]+(?=(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])|(?:\\%[a-f0-9]{2})))" - + ')*' - + '|\\b|\$' - + ')'; + // plus optional path and query params (no unicode allowed here?) + + '(?:' + + '\\/(?:' + // some characters we'll accept because it's unlikely human language + // would use them after a URL unless they were part of the url + + '(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])' + + '|(?:\\%[a-f0-9]{2})' + // some characters are much more likely to be used AFTER a url and + // were not intended to be included in the url itself. Mostly end + // of sentence type things. It's also likely that the URL would + // still work if any of these characters were missing from the end + // because we parsed it incorrectly. For these characters to be accepted + // they must be followed by another character that we're reasonably + // sure is part of the url + + "|(?:[\\;\\?\\:\\.\\!\\'\\(\\)\\,\\=]+(?=(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])|(?:\\%[a-f0-9]{2})))" + + ')*' + + '|\\b|\$' + + ')'; - // regex = XRegExp(regex,'gi'); - var linkRegExp = RegExp(linkRegExpString, 'gi'); + // regex = XRegExp(regex,'gi'); + const linkRegExp = RegExp(linkRegExpString, 'gi'); - var protocolRegExp = RegExp('^' + protocols, 'i'); + const protocolRegExp = RegExp('^' + protocols, 'i'); - // if url doesn't begin with a known protocol, add http by default - function ensureProtocol(url) { - if (!url.match(protocolRegExp)) { - url = 'http://' + url; - } - return url; + // if url doesn't begin with a known protocol, add http by default + function ensureProtocol(url) { + if (!url.match(protocolRegExp)) { + url = 'http://' + url; } + return url; + } - // look for links in the text - var LinkParser = { - parse: function (text) { - var links = []; - var match; + // look for links in the text + const LinkParser = { + parse: function (text) { + const links = []; + let match; - // eslint-disable-next-line no-cond-assign - while (match = linkRegExp.exec(text)) { - console.debug(match); - var txt = match[0]; - var pos = match.index; - var len = txt.length; - var url = ensureProtocol(text); - links.push({ 'pos': pos, 'text': txt, 'len': len, 'url': url }); - } - - return links; + // eslint-disable-next-line no-cond-assign + while (match = linkRegExp.exec(text)) { + console.debug(match); + const txt = match[0]; + const pos = match.index; + const len = txt.length; + const url = ensureProtocol(text); + links.push({ 'pos': pos, 'text': txt, 'len': len, 'url': url }); } - }; - - window.LinkParser = LinkParser; - })(); - - var cache = {}; - - function isValidIpAddress(address) { - var links = LinkParser.parse(address); - - return links.length == 1; - } - - function isLocalIpAddress(address) { - address = address.toLowerCase(); - - if (address.indexOf('127.0.0.1') !== -1) { - return true; - } - if (address.indexOf('localhost') !== -1) { - return true; + return links; } - return false; - } - - function getServerAddress(apiClient) { - var serverAddress = apiClient.serverAddress(); - - if (isValidIpAddress(serverAddress) && !isLocalIpAddress(serverAddress)) { - return Promise.resolve(serverAddress); - } - - var cachedValue = getCachedValue(serverAddress); - if (cachedValue) { - return Promise.resolve(cachedValue); - } - - return apiClient.getEndpointInfo().then(function (endpoint) { - if (endpoint.IsInNetwork) { - return apiClient.getPublicSystemInfo().then(function (info) { - var localAddress = info.LocalAddress; - if (!localAddress) { - console.debug('No valid local address returned, defaulting to external one'); - localAddress = serverAddress; - } - addToCache(serverAddress, localAddress); - return localAddress; - }); - } else { - addToCache(serverAddress, serverAddress); - return serverAddress; - } - }); - } - - function clearCache() { - cache = {}; - } - - function addToCache(key, value) { - cache[key] = { - value: value, - time: new Date().getTime() - }; - } - - function getCachedValue(key) { - var obj = cache[key]; - - if (obj && (new Date().getTime() - obj.time) < 180000) { - return obj.value; - } - - return null; - } - - events.on(ConnectionManager, 'localusersignedin', clearCache); - events.on(ConnectionManager, 'localusersignedout', clearCache); - - return { - getServerAddress: getServerAddress }; -}); + + window.LinkParser = LinkParser; +})(); + +let cache = {}; + +// TODO: Replace with isIP (https://www.npmjs.com/package/is-ip) +function isValidIpAddress(address) { + const links = LinkParser.parse(address); + + return links.length == 1; +} + +// TODO: Add IPv6 support. Potentially replace with isLocalhost (https://www.npmjs.com/package/is-localhost-ip) +function isLocalIpAddress(address) { + address = address.toLowerCase(); + + if (address.includes('127.0.0.1')) { + return true; + } + if (address.includes('localhost')) { + return true; + } + + return false; +} + +function getServerAddress(apiClient) { + const serverAddress = apiClient.serverAddress(); + + if (isValidIpAddress(serverAddress) && !isLocalIpAddress(serverAddress)) { + return Promise.resolve(serverAddress); + } + + const cachedValue = getCachedValue(serverAddress); + if (cachedValue) { + return Promise.resolve(cachedValue); + } + + return apiClient.getEndpointInfo().then(function (endpoint) { + if (endpoint.IsInNetwork) { + return apiClient.getPublicSystemInfo().then(function (info) { + let localAddress = info.LocalAddress; + if (!localAddress) { + console.debug('No valid local address returned, defaulting to external one'); + localAddress = serverAddress; + } + addToCache(serverAddress, localAddress); + return localAddress; + }); + } else { + addToCache(serverAddress, serverAddress); + return serverAddress; + } + }); +} + +function clearCache() { + cache = {}; +} + +function addToCache(key, value) { + cache[key] = { + value: value, + time: new Date().getTime() + }; +} + +function getCachedValue(key) { + const obj = cache[key]; + + if (obj && (new Date().getTime() - obj.time) < 180000) { + return obj.value; + } + + return null; +} + +events.on(ConnectionManager, 'localusersignedin', clearCache); +events.on(ConnectionManager, 'localusersignedout', clearCache); + +export default { + getServerAddress: getServerAddress +}; diff --git a/src/plugins/chromecastPlayer/plugin.js b/src/plugins/chromecastPlayer/plugin.js index 22b49d6faf..4a4ce25600 100644 --- a/src/plugins/chromecastPlayer/plugin.js +++ b/src/plugins/chromecastPlayer/plugin.js @@ -366,6 +366,8 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' return new Promise(function (resolve, reject) { require(['./chromecastHelper'], function (chromecastHelper) { + chromecastHelper = chromecastHelper.default || chromecastHelper; + chromecastHelper.getServerAddress(apiClient).then(function (serverAddress) { message.serverAddress = serverAddress; player.sendMessageInternal(message).then(resolve, reject); diff --git a/src/scripts/gamepadtokey.js b/src/scripts/gamepadtokey.js index 870429ee09..b6f25f1eea 100644 --- a/src/scripts/gamepadtokey.js +++ b/src/scripts/gamepadtokey.js @@ -19,384 +19,383 @@ // # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // # THE SOFTWARE. -require(['apphost'], function (appHost) { - 'use strict'; - var _GAMEPAD_A_BUTTON_INDEX = 0; - var _GAMEPAD_B_BUTTON_INDEX = 1; - var _GAMEPAD_DPAD_UP_BUTTON_INDEX = 12; - var _GAMEPAD_DPAD_DOWN_BUTTON_INDEX = 13; - var _GAMEPAD_DPAD_LEFT_BUTTON_INDEX = 14; - var _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX = 15; - var _GAMEPAD_A_KEY = 'GamepadA'; - var _GAMEPAD_B_KEY = 'GamepadB'; - var _GAMEPAD_DPAD_UP_KEY = 'GamepadDPadUp'; - var _GAMEPAD_DPAD_DOWN_KEY = 'GamepadDPadDown'; - var _GAMEPAD_DPAD_LEFT_KEY = 'GamepadDPadLeft'; - var _GAMEPAD_DPAD_RIGHT_KEY = 'GamepadDPadRight'; - var _GAMEPAD_LEFT_THUMBSTICK_UP_KEY = 'GamepadLeftThumbStickUp'; - var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY = 'GamepadLeftThumbStickDown'; - var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY = 'GamepadLeftThumbStickLeft'; - var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY = 'GamepadLeftThumbStickRight'; - var _GAMEPAD_A_KEYCODE = 0; - var _GAMEPAD_B_KEYCODE = 27; - var _GAMEPAD_DPAD_UP_KEYCODE = 38; - var _GAMEPAD_DPAD_DOWN_KEYCODE = 40; - var _GAMEPAD_DPAD_LEFT_KEYCODE = 37; - var _GAMEPAD_DPAD_RIGHT_KEYCODE = 39; - var _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE = 38; - var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE = 40; - var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE = 37; - var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE = 39; - var _THUMB_STICK_THRESHOLD = 0.75; +import appHost from 'apphost'; - var _leftThumbstickUpPressed = false; - var _leftThumbstickDownPressed = false; - var _leftThumbstickLeftPressed = false; - var _leftThumbstickRightPressed = false; - var _dPadUpPressed = false; - var _dPadDownPressed = false; - var _dPadLeftPressed = false; - var _dPadRightPressed = false; - var _gamepadAPressed = false; - var _gamepadBPressed = false; +var _GAMEPAD_A_BUTTON_INDEX = 0; +var _GAMEPAD_B_BUTTON_INDEX = 1; +var _GAMEPAD_DPAD_UP_BUTTON_INDEX = 12; +var _GAMEPAD_DPAD_DOWN_BUTTON_INDEX = 13; +var _GAMEPAD_DPAD_LEFT_BUTTON_INDEX = 14; +var _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX = 15; +var _GAMEPAD_A_KEY = 'GamepadA'; +var _GAMEPAD_B_KEY = 'GamepadB'; +var _GAMEPAD_DPAD_UP_KEY = 'GamepadDPadUp'; +var _GAMEPAD_DPAD_DOWN_KEY = 'GamepadDPadDown'; +var _GAMEPAD_DPAD_LEFT_KEY = 'GamepadDPadLeft'; +var _GAMEPAD_DPAD_RIGHT_KEY = 'GamepadDPadRight'; +var _GAMEPAD_LEFT_THUMBSTICK_UP_KEY = 'GamepadLeftThumbStickUp'; +var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY = 'GamepadLeftThumbStickDown'; +var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY = 'GamepadLeftThumbStickLeft'; +var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY = 'GamepadLeftThumbStickRight'; +var _GAMEPAD_A_KEYCODE = 0; +var _GAMEPAD_B_KEYCODE = 27; +var _GAMEPAD_DPAD_UP_KEYCODE = 38; +var _GAMEPAD_DPAD_DOWN_KEYCODE = 40; +var _GAMEPAD_DPAD_LEFT_KEYCODE = 37; +var _GAMEPAD_DPAD_RIGHT_KEYCODE = 39; +var _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE = 38; +var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE = 40; +var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE = 37; +var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE = 39; +var _THUMB_STICK_THRESHOLD = 0.75; - // The set of buttons on the gamepad we listen for. - var ProcessedButtons = [ - _GAMEPAD_DPAD_UP_BUTTON_INDEX, - _GAMEPAD_DPAD_DOWN_BUTTON_INDEX, - _GAMEPAD_DPAD_LEFT_BUTTON_INDEX, - _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX, - _GAMEPAD_A_BUTTON_INDEX, - _GAMEPAD_B_BUTTON_INDEX - ]; +var _leftThumbstickUpPressed = false; +var _leftThumbstickDownPressed = false; +var _leftThumbstickLeftPressed = false; +var _leftThumbstickRightPressed = false; +var _dPadUpPressed = false; +var _dPadDownPressed = false; +var _dPadLeftPressed = false; +var _dPadRightPressed = false; +var _gamepadAPressed = false; +var _gamepadBPressed = false; - var _ButtonPressedState = {}; - _ButtonPressedState.getgamepadA = function () { - return _gamepadAPressed; - }; +// The set of buttons on the gamepad we listen for. +var ProcessedButtons = [ + _GAMEPAD_DPAD_UP_BUTTON_INDEX, + _GAMEPAD_DPAD_DOWN_BUTTON_INDEX, + _GAMEPAD_DPAD_LEFT_BUTTON_INDEX, + _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX, + _GAMEPAD_A_BUTTON_INDEX, + _GAMEPAD_B_BUTTON_INDEX +]; - _ButtonPressedState.setgamepadA = function (newPressedState) { - raiseKeyEvent(_gamepadAPressed, newPressedState, _GAMEPAD_A_KEY, _GAMEPAD_A_KEYCODE, false, true); - _gamepadAPressed = newPressedState; - }; +var _ButtonPressedState = {}; +_ButtonPressedState.getgamepadA = function () { + return _gamepadAPressed; +}; - _ButtonPressedState.getgamepadB = function () { - return _gamepadBPressed; - }; +_ButtonPressedState.setgamepadA = function (newPressedState) { + raiseKeyEvent(_gamepadAPressed, newPressedState, _GAMEPAD_A_KEY, _GAMEPAD_A_KEYCODE, false, true); + _gamepadAPressed = newPressedState; +}; - _ButtonPressedState.setgamepadB = function (newPressedState) { - raiseKeyEvent(_gamepadBPressed, newPressedState, _GAMEPAD_B_KEY, _GAMEPAD_B_KEYCODE); - _gamepadBPressed = newPressedState; - }; +_ButtonPressedState.getgamepadB = function () { + return _gamepadBPressed; +}; - _ButtonPressedState.getleftThumbstickUp = function () { - return _leftThumbstickUpPressed; - }; +_ButtonPressedState.setgamepadB = function (newPressedState) { + raiseKeyEvent(_gamepadBPressed, newPressedState, _GAMEPAD_B_KEY, _GAMEPAD_B_KEYCODE); + _gamepadBPressed = newPressedState; +}; - _ButtonPressedState.setleftThumbstickUp = function (newPressedState) { - raiseKeyEvent(_leftThumbstickUpPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_UP_KEY, _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE, true); - _leftThumbstickUpPressed = newPressedState; - }; +_ButtonPressedState.getleftThumbstickUp = function () { + return _leftThumbstickUpPressed; +}; - _ButtonPressedState.getleftThumbstickDown = function () { - return _leftThumbstickDownPressed; - }; +_ButtonPressedState.setleftThumbstickUp = function (newPressedState) { + raiseKeyEvent(_leftThumbstickUpPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_UP_KEY, _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE, true); + _leftThumbstickUpPressed = newPressedState; +}; - _ButtonPressedState.setleftThumbstickDown = function (newPressedState) { - raiseKeyEvent(_leftThumbstickDownPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY, _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE, true); - _leftThumbstickDownPressed = newPressedState; - }; +_ButtonPressedState.getleftThumbstickDown = function () { + return _leftThumbstickDownPressed; +}; - _ButtonPressedState.getleftThumbstickLeft = function () { - return _leftThumbstickLeftPressed; - }; +_ButtonPressedState.setleftThumbstickDown = function (newPressedState) { + raiseKeyEvent(_leftThumbstickDownPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY, _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE, true); + _leftThumbstickDownPressed = newPressedState; +}; - _ButtonPressedState.setleftThumbstickLeft = function (newPressedState) { - raiseKeyEvent(_leftThumbstickLeftPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY, _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE, true); - _leftThumbstickLeftPressed = newPressedState; - }; +_ButtonPressedState.getleftThumbstickLeft = function () { + return _leftThumbstickLeftPressed; +}; - _ButtonPressedState.getleftThumbstickRight = function () { - return _leftThumbstickRightPressed; - }; +_ButtonPressedState.setleftThumbstickLeft = function (newPressedState) { + raiseKeyEvent(_leftThumbstickLeftPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY, _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE, true); + _leftThumbstickLeftPressed = newPressedState; +}; - _ButtonPressedState.setleftThumbstickRight = function (newPressedState) { - raiseKeyEvent(_leftThumbstickRightPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY, _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE, true); - _leftThumbstickRightPressed = newPressedState; - }; +_ButtonPressedState.getleftThumbstickRight = function () { + return _leftThumbstickRightPressed; +}; - _ButtonPressedState.getdPadUp = function () { - return _dPadUpPressed; - }; +_ButtonPressedState.setleftThumbstickRight = function (newPressedState) { + raiseKeyEvent(_leftThumbstickRightPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY, _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE, true); + _leftThumbstickRightPressed = newPressedState; +}; - _ButtonPressedState.setdPadUp = function (newPressedState) { - raiseKeyEvent(_dPadUpPressed, newPressedState, _GAMEPAD_DPAD_UP_KEY, _GAMEPAD_DPAD_UP_KEYCODE, true); - _dPadUpPressed = newPressedState; - }; +_ButtonPressedState.getdPadUp = function () { + return _dPadUpPressed; +}; - _ButtonPressedState.getdPadDown = function () { - return _dPadDownPressed; - }; +_ButtonPressedState.setdPadUp = function (newPressedState) { + raiseKeyEvent(_dPadUpPressed, newPressedState, _GAMEPAD_DPAD_UP_KEY, _GAMEPAD_DPAD_UP_KEYCODE, true); + _dPadUpPressed = newPressedState; +}; - _ButtonPressedState.setdPadDown = function (newPressedState) { - raiseKeyEvent(_dPadDownPressed, newPressedState, _GAMEPAD_DPAD_DOWN_KEY, _GAMEPAD_DPAD_DOWN_KEYCODE, true); - _dPadDownPressed = newPressedState; - }; +_ButtonPressedState.getdPadDown = function () { + return _dPadDownPressed; +}; - _ButtonPressedState.getdPadLeft = function () { - return _dPadLeftPressed; - }; +_ButtonPressedState.setdPadDown = function (newPressedState) { + raiseKeyEvent(_dPadDownPressed, newPressedState, _GAMEPAD_DPAD_DOWN_KEY, _GAMEPAD_DPAD_DOWN_KEYCODE, true); + _dPadDownPressed = newPressedState; +}; - _ButtonPressedState.setdPadLeft = function (newPressedState) { - raiseKeyEvent(_dPadLeftPressed, newPressedState, _GAMEPAD_DPAD_LEFT_KEY, _GAMEPAD_DPAD_LEFT_KEYCODE, true); - _dPadLeftPressed = newPressedState; - }; +_ButtonPressedState.getdPadLeft = function () { + return _dPadLeftPressed; +}; - _ButtonPressedState.getdPadRight = function () { - return _dPadRightPressed; - }; +_ButtonPressedState.setdPadLeft = function (newPressedState) { + raiseKeyEvent(_dPadLeftPressed, newPressedState, _GAMEPAD_DPAD_LEFT_KEY, _GAMEPAD_DPAD_LEFT_KEYCODE, true); + _dPadLeftPressed = newPressedState; +}; - _ButtonPressedState.setdPadRight = function (newPressedState) { - raiseKeyEvent(_dPadRightPressed, newPressedState, _GAMEPAD_DPAD_RIGHT_KEY, _GAMEPAD_DPAD_RIGHT_KEYCODE, true); - _dPadRightPressed = newPressedState; - }; +_ButtonPressedState.getdPadRight = function () { + return _dPadRightPressed; +}; - var times = {}; +_ButtonPressedState.setdPadRight = function (newPressedState) { + raiseKeyEvent(_dPadRightPressed, newPressedState, _GAMEPAD_DPAD_RIGHT_KEY, _GAMEPAD_DPAD_RIGHT_KEYCODE, true); + _dPadRightPressed = newPressedState; +}; - function throttle(key) { - var time = times[key] || 0; - var now = new Date().getTime(); +var times = {}; - if ((now - time) >= 200) { - //times[key] = now; - return true; - } - - return false; - } - - function resetThrottle(key) { - times[key] = new Date().getTime(); - } - - var isElectron = navigator.userAgent.toLowerCase().indexOf('electron') !== -1; - function allowInput() { - // This would be nice but always seems to return true with electron - if (!isElectron && document.hidden) { /* eslint-disable-line compat/compat */ - return false; - } - - if (appHost.getWindowState() === 'Minimized') { - return false; - } +function throttle(key) { + var time = times[key] || 0; + var now = new Date().getTime(); + if ((now - time) >= 200) { + //times[key] = now; return true; } - function raiseEvent(name, key, keyCode) { - if (!allowInput()) { - return; - } + return false; +} - var event = document.createEvent('Event'); - event.initEvent(name, true, true); - event.key = key; - event.keyCode = keyCode; - (document.activeElement || document.body).dispatchEvent(event); +function resetThrottle(key) { + times[key] = new Date().getTime(); +} + +var isElectron = navigator.userAgent.toLowerCase().indexOf('electron') !== -1; +function allowInput() { + // This would be nice but always seems to return true with electron + if (!isElectron && document.hidden) { /* eslint-disable-line compat/compat */ + return false; } - function clickElement(elem) { - if (!allowInput()) { - return; - } - - elem.click(); + if (appHost.getWindowState() === 'Minimized') { + return false; } - function raiseKeyEvent(oldPressedState, newPressedState, key, keyCode, enableRepeatKeyDown, clickonKeyUp) { - // No-op if oldPressedState === newPressedState - if (newPressedState === true) { - // button down - var fire = false; + return true; +} - // always fire if this is the initial down press - if (oldPressedState === false) { - fire = true; - resetThrottle(key); - } else if (enableRepeatKeyDown) { - fire = throttle(key); - } +function raiseEvent(name, key, keyCode) { + if (!allowInput()) { + return; + } - if (fire && keyCode) { - raiseEvent('keydown', key, keyCode); - } - } else if (newPressedState === false && oldPressedState === true) { + var event = document.createEvent('Event'); + event.initEvent(name, true, true); + event.key = key; + event.keyCode = keyCode; + (document.activeElement || document.body).dispatchEvent(event); +} + +function clickElement(elem) { + if (!allowInput()) { + return; + } + + elem.click(); +} + +function raiseKeyEvent(oldPressedState, newPressedState, key, keyCode, enableRepeatKeyDown, clickonKeyUp) { + // No-op if oldPressedState === newPressedState + if (newPressedState === true) { + // button down + var fire = false; + + // always fire if this is the initial down press + if (oldPressedState === false) { + fire = true; resetThrottle(key); + } else if (enableRepeatKeyDown) { + fire = throttle(key); + } - // button up - if (keyCode) { - raiseEvent('keyup', key, keyCode); - } - if (clickonKeyUp) { - clickElement(document.activeElement || window); - } + if (fire && keyCode) { + raiseEvent('keydown', key, keyCode); + } + } else if (newPressedState === false && oldPressedState === true) { + resetThrottle(key); + + // button up + if (keyCode) { + raiseEvent('keyup', key, keyCode); + } + if (clickonKeyUp) { + clickElement(document.activeElement || window); } } +} - var inputLoopTimer; - function runInputLoop() { - // Get the latest gamepad state. - var gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ - for (var i = 0, len = gamepads.length; i < len; i++) { - var gamepad = gamepads[i]; - if (!gamepad) { - continue; - } - // Iterate through the axes - var axes = gamepad.axes; - var leftStickX = axes[0]; - var leftStickY = axes[1]; - if (leftStickX > _THUMB_STICK_THRESHOLD) { // Right - _ButtonPressedState.setleftThumbstickRight(true); - } else if (leftStickX < -_THUMB_STICK_THRESHOLD) { // Left - _ButtonPressedState.setleftThumbstickLeft(true); - } else if (leftStickY < -_THUMB_STICK_THRESHOLD) { // Up - _ButtonPressedState.setleftThumbstickUp(true); - } else if (leftStickY > _THUMB_STICK_THRESHOLD) { // Down - _ButtonPressedState.setleftThumbstickDown(true); - } else { - _ButtonPressedState.setleftThumbstickLeft(false); - _ButtonPressedState.setleftThumbstickRight(false); - _ButtonPressedState.setleftThumbstickUp(false); - _ButtonPressedState.setleftThumbstickDown(false); - } - // Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed. - var buttons = gamepad.buttons; - for (var j = 0, len = buttons.length; j < len; j++) { - if (ProcessedButtons.indexOf(j) !== -1) { - if (buttons[j].pressed) { - switch (j) { - case _GAMEPAD_DPAD_UP_BUTTON_INDEX: - _ButtonPressedState.setdPadUp(true); - break; - case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: - _ButtonPressedState.setdPadDown(true); - break; - case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: - _ButtonPressedState.setdPadLeft(true); - break; - case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: - _ButtonPressedState.setdPadRight(true); - break; - case _GAMEPAD_A_BUTTON_INDEX: - _ButtonPressedState.setgamepadA(true); - break; - case _GAMEPAD_B_BUTTON_INDEX: - _ButtonPressedState.setgamepadB(true); - break; - default: - // No-op - break; - } - } else { - switch (j) { - case _GAMEPAD_DPAD_UP_BUTTON_INDEX: - if (_ButtonPressedState.getdPadUp()) { - _ButtonPressedState.setdPadUp(false); - } - break; - case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: - if (_ButtonPressedState.getdPadDown()) { - _ButtonPressedState.setdPadDown(false); - } - break; - case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: - if (_ButtonPressedState.getdPadLeft()) { - _ButtonPressedState.setdPadLeft(false); - } - break; - case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: - if (_ButtonPressedState.getdPadRight()) { - _ButtonPressedState.setdPadRight(false); - } - break; - case _GAMEPAD_A_BUTTON_INDEX: - if (_ButtonPressedState.getgamepadA()) { - _ButtonPressedState.setgamepadA(false); - } - break; - case _GAMEPAD_B_BUTTON_INDEX: - if (_ButtonPressedState.getgamepadB()) { - _ButtonPressedState.setgamepadB(false); - } - break; - default: - // No-op - break; - } +var inputLoopTimer; +function runInputLoop() { + // Get the latest gamepad state. + var gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ + for (var i = 0, len = gamepads.length; i < len; i++) { + var gamepad = gamepads[i]; + if (!gamepad) { + continue; + } + // Iterate through the axes + var axes = gamepad.axes; + var leftStickX = axes[0]; + var leftStickY = axes[1]; + if (leftStickX > _THUMB_STICK_THRESHOLD) { // Right + _ButtonPressedState.setleftThumbstickRight(true); + } else if (leftStickX < -_THUMB_STICK_THRESHOLD) { // Left + _ButtonPressedState.setleftThumbstickLeft(true); + } else if (leftStickY < -_THUMB_STICK_THRESHOLD) { // Up + _ButtonPressedState.setleftThumbstickUp(true); + } else if (leftStickY > _THUMB_STICK_THRESHOLD) { // Down + _ButtonPressedState.setleftThumbstickDown(true); + } else { + _ButtonPressedState.setleftThumbstickLeft(false); + _ButtonPressedState.setleftThumbstickRight(false); + _ButtonPressedState.setleftThumbstickUp(false); + _ButtonPressedState.setleftThumbstickDown(false); + } + // Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed. + var buttons = gamepad.buttons; + for (var j = 0, len = buttons.length; j < len; j++) { + if (ProcessedButtons.indexOf(j) !== -1) { + if (buttons[j].pressed) { + switch (j) { + case _GAMEPAD_DPAD_UP_BUTTON_INDEX: + _ButtonPressedState.setdPadUp(true); + break; + case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: + _ButtonPressedState.setdPadDown(true); + break; + case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: + _ButtonPressedState.setdPadLeft(true); + break; + case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: + _ButtonPressedState.setdPadRight(true); + break; + case _GAMEPAD_A_BUTTON_INDEX: + _ButtonPressedState.setgamepadA(true); + break; + case _GAMEPAD_B_BUTTON_INDEX: + _ButtonPressedState.setgamepadB(true); + break; + default: + // No-op + break; + } + } else { + switch (j) { + case _GAMEPAD_DPAD_UP_BUTTON_INDEX: + if (_ButtonPressedState.getdPadUp()) { + _ButtonPressedState.setdPadUp(false); + } + break; + case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: + if (_ButtonPressedState.getdPadDown()) { + _ButtonPressedState.setdPadDown(false); + } + break; + case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: + if (_ButtonPressedState.getdPadLeft()) { + _ButtonPressedState.setdPadLeft(false); + } + break; + case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: + if (_ButtonPressedState.getdPadRight()) { + _ButtonPressedState.setdPadRight(false); + } + break; + case _GAMEPAD_A_BUTTON_INDEX: + if (_ButtonPressedState.getgamepadA()) { + _ButtonPressedState.setgamepadA(false); + } + break; + case _GAMEPAD_B_BUTTON_INDEX: + if (_ButtonPressedState.getgamepadB()) { + _ButtonPressedState.setgamepadB(false); + } + break; + default: + // No-op + break; } } } } - // Schedule the next one - inputLoopTimer = requestAnimationFrame(runInputLoop); } + // Schedule the next one + inputLoopTimer = requestAnimationFrame(runInputLoop); +} - function startInputLoop() { - if (!inputLoopTimer) { - runInputLoop(); +function startInputLoop() { + if (!inputLoopTimer) { + runInputLoop(); + } +} + +function stopInputLoop() { + cancelAnimationFrame(inputLoopTimer); + inputLoopTimer = undefined; +} + +function isGamepadConnected() { + var gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ + for (var i = 0, len = gamepads.length; i < len; i++) { + var gamepad = gamepads[i]; + if (gamepad && gamepad.connected) { + return true; } } + return false; +} - function stopInputLoop() { - cancelAnimationFrame(inputLoopTimer); - inputLoopTimer = undefined; +function onFocusOrGamepadAttach(e) { + /* eslint-disable-next-line compat/compat */ + if (isGamepadConnected() && document.hasFocus()) { + console.log('Gamepad connected! Starting input loop'); + startInputLoop(); } +} - function isGamepadConnected() { - var gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ - for (var i = 0, len = gamepads.length; i < len; i++) { - var gamepad = gamepads[i]; - if (gamepad && gamepad.connected) { - return true; - } - } - return false; +function onFocusOrGamepadDetach(e) { + /* eslint-disable-next-line compat/compat */ + if (!isGamepadConnected() || !document.hasFocus()) { + console.log('Gamepad disconnected! No other gamepads are connected, stopping input loop'); + stopInputLoop(); + } else { + console.log('Gamepad disconnected! There are gamepads still connected.'); } +} - function onFocusOrGamepadAttach(e) { - /* eslint-disable-next-line compat/compat */ - if (isGamepadConnected() && document.hasFocus()) { - console.log('Gamepad connected! Starting input loop'); - startInputLoop(); - } - } +// Event listeners for any change in gamepads' state. +window.addEventListener('gamepaddisconnected', onFocusOrGamepadDetach); +window.addEventListener('gamepadconnected', onFocusOrGamepadAttach); +window.addEventListener('blur', onFocusOrGamepadDetach); +window.addEventListener('focus', onFocusOrGamepadAttach); - function onFocusOrGamepadDetach(e) { - /* eslint-disable-next-line compat/compat */ - if (!isGamepadConnected() || !document.hasFocus()) { - console.log('Gamepad disconnected! No other gamepads are connected, stopping input loop'); - stopInputLoop(); - } else { - console.log('Gamepad disconnected! There are gamepads still connected.'); - } - } +onFocusOrGamepadAttach(); - // Event listeners for any change in gamepads' state. - window.addEventListener('gamepaddisconnected', onFocusOrGamepadDetach); - window.addEventListener('gamepadconnected', onFocusOrGamepadAttach); - window.addEventListener('blur', onFocusOrGamepadDetach); - window.addEventListener('focus', onFocusOrGamepadAttach); - - onFocusOrGamepadAttach(); - - // The gamepadInputEmulation is a string property that exists in JavaScript UWAs and in WebViews in UWAs. - // It won't exist in Win8.1 style apps or browsers. - if (window.navigator && typeof window.navigator.gamepadInputEmulation === 'string') { - // We want the gamepad to provide gamepad VK keyboard events rather than moving a - // mouse like cursor. Set to "keyboard", the gamepad will provide such keyboard events - // and provide input to the DOM navigator.getGamepads API. - window.navigator.gamepadInputEmulation = 'gamepad'; - } -}); +// The gamepadInputEmulation is a string property that exists in JavaScript UWAs and in WebViews in UWAs. +// It won't exist in Win8.1 style apps or browsers. +if (window.navigator && typeof window.navigator.gamepadInputEmulation === 'string') { + // We want the gamepad to provide gamepad VK keyboard events rather than moving a + // mouse like cursor. Set to "keyboard", the gamepad will provide such keyboard events + // and provide input to the DOM navigator.getGamepads API. + window.navigator.gamepadInputEmulation = 'gamepad'; +} diff --git a/src/scripts/site.js b/src/scripts/site.js index cd85c35e83..bf0fa75efa 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -689,7 +689,8 @@ function initClient() { 'events', 'credentialprovider', 'connectionManagerFactory', - 'appStorage' + 'appStorage', + 'focus-options-polyfill' ] }, urlArgs: urlArgs, @@ -698,7 +699,7 @@ function initClient() { }); promise = require(['fetch']) - .then(() => require(['jQuery', 'polyfill', 'fast-text-encoding', 'intersection-observer', 'classlist-polyfill', 'css!assets/css/site', 'jellyfin-noto'], (jQuery) => { + .then(() => require(['jQuery', 'polyfill', 'fast-text-encoding', 'intersection-observer', 'classlist-polyfill', 'focus-options-polyfill', 'css!assets/css/site', 'jellyfin-noto'], (jQuery) => { // Expose jQuery globally window.$ = jQuery; window.jQuery = jQuery; diff --git a/yarn.lock b/yarn.lock index 3ec7f21487..be5f329fa6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4608,6 +4608,11 @@ flv.js@^1.5.0: es6-promise "^4.2.5" webworkify "^1.5.0" +focus-options-polyfill@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/focus-options-polyfill/-/focus-options-polyfill-1.5.0.tgz#fd2e6a0d6d8f828346726a5adf02f3d2bdfece5f" + integrity sha512-HiMSaXGUz2OFjOuoGTWXlp+YjZCGnVXPu6vPeccgaSOzGmqLVz8tJRcKXWfMJnj16LXf/IM1rJI0zrZMVc9q7g== + follow-redirects@1.5.10: version "1.5.10" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" From 262bf48e2b7e9ace5d5d71449454fec539f5d5b0 Mon Sep 17 00:00:00 2001 From: Orry Verducci Date: Mon, 10 Aug 2020 22:08:04 +0100 Subject: [PATCH 022/582] Add bwdif deinterlace option --- src/encodingsettings.html | 1 + src/strings/en-gb.json | 1 + src/strings/en-us.json | 1 + 3 files changed, 3 insertions(+) diff --git a/src/encodingsettings.html b/src/encodingsettings.html index 858375b145..2e92c95a68 100644 --- a/src/encodingsettings.html +++ b/src/encodingsettings.html @@ -154,6 +154,7 @@
    ${DeinterlaceMethodHelp}
    diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 1947dc0c37..7cfaafdf6d 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1475,6 +1475,7 @@ "PathNotFound": "The path could not be found. Please ensure the path is valid and try again.", "YadifBob": "YADIF Bob", "Yadif": "YADIF", + "Bwdif": "BWDIF", "Track": "Track", "Season": "Season", "ReleaseGroup": "Release Group", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index a148ef061f..f4c2ef2494 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1546,6 +1546,7 @@ "XmlTvSportsCategoriesHelp": "Programs with these categories will be displayed as sports programs. Separate multiple with '|'.", "Yadif": "YADIF", "YadifBob": "YADIF Bob", + "Bwdif": "BWDIF", "Yes": "Yes", "Yesterday": "Yesterday", "PathNotFound": "The path could not be found. Please ensure the path is valid and try again.", From d23c4173737d2743232856a9099a637cc0e40739 Mon Sep 17 00:00:00 2001 From: Orry Verducci Date: Mon, 10 Aug 2020 22:10:15 +0100 Subject: [PATCH 023/582] Add double rate deinterlacing option This also removes YADIF Bob as the new double rate option replaces it. --- src/controllers/dashboard/encodingsettings.js | 2 ++ src/encodingsettings.html | 9 ++++++++- src/strings/bg-bg.json | 1 - src/strings/cs.json | 1 - src/strings/da.json | 1 - src/strings/de.json | 1 - src/strings/en-gb.json | 3 ++- src/strings/en-us.json | 3 ++- src/strings/es-ar.json | 1 - src/strings/es-mx.json | 1 - src/strings/es.json | 1 - src/strings/es_419.json | 1 - src/strings/fa.json | 1 - src/strings/fi.json | 1 - src/strings/fr.json | 1 - src/strings/hu.json | 1 - src/strings/it.json | 1 - src/strings/nb.json | 1 - src/strings/nl.json | 1 - src/strings/pl.json | 1 - src/strings/pt-br.json | 1 - src/strings/ru.json | 1 - src/strings/sk.json | 1 - src/strings/sv.json | 1 - src/strings/zh-cn.json | 1 - src/strings/zh-tw.json | 1 - 26 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js index 9995577ba8..b18bff6e30 100644 --- a/src/controllers/dashboard/encodingsettings.js +++ b/src/controllers/dashboard/encodingsettings.js @@ -22,6 +22,7 @@ import libraryMenu from 'libraryMenu'; page.querySelector('#selectEncoderPreset').value = config.EncoderPreset || ''; page.querySelector('#txtH264Crf').value = config.H264Crf || ''; page.querySelector('#selectDeinterlaceMethod').value = config.DeinterlaceMethod || ''; + page.querySelector('#chkDoubleRateDeinterlacing').checked = config.DeinterlaceDoubleRate; page.querySelector('#chkEnableSubtitleExtraction').checked = config.EnableSubtitleExtraction || false; page.querySelector('#chkEnableThrottling').checked = config.EnableThrottling || false; page.querySelector('#selectVideoDecoder').dispatchEvent(new CustomEvent('change', { @@ -67,6 +68,7 @@ import libraryMenu from 'libraryMenu'; config.EncoderPreset = form.querySelector('#selectEncoderPreset').value; config.H264Crf = parseInt(form.querySelector('#txtH264Crf').value || '0'); config.DeinterlaceMethod = form.querySelector('#selectDeinterlaceMethod').value; + config.DeinterlaceDoubleRate = form.querySelector('#chkDoubleRateDeinterlacing').checked; config.EnableSubtitleExtraction = form.querySelector('#chkEnableSubtitleExtraction').checked; config.EnableThrottling = form.querySelector('#chkEnableThrottling').checked; config.HardwareDecodingCodecs = Array.prototype.map.call(Array.prototype.filter.call(form.querySelectorAll('.chkDecodeCodec'), function (c) { diff --git a/src/encodingsettings.html b/src/encodingsettings.html index 2e92c95a68..7a8dfdf04c 100644 --- a/src/encodingsettings.html +++ b/src/encodingsettings.html @@ -153,12 +153,19 @@
    ${DeinterlaceMethodHelp}
    +
    + +
    ${UseDoubleRateDeinterlacingHelp}
    +
    +
    '; From 8194b19d0cb66be6b68e4635dd67411bf1b0e266 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Thu, 20 Aug 2020 11:42:09 -0400 Subject: [PATCH 049/582] Fix background size for TV channel logos --- src/components/cardbuilder/card.css | 4 ++++ src/components/cardbuilder/cardBuilder.js | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 8130087f89..0fc4571e94 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -244,6 +244,10 @@ button::-moz-focus-inner { background-position: center center; } +.coveredImage.coveredImage-contain { + background-size: contain; +} + .cardFooter { padding: 0.3em 0.3em 0.5em 0.3em; position: relative; diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 49ba27c5dd..c2141295ee 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1211,6 +1211,10 @@ import 'programStyles'; if (coveredImage) { cardImageContainerClass += ' coveredImage'; + + if (item.Type === 'TvChannel') { + cardImageContainerClass += ' coveredImage-contain'; + } } if (!imgUrl) { From e7dbbaa36f01ea6eef094b22fce9a54c3f0c449f Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Thu, 20 Aug 2020 14:00:37 -0400 Subject: [PATCH 050/582] Make fallback text on cards less tiny --- src/components/cardbuilder/card.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index ef5ea6604c..854ed6a5f7 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -372,6 +372,8 @@ button::-moz-focus-inner { .cardDefaultText { white-space: normal; text-align: center; + font-size: 2em; + font-weight: bold; } .cardImageContainer .cardImageIcon { From 35156850f26556375ab7829531731a64cadbd1d3 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 20 Aug 2020 19:11:52 +0000 Subject: [PATCH 051/582] Bump @babel/core from 7.11.1 to 7.11.4 Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.11.1 to 7.11.4. - [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.4/packages/babel-core) 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 a6f3e8724d..71bbe7d9ef 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.11.1", + "@babel/core": "^7.11.4", "@babel/eslint-parser": "^7.11.3", "@babel/eslint-plugin": "^7.11.3", "@babel/plugin-proposal-class-properties": "^7.10.1", diff --git a/yarn.lock b/yarn.lock index b507238470..3f8e93a15d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,16 +18,16 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.11.1": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.1.tgz#2c55b604e73a40dc21b0e52650b11c65cf276643" - integrity sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ== +"@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.11.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.4.tgz#4301dfdfafa01eeb97f1896c5501a3f0655d4229" + integrity sha512-5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.0" + "@babel/generator" "^7.11.4" "@babel/helper-module-transforms" "^7.11.0" "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.1" + "@babel/parser" "^7.11.4" "@babel/template" "^7.10.4" "@babel/traverse" "^7.11.0" "@babel/types" "^7.11.0" @@ -56,10 +56,10 @@ 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" - integrity sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ== +"@babel/generator@^7.11.0", "@babel/generator@^7.11.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.4.tgz#1ec7eec00defba5d6f83e50e3ee72ae2fee482be" + integrity sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g== dependencies: "@babel/types" "^7.11.0" jsesc "^2.5.1" @@ -281,10 +281,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.11.1": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.1.tgz#d91a387990b21e5d20047b336bb19b0553f02ff5" - integrity sha512-u9QMIRdKVF7hfEkb3nu2LgZDIzCQPv+yHD9Eg6ruoJLjkrQ9fFz4IBSlF/9XwoNri9+2F1IY+dYuOfZrXq8t3w== +"@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.11.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.4.tgz#6fa1a118b8b0d80d0267b719213dc947e88cc0ca" + integrity sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA== "@babel/plugin-proposal-async-generator-functions@^7.10.4": version "7.10.4" From e841c55e85b6afa8c16cd8b7afd13c39f63a5d33 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 20 Aug 2020 21:54:46 +0200 Subject: [PATCH 052/582] Fix cards without title --- src/components/cardbuilder/cardBuilder.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index e644365906..c5e25bd182 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -986,6 +986,10 @@ import 'programStyles'; lines = []; } + if (overlayText && showTitle) { + lines = [item.Name]; + } + const addRightTextMargin = isOuterFooter && options.cardLayout && !options.centerText && options.cardFooterAside !== 'none' && layoutManager.mobile; html += getCardTextLines(lines, cssClass, !options.overlayText, isOuterFooter, options.cardLayout, addRightTextMargin, options.lines); From 0c8a39e30630cb9180ec8f314707d5b4bc619a8f Mon Sep 17 00:00:00 2001 From: movamcr Date: Fri, 21 Aug 2020 01:54:03 +0000 Subject: [PATCH 053/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 88 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 75 insertions(+), 13 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 30413c2ad6..9652e85a18 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -118,7 +118,7 @@ "ColorSpace": "カラースペース", "CommunityRating": "コミュニティ評価", "Composer": "作曲者", - "ConfigureDateAdded": "日時を設定します", + "ConfigureDateAdded": "追加日時の設定はダッシュボードからライブラリー設定で変えられます", "ConfirmDeleteImage": "イメージを削除しますか?", "ConfirmDeleteItem": "このアイテムを削除すると、ファイルシステムとメディアライブラリの両方から削除されます。 続行しますか?", "ConfirmDeleteItems": "これらの項目を削除すると、ファイルシステムとメディアライブラリの両方からそれらが削除されます。 続行しますか?", @@ -148,7 +148,7 @@ "DeviceAccessHelp": "これは、識別できるデバイスにのみ適用され、ブラウザへのアクセスを妨げることはありません。 ユーザーのデバイスアクセスをフィルタリングすると、ここで承認されるまで新しいデバイスを使用できなくなります。", "DirectPlaying": "ダイレクト再生", "DirectStreamHelp1": "メディアは、解像度と種類 (H.264, AC3など)がお使いのデバイスに対応していますが、ファイルコンテナ(.mkv, .avi, .wmvなど)が対応していません。ビデオはデバイスに送信される前に、再パッケージされます。", - "DirectStreamHelp2": "ファイルのダイレクトストリーミングは、ビデオ品質を損なうことなく、Jellyfin Serverにもほとんど負荷がありません。", + "DirectStreamHelp2": "ダイレクトストリーミングは、ビデオ品質を損なうことなく、Jellyfin Serverにもほとんど負荷がありません。", "DirectStreaming": "ダイレクトストリーミング", "Director": "ディレクター", "Directors": "ディレクターズ", @@ -199,10 +199,10 @@ "DeathDateValue": "死亡日:{0}", "Depressed": "陰鬱", "ErrorAddingListingsToSchedulesDirect": "Schedules Directのアカウントにラインナップを追加中にエラーが発生しました。 スケジュールダイレクトでは、アカウントごとに限られた数のラインナップしか許可されません。続けるには、Schedules Direct にログインしてアカウントから他のリストを削除する必要があります。", - "ErrorAddingMediaPathToVirtualFolder": "メディアパスの追加中にエラーが発生しました。 パスが有効で、Jellyfin サーバープロセスがその場所にアクセスできることを確認してください。", + "ErrorAddingMediaPathToVirtualFolder": "メディアパスの追加中にエラーが発生しました。 パスが有効で、Jellyfin がその場所にアクセスできることを確認してください。", "ErrorAddingTunerDevice": "チューナーデバイスの追加中にエラーが発生しました。 アクセス可能であることを確認して、もう一度やり直してください。", "ErrorAddingXmlTvFile": "XMLTV ファイルへのアクセス中にエラーが発生しました。 ファイルが存在することを確認して、やり直してください。", - "ErrorDeletingItem": "Jellyfin サーバーからアイテムを削除中にエラーが発生しました。 Jellyfin サーバーがメディアフォルダーへの書き込みアクセス権を持っていることを確認して、もう一度やり直してください。", + "ErrorDeletingItem": "サーバーからアイテムを削除中にエラーが発生しました。 Jellyfinがメディアフォルダーへの書き込みアクセス権を持っていることを確認して、もう一度やり直してください。", "ErrorGettingTvLineups": "TV ラインナップ のダウンロード中にエラーが発生しました。 あなたの情報が正しいことを確認してもう一度やり直してください。", "ErrorStartHourGreaterThanEnd": "終了時間は開始時間より長くなければなりません。", "ErrorPleaseSelectLineup": "ラインナップを選択してもう一度やり直してください。 ラインナップが利用できない場合は、あなたのユーザー名、パスワード、および郵便番号が正しいことを確認してください。", @@ -490,7 +490,7 @@ "LabelNewPassword": "新しいパスワード:", "LabelNewPasswordConfirm": "新しいパスワードを確認:", "LabelNotificationEnabled": "この通知を有効化", - "LabelOptionalNetworkPath": "(任意) 共有ネットワークフォルダー:", + "LabelOptionalNetworkPath": "共有ネットワークフォルダー:", "LabelOriginalAspectRatio": "元のアスペクト比:", "LabelServerName": "サーバー名:", "LabelSupportedMediaTypes": "サポートされているメディアタイプ:", @@ -615,7 +615,7 @@ "LabelKidsCategories": "子供のカテゴリ:", "LabelLanNetworks": "LANネットワーク:", "LabelLanguage": "言語:", - "LabelLocalHttpServerPortNumberHelp": "JellyfinのHTTPサーバーがバインドするTCPポート番号。", + "LabelLocalHttpServerPortNumberHelp": "HTTPサーバーのTCPポート番号。", "LabelLoginDisclaimer": "ログイン免責事項:", "LabelSendNotificationToUsers": "通知を送る:", "LabelVideoCodec": "映像コーデック:", @@ -812,7 +812,7 @@ "LabelMonitorUsers": "アクティビティをモニター:", "LabelMovieCategories": "ムービーカテゴリ:", "LabelMoviePrefix": "ムービー接頭辞:", - "LabelMovieRecordingPath": "ムービー録画パス (任意):", + "LabelMovieRecordingPath": "ムービー録画パス:", "LabelOriginalTitle": "原題:", "LabelOverview": "概要:", "LabelParentNumber": "親番号:", @@ -826,7 +826,7 @@ "LabelPublicHttpsPort": "公開HTTPSポート番号:", "LabelReleaseDate": "公開日:", "LabelRemoteClientBitrateLimit": "インターネットストリーミングビットレートリミット (Mbps):", - "LabelRuntimeMinutes": "実行時間 (分):", + "LabelRuntimeMinutes": "実行時間:", "LabelScreensaver": "スクリーンセーバー:", "LabelSeasonNumber": "シーズン数:", "LabelSelectUsers": "ユーザーを選択:", @@ -1035,7 +1035,7 @@ "LabelCustomCertificatePathHelp": "カスタムドメインでTLSサポートを有効にするための証明書と秘密鍵を含むPKCS #12ファイルのパス。", "LabelCachePathHelp": "画像などのサーバーキャッシュファイルの場所を指定します。空欄にしておくと、サーバーのデフォルトを使います。", "LabelBlastMessageIntervalHelp": "ブラスト アライブ メッセージ間の時間を秒単位で指定します。", - "LabelBindToLocalNetworkAddressHelp": "HTTP サーバー用のローカル IP アドレスを上書きします。空のままにしておくと、サーバーは利用可能なすべてのアドレスにバインドします。この値の変更を反映するには、Jellyfin サーバーの再起動が必要です。", + "LabelBindToLocalNetworkAddressHelp": "HTTP サーバー用のローカル IP アドレスを上書きします。空のままにしておくと、サーバーは利用可能なすべてのアドレスにバインドします。この値の変更を反映するには再起動が必要です。", "LabelAlbumArtMaxWidthHelp": "upnp:albumArtURI で公開するアルバムアートの最大解像度。", "LabelAlbumArtMaxHeightHelp": "upnp:albumArtURI で公開するアルバムアートの最大解像度。", "LabelAlbumArtHelp": "upnp:albumArtURI の dlna:profileID 属性で、アルバムアートに使われるPN。デバイスによっては、画像のサイズと無関係に特定の値を要求するものもあります。", @@ -1059,7 +1059,7 @@ "LabelEnableDlnaPlayToHelp": "ネットワーク内のデバイスを検出し、それらをリモートで操作できるようにします。", "LabelEnableDlnaPlayTo": "DLNA 再生を有効にする", "LabelEnableDlnaDebugLoggingHelp": "巨大なログファイルを作成します。トラブルシューティングでの必要な際にだけ使用してください。", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Jellyfin が実行する SSDP 検索の間隔を決めます(秒単位)。", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "SSDP 検索の間隔を決めます(秒単位)。", "LabelGroupMoviesIntoCollectionsHelp": "ムービー リストを表示する際、コレクションに属するムービーは1つのグループとして表示します。", "LabelServerNameHelp": "この名前はサーバーを識別するために使用します。デフォルトではサーバーのホスト名です。", "LabelExtractChaptersDuringLibraryScanHelp": "ライブラリー スキャン中に動画を取り込んだときに、チャプター画像を生成します。もしくは、スケジュールタスクの中でチャプター画像を抽出することで、通常のライブラリー スキャンをより速く完了させることができます。", @@ -1078,7 +1078,7 @@ "LabelPlayDefaultAudioTrack": "言語に関係なくデフォルトの音声トラックを再生", "LabelPersonRoleHelp": "例: アイスクリームトラックドライバー", "LabelPasswordResetProvider": "パスワードリセットの提供:", - "LabelOptionalNetworkPathHelp": "ネットワーク内の共有フォルダの場合,ネットワーク共有のパスが他デバイスのJellyfinアプリからメディアファイルに直接アクセスできるようになります。例えば {0} や {1}です。", + "LabelOptionalNetworkPathHelp": "ネットワーク内の共有フォルダの場合,ネットワーク共有のパスが他デバイスのクライアントからメディアファイルに直接アクセスできるようになります。例えば {0} や {1}です。", "LabelNumberOfGuideDaysHelp": "多くの日数分のガイドデータをダウンロードするとより先のスケジュールとリストを見ることができるようになりますが,ダウンロードに時間がかかるようになります。自動に設定するとチャンネル数を基に選択されます。", "LabelNumberOfGuideDays": "ガイドデータをダウンロードする日数:", "LabelNewsCategories": "ニュースのカテゴリ:", @@ -1092,7 +1092,7 @@ "LabelMinResumeDurationHelp": "動画で再生している場所を記録してレジュームできるようにする,最短の時間です。", "LabelMinResumeDuration": "レジューム再生する最小時間:", "LabelMinBackdropDownloadWidth": "ダウンロードする背景の最小幅:", - "LabelMetadataSaversHelp": "メタデータを保存するファイルのフォーマットを選択します。", + "LabelMetadataSaversHelp": "メタデータを保存する際に使うファイルのフォーマットを選択します。", "LabelMetadataReadersHelp": "ローカルメタデータ取得先の優先度を並び替えます。最初に見つかったファイルが読み込まれます。", "LabelMetadataDownloadersHelp": "優先度順にオンラインメタデータ取得先を並び替えます。低い優先度のメタデータ取得先は,欠落した情報を補うためのみに使われるようになります。", "LabelMetadataPathHelp": "ダウンロードされたアートワークとメタデータの保存先を自分で指定します。", @@ -1115,5 +1115,67 @@ "LabelInNetworkSignInWithEasyPasswordHelp": "ローカルネットワーク内では簡単なPINコードを利用してサインインするようにします。ローカル以外からのアクセスのときのみ通常のパスワードが必要になります。PINコードを空欄にした場合,ローカルネットワーク内からのアクセスではパスワードが不要になります。", "LabelInNetworkSignInWithEasyPassword": "簡単なPINコードを利用してネットワーク内からサインインする機能の有効化", "LabelIconMaxWidthHelp": "upnp:icon として表示されるアイコンの最大解像度(幅)。", - "LabelIconMaxHeightHelp": "upnp:icon として表示されるアイコンの最大解像度(高さ)。" + "LabelIconMaxHeightHelp": "upnp:icon として表示されるアイコンの最大解像度(高さ)。", + "ManageRecording": "録画管理", + "LeaveBlankToNotSetAPassword": "このフィールドを空欄にすることでパスワード不要にできます。", + "Large": "ラージ", + "LabelffmpegPathHelp": "ffmpegアプリケーションファイルかffmpegを含有するフォルダのパス。", + "LabelZipCode": "郵便番号:", + "LabelYoureDone": "全て完了です!", + "LabelXDlnaDoc": "X-DLNA doc:", + "LabelXDlnaCap": "X-DLNA cap:", + "LabelVideoResolution": "動画解像度:", + "LabelValue": "値:", + "LabelVaapiDevice": "VA APIデバイス:", + "LabelUserRemoteClientBitrateLimitHelp": "サーバープレイバック設定のデフォルトグローバル値をオーバーライド。", + "LabelUserLoginAttemptsBeforeLockout": "ユーザーがロックされる前にログイン試行が失敗:", + "LabelUserLibraryHelp": "デバイスに表示されるユーザーライブラリを選択してください。空欄の場合デフォルト設定が引き継がれます。", + "LabelUseNotificationServices": "以下のサービスを使用:", + "LabelTypeMetadataDownloaders": "{0} メタデータダウンローダー:", + "LabelTunerType": "チューナータイプ:", + "LabelTunerIpAddress": "チューナーIPアドレス:", + "LabelTriggerType": "トリガータイプ:", + "LabelTextBackgroundColor": "テキスト背景色:", + "LabelSyncPlayAccess": "SyncPlayアクセス", + "LabelSyncPlayAccessNone": "このユーザーには無効", + "LabelSyncPlayAccessJoinGroups": "ユーザーによるグループの参加を許可", + "LabelSyncPlayAccessCreateAndJoinGroups": "ユーザーによるグループの作成/参加を許可", + "LabelSyncPlayLeaveGroupDescription": "SyncPlay無効", + "LabelSyncPlayLeaveGroup": "グループを離れる", + "LabelSyncPlayNewGroupDescription": "新しいグループ作成", + "LabelSyncPlayNewGroup": "新しいグループ", + "LabelSyncPlaySyncMethod": "同期方法:", + "LabelSyncPlayPlaybackDiff": "プレイバック時間差分:", + "MillisecondsUnit": "ミリ秒", + "LabelSyncPlayTimeOffset": "タイムオフセット:", + "LabelSubtitleFormatHelp": "例: srt", + "LabelSubtitleDownloaders": "字幕ダウンローダー:", + "LabelStreamType": "ストリームタイプ:", + "LabelStopWhenPossible": "可能次第停止:", + "LabelStartWhenPossible": "可能次第開始:", + "LabelSpecialSeasonsDisplayName": "スペシャルシーズン表示名:", + "LabelSortBy": "ソート順:", + "LabelSonyAggregationFlags": "SONYアグリゲーションフラグ:", + "LabelSkipIfGraphicalSubsPresent": "もし動画に埋め込み字幕がある時スキップ", + "LabelSkipIfAudioTrackPresent": "デフォルト音声トラックとダウンロード言語が同じ時スキップ", + "LabelSkipForwardLength": "スキップ(進み)時間:", + "LabelSkipBackLength": "スキップ(戻り)時間:", + "LabelSimultaneousConnectionLimit": "同時ストリーム制限:", + "LabelSeriesRecordingPath": "シリーズ録画パス:", + "EnableFasterAnimationsHelp": "高速アニメーションとページ遷移を使う", + "EnableFasterAnimations": "高速アニメーション", + "LabelScheduledTaskLastRan": "最終実行は{0}、実行時間は{1}。", + "LabelRequireHttpsHelp": "チェック時、全てのHTTPリクエストをHTTPSに自動リダイレクトします。サーバーがHTTPS対応していない時は何もしません。", + "LabelRequireHttps": "HTTPS必須", + "LabelRefreshMode": "リフレッシュモード:", + "LabelRecordingPath": "デフォルト録画パス:", + "LabelReasonForTranscoding": "トランスコード理由:", + "LabelProtocolInfoHelp": "この値はデバイスからのGetProtocolInfoリクエスト応答に使われます。", + "LabelProfileContainersHelp": "カンマ区切り。空欄にすることで全てのコンテナに適用されます。", + "LabelProfileContainer": "コンテナ:", + "LabelProfileCodecsHelp": "カンマ区切り。空欄にすることで全てのコーデックに適用されます。", + "LabelPlayerDimensions": "プレーヤーサイズ:", + "LabelUnstable": "不安定", + "LabelMaxParentalRating": "最大許容ペアレントレイティング:", + "LabelKodiMetadataEnablePathSubstitutionHelp": "サーバーのパス補完を使った画像パスの補完を有効にする。" } From 90ced9cf522d37d3b9fd33636358f8d9031c9103 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2020 06:52:43 +0000 Subject: [PATCH 054/582] Bump @babel/eslint-parser from 7.11.3 to 7.11.4 Bumps [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) from 7.11.3 to 7.11.4. - [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.4/eslint/babel-eslint-parser) 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 71bbe7d9ef..5d461c74c0 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "GPL-2.0-or-later", "devDependencies": { "@babel/core": "^7.11.4", - "@babel/eslint-parser": "^7.11.3", + "@babel/eslint-parser": "^7.11.4", "@babel/eslint-plugin": "^7.11.3", "@babel/plugin-proposal-class-properties": "^7.10.1", "@babel/plugin-proposal-private-methods": "^7.10.1", diff --git a/yarn.lock b/yarn.lock index 3f8e93a15d..e1841f2d59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,10 +40,10 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/eslint-parser@^7.11.3": - version "7.11.3" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.11.3.tgz#ceb94cb6e2457c4a4d2d87db29925e6b48d20786" - integrity sha512-OdCt/CVXdR/eTNTYDEobf4e55m/AAc04ki+/Oe2/GE8ivh2FxX4yDab48lA6t7ysP4M7luap6Fxx3hUVNTwzFQ== +"@babel/eslint-parser@^7.11.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.11.4.tgz#f79bac69088097a8418f5c67fc462c89a72c2f48" + integrity sha512-syIzsqEUvmc6WEYbLqrvBODCM1wMo3SQ4h4G9gtCcQctv1VUlA5davRAWHFm7ncQlxcJs4I7kaflsnAP8iA8Aw== dependencies: eslint-scope "5.1.0" eslint-visitor-keys "^1.3.0" From f8d880afe37ebac236268780d0930823f0fc5d8b Mon Sep 17 00:00:00 2001 From: SaddFox Date: Fri, 21 Aug 2020 21:00:50 +0000 Subject: [PATCH 055/582] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index ca1a5d6648..e4cc58de6d 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -72,7 +72,7 @@ "AllowMediaConversionHelp": "Dovoli ali zavrni dostop do pretvarjanja predstavnosti.", "AllowOnTheFlySubtitleExtraction": "Dovoli sprotno izluščenje podnapisov", "AllowOnTheFlySubtitleExtractionHelp": "Vdelani podnapisi so lahko izluščeni iz videa in poslani odjemalcem kot navaden tekst, kar zmanjša potrebo po prekodiranju. Na nekaterih napravah lahko to traja dalj časa in povzroča zatikanje med predvajanjem. Onemogočite to možnost, za vžig vdelanih podnapisov v video s prekodiranjem, za naprave ki sicer ne podpirajo podnapisov.", - "AllowRemoteAccess": "Dovoli oddaljene povezave s tem Jellyfin strežnikom.", + "AllowRemoteAccess": "Dovoli oddaljene povezave s tem strežnikom.", "AllowRemoteAccessHelp": "Če ni označeno, bodo vse oddaljene povezave blokirane.", "Artists": "Izvajalci", "Books": "Knjige", @@ -173,7 +173,7 @@ "ColorTransfer": "Prenos barve", "CommunityRating": "Ocena skupnosti", "Composer": "Skladatelj", - "ConfigureDateAdded": "Nastavi kako je določen datum dodajanja v nadzorni plošči Jellyfin Server-ja v kategoriji Knjižnice", + "ConfigureDateAdded": "Nastavite kako je določen datum dodajanja v nadzorni plošči v kategoriji Knjižnice", "ConfirmDeleteImage": "Izbriši sliko?", "ConfirmDeleteItem": "Brisanje tega elementa ga bo izbrisalo iz datotečnega sistema in medijske knjižnice. Ste prepričani da želite nadaljevati?", "ConfirmDeleteItems": "Brisanje teh elementov jih bo izbrisalo iz datotečnega sistema in medijske knjižnice. Ste prepričani da želite nadaljevati?", @@ -407,9 +407,9 @@ "DropShadow": "Senca", "EveryNDays": "Vsakih {0} dni", "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.", + "ErrorDeletingItem": "Prišlo je do težave pri brisanju predstavnosti s strežnika. Preverite ali ima Jellyfin 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.", + "ErrorAddingMediaPathToVirtualFolder": "Prišlo je do težave pri dodajanju poti predstavnosti. Preverite ali je pot veljavna in da ima Jellyfin dovoljenja za dostop.", "Episodes": "Epizode", "EndsAtValue": "Konec ob {0}", "Ended": "Končano", @@ -550,7 +550,7 @@ "LabelBitrate": "Bitna hitrost:", "LabelBlastMessageInterval": "Interval sporočila o dostopnosti", "LabelDefaultUserHelp": "Določi knjižnica katerega uporabnika bo prikazana na povezanih napravah. To lahko preglasite s profili za posamezno napravo.", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Določi trajanje v sekundah med SSDP iskanji, ki jih izvede Jellyfin.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Določi trajanje v sekundah med SSDP iskanji.", "LabelEnableDlnaClientDiscoveryInterval": "Interval odkrivanja odjemalcev", "LabelEnableBlastAliveMessagesHelp": "Omogočite, če imajo UPnP naprave težave z zaznavanjem strežnika v omrežju.", "LabelEnableBlastAliveMessages": "Oddajaj sporočila o dostopnosti", @@ -566,7 +566,7 @@ "LabelDisplayOrder": "Vrstni red prikaza:", "LabelDisplayName": "Prikazano ime:", "LabelDisplayMode": "Način prikaza:", - "LabelBindToLocalNetworkAddressHelp": "Preglasi lokalni IP naslov za HTTP strežnik. V kolikor pustite prazno se strežnik poveže z vsemi možnimi naslovi. Sprememba vrednosti zahteva ponovni zagon Jellyfin strežnika.", + "LabelBindToLocalNetworkAddressHelp": "Preglasi lokalni IP naslov za HTTP strežnik. V kolikor pustite prazno se strežnik poveže z vsemi možnimi naslovi. Sprememba vrednosti zahteva ponovni zagon.", "InstallingPackage": "Nameščanje {0} (različica {1})", "ImportMissingEpisodesHelp": "Podatki o manjkajočih epizodah bodo dodani v bazo podatkov in prikazani znotraj sezon in serij. To lahko občutno podaljša čas uvoza v knjižnjico.", "ImportFavoriteChannelsHelp": "Uvoženi bodo zgolj programi, ki so na sprejemniku označeni kot priljubljeni.", @@ -761,7 +761,7 @@ "PleaseConfirmPluginInstallation": "Prosimo kliknite OK, da potrdite, da se strinjate z zgoraj napisanim in želite nadaljevati z namestitvijo dodatka.", "Programs": "Programi", "LabelTunerIpAddress": "IP naslov TV/radio sprejemnika:", - "PleaseRestartServerName": "Prosimo ponovno zaženite Jellyfin strežnik - {0}.", + "PleaseRestartServerName": "Prosimo ponovno zaženite Jellyfin na {0}.", "ProductionLocations": "Kraj produkcije", "OptionAllowRemoteSharedDevices": "Dovoli daljinsko upravljanje skupnih naprav", "OptionAllowRemoteSharedDevicesHelp": "DLNA naprave veljajo za skupne, dokler jih ne začne nadzirati uporabnik.", @@ -861,7 +861,7 @@ "OptionArtist": "Izvajalec", "OptionAllowUserToManageServer": "Dovoli temu uporabniku upravljanje strežnika", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Naslednja mesta predstavnosti bodo odstranjena iz vaše knjižnice:", - "MessagePluginInstallDisclaimer": "Dodatki ustvarjeni s strani članov Jellyfin skupnosti so odličen način za izboljšanje vaše izkušnje z Jellyfin z dodatnimi funkcijami in prednostmi. Preden namestite dodatke se zavedajte, da imajo lahko ti različne vplive na vaš Jellyfin strežnik, kot na primer počasnejše preiskovanje knjižnic, dodatna obdelava podatkov v ozadju in zmanjšana stabilnost sistema.", + "MessagePluginInstallDisclaimer": "Dodatki ustvarjeni s strani članov skupnosti so odličen način za izboljšanje vaše izkušnje z dodatnimi funkcijami in prednostmi. Preden namestite dodatke se zavedajte, da imajo lahko ti različne vplive na vaš strežnik, kot na primer počasnejše preiskovanje knjižnic, dodatna obdelava podatkov v ozadju in zmanjšana stabilnost sistema.", "MessagePleaseWait": "Prosimo, počakajte. To lahko traja nekaj minut.", "MessagePleaseEnsureInternetMetadata": "Prosimo poskrbite, da je prenašanje spletnih metapodatkov omogočeno.", "MessageNothingHere": "Tu ni nič.", @@ -878,13 +878,13 @@ "MessageEnablingOptionLongerScans": "Če omogočite to možnost, se lahko trajanje preiskovanja knjižnic občutno podaljša.", "MessageDownloadQueued": "Prenos na čakanju.", "MessageDirectoryPickerLinuxInstruction": "Za Linux na sistemu Arch Linux, CentOS, Debian, Fedora, openSUSE ali Ubuntu morate uporabniku storitve dodeliti vsaj dovoljenje za branje vaših shramb.", - "MessageDirectoryPickerBSDInstruction": "Za BSD boste morda morali nastaviti shrambo znotraj vašega FreeNAS Jail-a, da omogočite Jellyfin dostop.", + "MessageDirectoryPickerBSDInstruction": "Za BSD boste morda morali nastaviti shrambo znotraj vašega FreeNAS Jail-a, da omogočite Jellyfin dostop do predstavnosti.", "MessageDeleteTaskTrigger": "Ali ste prepričani, da želite izbrisati ta sprožilec opravil?", "MessageCreateAccountAt": "Ustvarite račun pri {0}", "MessageContactAdminToResetPassword": "Za ponastavitev gesla se obrnite na skrbnika sistema.", "MessageConfirmShutdown": "Ali ste prepričani, da želite zaustaviti strežnik?", - "MessageConfirmRevokeApiKey": "Ali ste prepričani, da želite razveljaviti ta API ključ? Povezava aplikacije z Jellyfin strežnikom bo nenadoma prekinjena.", - "MessageConfirmRestart": "Ali ste prepričani, da želite ponovno zagnati Jellyfin strežnik?", + "MessageConfirmRevokeApiKey": "Ali ste prepričani, da želite razveljaviti ta API ključ? Povezava aplikacije s strežnikom bo nenadoma prekinjena.", + "MessageConfirmRestart": "Ali ste prepričani, da želite ponovno zagnati Jellyfin?", "MessageConfirmRemoveMediaLocation": "Ali ste prepričani, da želite odstraniti to mesto?", "MessageConfirmRecordingCancellation": "Prekliči snemanje?", "MessageConfirmProfileDeletion": "Ali ste prepričani, da želite izbrisati ta profil?", @@ -946,7 +946,7 @@ "LabelVersion": "Različica:", "LabelSelectVersionToInstall": "Izberite različico za namestitev:", "Never": "Nikoli", - "ServerUpdateNeeded": "Jellyfin strežnik je potrebno posodobiti. Za prenos najnovejše različice prosimo obiščite {0}", + "ServerUpdateNeeded": "Ta strežnik je potrebno posodobiti. Za prenos najnovejše različice prosimo obiščite {0}", "LatestFromLibrary": "Najnovejši {0}", "LabelScheduledTaskLastRan": "Nazadnje zagnano {0}. Čas trajanja {1}.", "OptionRandom": "Naključno", @@ -1268,7 +1268,7 @@ "TabScheduledTasks": "Načrtovana opravila", "HeaderUninstallPlugin": "Odstrani dodatek", "UninstallPluginConfirmation": "Ali ste prepričan, da želite odstraniti {0}?", - "ServerRestartNeededAfterPluginInstall": "Po namestitvi dodatka bo potreben ponoven zagon jellyfin strežnika.", + "ServerRestartNeededAfterPluginInstall": "Po namestitvi dodatka bo potreben ponoven zagon jellyfin.", "TabResponses": "Odzivi", "TabPlugins": "Dodatki", "TabOther": "Ostalo", From e88f29ac3706b7f4f1d9a6fce45ca5c68f11396d Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 22 Aug 2020 19:10:08 +0200 Subject: [PATCH 056/582] Restore focusPreventScroll --- package.json | 1 - src/bundle.js | 5 --- src/elements/emby-scroller/emby-scroller.js | 10 ++--- src/legacy/focusPreventScroll.js | 42 +++++++++++++++++++++ src/scripts/site.js | 8 ++-- yarn.lock | 5 --- 6 files changed, 51 insertions(+), 20 deletions(-) create mode 100644 src/legacy/focusPreventScroll.js diff --git a/package.json b/package.json index ff58c6e66c..8f706b83f0 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,6 @@ "epubjs": "^0.3.85", "fast-text-encoding": "^1.0.3", "flv.js": "^1.5.0", - "focus-options-polyfill": "^1.5.0", "headroom.js": "^0.11.0", "hls.js": "^0.14.8", "howler": "^2.2.0", diff --git a/src/bundle.js b/src/bundle.js index 8559f3943b..5a7ffed075 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -10,11 +10,6 @@ _define('fetch', function() { return fetch; }); -var focusPreventScroll = require('focus-options-polyfill'); -_define('focus-options-polyfill', function() { - return focusPreventScroll; -}); - // Blurhash const blurhash = require('blurhash'); _define('blurhash', function() { diff --git a/src/elements/emby-scroller/emby-scroller.js b/src/elements/emby-scroller/emby-scroller.js index b2bb51e202..d7133e317a 100644 --- a/src/elements/emby-scroller/emby-scroller.js +++ b/src/elements/emby-scroller/emby-scroller.js @@ -17,12 +17,10 @@ import 'css!./emby-scroller'; function initCenterFocus(elem, scrollerInstance) { dom.addEventListener(elem, 'focus', function (e) { - setTimeout(function() { - const focused = focusManager.focusableParent(e.target); - if (focused) { - scrollerInstance.toCenter(focused); - } - }, 0); + const focused = focusManager.focusableParent(e.target); + if (focused) { + scrollerInstance.toCenter(focused); + } }, { capture: true, passive: true diff --git a/src/legacy/focusPreventScroll.js b/src/legacy/focusPreventScroll.js new file mode 100644 index 0000000000..93f53dca29 --- /dev/null +++ b/src/legacy/focusPreventScroll.js @@ -0,0 +1,42 @@ +// Polyfill to add support for preventScroll by focus function + +if (HTMLElement.prototype.nativeFocus === undefined) { + (function () { + var supportsPreventScrollOption = false; + try { + var focusElem = document.createElement('div'); + + focusElem.addEventListener('focus', function(event) { + event.preventDefault(); + event.stopPropagation(); + }, true); + + var opts = Object.defineProperty({}, 'preventScroll', { + // eslint-disable-next-line getter-return + get: function () { + supportsPreventScrollOption = true; + } + }); + + focusElem.focus(opts); + } catch (e) { + console.error('error checking preventScroll support'); + } + + if (!supportsPreventScrollOption) { + HTMLElement.prototype.nativeFocus = HTMLElement.prototype.focus; + + HTMLElement.prototype.focus = function(options) { + var scrollX = window.scrollX; + var scrollY = window.scrollY; + + this.nativeFocus(); + + // Restore window scroll if preventScroll + if (options && options.preventScroll) { + window.scroll(scrollX, scrollY); + } + }; + } + })(); +} diff --git a/src/scripts/site.js b/src/scripts/site.js index bb7e133df7..fa0aaf7c76 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -221,6 +221,7 @@ function initClient() { keyboardnavigation.enable(); }); require(['mouseManager']); + require(['focusPreventScroll']); require(['autoFocuser'], function(autoFocuser) { autoFocuser.enable(); }); @@ -462,6 +463,7 @@ function initClient() { datetime: 'scripts/datetime', globalize: 'scripts/globalize', dfnshelper: 'scripts/dfnshelper', + libraryMenu: 'scripts/libraryMenu', playlisteditor: componentsPath + '/playlisteditor/playlisteditor', medialibrarycreator: componentsPath + '/mediaLibraryCreator/mediaLibraryCreator', @@ -520,8 +522,7 @@ function initClient() { 'events', 'credentialprovider', 'connectionManagerFactory', - 'appStorage', - 'focus-options-polyfill' + 'appStorage' ] }, urlArgs: urlArgs, @@ -530,7 +531,7 @@ function initClient() { }); promise = require(['fetch']) - .then(() => require(['jQuery', 'polyfill', 'fast-text-encoding', 'intersection-observer', 'classlist-polyfill', 'focus-options-polyfill', 'css!assets/css/site', 'jellyfin-noto'], (jQuery) => { + .then(() => require(['jQuery', 'polyfill', 'fast-text-encoding', 'intersection-observer', 'classlist-polyfill', 'css!assets/css/site', 'jellyfin-noto'], (jQuery) => { // Expose jQuery globally window.$ = jQuery; window.jQuery = jQuery; @@ -650,6 +651,7 @@ function initClient() { return viewManager; }); define('slideshow', [componentsPath + '/slideshow/slideshow'], returnFirstDependency); + define('focusPreventScroll', ['legacy/focusPreventScroll'], returnFirstDependency); define('userdataButtons', [componentsPath + '/userdatabuttons/userdatabuttons'], returnFirstDependency); define('listView', [componentsPath + '/listview/listview'], returnFirstDependency); define('indicators', [componentsPath + '/indicators/indicators'], returnFirstDependency); diff --git a/yarn.lock b/yarn.lock index 0dfcf0c15d..b507238470 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4598,11 +4598,6 @@ flv.js@^1.5.0: es6-promise "^4.2.5" webworkify "^1.5.0" -focus-options-polyfill@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/focus-options-polyfill/-/focus-options-polyfill-1.5.0.tgz#fd2e6a0d6d8f828346726a5adf02f3d2bdfece5f" - integrity sha512-HiMSaXGUz2OFjOuoGTWXlp+YjZCGnVXPu6vPeccgaSOzGmqLVz8tJRcKXWfMJnj16LXf/IM1rJI0zrZMVc9q7g== - follow-redirects@1.5.10: version "1.5.10" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" From e690a879ce7452892ae0d07e1069475e785ce27b Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Sat, 22 Aug 2020 20:55:17 +0200 Subject: [PATCH 057/582] Update src/scripts/site.js Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/scripts/site.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/scripts/site.js b/src/scripts/site.js index fa0aaf7c76..48a5044f5e 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -463,7 +463,6 @@ function initClient() { datetime: 'scripts/datetime', globalize: 'scripts/globalize', dfnshelper: 'scripts/dfnshelper', - libraryMenu: 'scripts/libraryMenu', playlisteditor: componentsPath + '/playlisteditor/playlisteditor', medialibrarycreator: componentsPath + '/mediaLibraryCreator/mediaLibraryCreator', From 79fcf4ebea80bb7a4cf44ab798c1eb25d07ffc72 Mon Sep 17 00:00:00 2001 From: rethi61 Date: Sun, 23 Aug 2020 03:21:16 +0000 Subject: [PATCH 058/582] Translated using Weblate (French (Canada)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr_CA/ --- src/strings/fr-ca.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index 09585df2bd..0ad88bb7cf 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -154,7 +154,7 @@ "AskAdminToCreateLibrary": "Demander un administrateur de créer une médiathèque.", "Artist": "Artiste", "AllowFfmpegThrottlingHelp": "Quand un transcodage ou rémux se déplace après la position de relecture, suspendre le processus pour consommer moins de ressources. Ceci est le plus utile pour chercher moins. Désactiver s'il y a des problèmes de relecture.", - "AllowFfmpegThrottling": "Restreindre la vitesse de transcodage", + "AllowFfmpegThrottling": "Limiter la vitesse de transcodage", "AlbumArtist": "Artiste de l'Album", "Album": "Album", "AuthProviderHelp": "Sélectionner un fournisseur d'authentification pour authentifier le mot de passe de cet utilisateur.", From 81ddb1529d87d8bda5f8b2c037e47800484ad5ed Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sun, 23 Aug 2020 06:23:09 +0000 Subject: [PATCH 059/582] Bump gulp-terser from 1.3.2 to 1.4.0 Bumps [gulp-terser](https://github.com/duan602728596/gulp-terser) from 1.3.2 to 1.4.0. - [Release notes](https://github.com/duan602728596/gulp-terser/releases) - [Commits](https://github.com/duan602728596/gulp-terser/compare/v1.3.2...v1.4.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 03c4259eac..654845113c 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "gulp-postcss": "^8.0.0", "gulp-sass": "^4.0.2", "gulp-sourcemaps": "^2.6.5", - "gulp-terser": "^1.3.2", + "gulp-terser": "^1.4.0", "html-webpack-plugin": "^4.3.0", "lazypipe": "^1.0.2", "node-sass": "^4.13.1", diff --git a/yarn.lock b/yarn.lock index 4b8529b4b9..5f962daee2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5252,10 +5252,10 @@ gulp-sourcemaps@^2.6.5: strip-bom-string "1.X" through2 "2.X" -gulp-terser@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/gulp-terser/-/gulp-terser-1.3.2.tgz#c91a71c31de0c40a94330bfd43b20c2a40df9a6b" - integrity sha512-hLx9Ww9PX304R3E7pMyL+jFftH47QXQCgKE6IZajbz7OoqAPMdr+sTxBpaujgIVkdbnJwJ7AFhfrcyy/cjBgZQ== +gulp-terser@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/gulp-terser/-/gulp-terser-1.4.0.tgz#0ac4dfdbed4ab46906007c5b358810c1642b9764" + integrity sha512-7df9leJna3WOmj76tYHxjpn7BSU+vmKVjVSd6bz3uLEyrzCfZI97KPhRcIabrSNzs0UY/UXTt+JwkxPw3sF85w== dependencies: is-promise "^4.0.0" plugin-error "^1.0.1" From 0133db0d5f8b8d476c694c9511dbf67c95a95735 Mon Sep 17 00:00:00 2001 From: rethi61 Date: Sun, 23 Aug 2020 03:36:46 +0000 Subject: [PATCH 060/582] Translated using Weblate (French (Canada)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr_CA/ --- src/strings/fr-ca.json | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index 0ad88bb7cf..bcbba8eb66 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -72,7 +72,7 @@ "WelcomeToProject": "Bienvenue dans Jellyfin !", "WizardCompleted": "C'est tout ce dont nous avons besoin pour l'instant. Jellyfin a commencé à collecter les informations de votre bibliothèque de médias. Jetez un oeil à quelques unes de nos applications, puis cliquez sur Terminer pour consulter le Tableau de bord du serveur.", "Absolute": "Absolu", - "AccessRestrictedTryAgainLater": "L'accès est actuellement restreint. Veuillez réessayer plus tard.", + "AccessRestrictedTryAgainLater": "Accès restreint. Veuillez réessayer plus tard.", "Actor": "Acteur(trice)", "AddToPlayQueue": "Ajouter à la file d'attente", "AddedOnValue": "Ajouté le {0}", @@ -91,7 +91,7 @@ "AllowMediaConversionHelp": "Autoriser ou refuser l'accès à la fonctionnalité de conversion des médias.", "AllowOnTheFlySubtitleExtraction": "Autoriser l'extraction des sous-titres à la volée", "AllowOnTheFlySubtitleExtractionHelp": "Les sous-titres intégrés peuvent être extraits des vidéos et distribués aux clients en format texte pour éviter le transcodage. Sur certains systèmes, cela peut prendre du temps et arrêter la lecture de la vidéo pendant le processus d'extraction. Désactivez cette option pour graver les sous-titres avec un transcodage quand l'appareil ne les prend pas en charge nativement.", - "AllowRemoteAccess": "Autoriser les connexions distantes à ce serveur Jellyfin.", + "AllowRemoteAccess": "Autoriser les connexions à distance sur ce serveur Jellyfin.", "AllowRemoteAccessHelp": "Si l'option est désactivée, toutes les connexions distantes seront bloquées.", "Artists": "Artistes", "Books": "Livres", @@ -108,11 +108,11 @@ "Songs": "Chansons", "Sync": "Synchroniser", "AllowedRemoteAddressesHelp": "Liste d'adresses IP ou d'IP/masque de sous-réseau séparées par des virgules qui seront autorisées à se connecter à distance. Si la liste est vide, toutes les adresses distantes seront autorisées.", - "AlwaysPlaySubtitles": "Toujours afficher les sous-titres", - "AlwaysPlaySubtitlesHelp": "Les sous-titres correspondant à la préférence linguistique seront chargés indépendamment de la langue de l'audio.", + "AlwaysPlaySubtitles": "Toujours afficher", + "AlwaysPlaySubtitlesHelp": "Les sous-titres correspondant à la préférence linguistique seront chargés sans tenir compte de la langue de l'audio.", "AnyLanguage": "N'importe quelle langue", "Anytime": "N'importe quand", - "AroundTime": "Aux environs de {0}", + "AroundTime": "Environ", "Art": "Illustration", "AsManyAsPossible": "Autant que possible", "Ascending": "Croissant", @@ -150,10 +150,10 @@ "ButtonManualLogin": "Connexion manuelle", "ButtonMore": "Plus", "ButtonNetwork": "Réseau", - "AspectRatio": "Format de visionnement", + "AspectRatio": "Format de l'image", "AskAdminToCreateLibrary": "Demander un administrateur de créer une médiathèque.", "Artist": "Artiste", - "AllowFfmpegThrottlingHelp": "Quand un transcodage ou rémux se déplace après la position de relecture, suspendre le processus pour consommer moins de ressources. Ceci est le plus utile pour chercher moins. Désactiver s'il y a des problèmes de relecture.", + "AllowFfmpegThrottlingHelp": "Quand un transcodage ou un remultiplexage a traité une période suffisamment longue depuis la position de lecture, le processus sera interrompu afin d'économiser des ressources. Ceci est utile principalement lors de lectures continues. À désactiver si vous éprouvez des problèmes de lecture.", "AllowFfmpegThrottling": "Limiter la vitesse de transcodage", "AlbumArtist": "Artiste de l'Album", "Album": "Album", @@ -184,7 +184,7 @@ "Categories": "Catégories", "CancelSeries": "Annuler la série", "CancelRecording": "Annuler l'enregistrement", - "ButtonWebsite": "Site web", + "ButtonWebsite": "Site Web", "ButtonUninstall": "Désinstaller", "ButtonTogglePlaylist": "Liste de lecture", "ButtonSubmit": "Soumettre", @@ -212,5 +212,9 @@ "ButtonOk": "OK", "ButtonNextTrack": "Prochaine piste", "ButtonAddImage": "Ajouter l'image", - "BoxSet": "Coffret" + "BoxSet": "Coffret", + "ChangingMetadataImageSettingsNewContent": "Les modifications aux paramètres de téléchargement de métadonnées et d'illustrations seront appliquées seulement au nouveau contenu de votre médiathèque. Vous devrez actualiser les métadonnées manuellement pour que les changements soient appliqués à l'ensemble de votre contenu.", + "ButtonTrailer": "Bande-annonce", + "ButtonSplit": "Couper", + "ButtonSelectView": "Sélectionner l'affichage" } From bd5441b53cc2019ed9523cd2e6f9d6637c71bd5a Mon Sep 17 00:00:00 2001 From: rethi61 Date: Sun, 23 Aug 2020 03:38:05 +0000 Subject: [PATCH 061/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 5bc4f9cd35..ad0c997ba7 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -25,7 +25,7 @@ "AllowRemoteAccess": "Autoriser les connexions distantes à ce serveur.", "AllowRemoteAccessHelp": "Si l'option est désactivée, toutes les connexions distantes seront bloquées.", "AllowedRemoteAddressesHelp": "Liste d'adresses IP ou d'IP/masque de sous-réseau séparées par des virgules qui seront autorisées à se connecter à distance. Si la liste est vide, toutes les adresses distantes seront autorisées.", - "AlwaysPlaySubtitles": "Toujours afficher les sous-titres", + "AlwaysPlaySubtitles": "Toujours afficher", "AlwaysPlaySubtitlesHelp": "Les sous-titres correspondant à la préférence linguistique seront chargés indépendamment de la langue de l'audio.", "AnyLanguage": "N'importe quel langage", "Anytime": "N'importe quand", From 955d7464ffc8459f34f20f5aed6245ccd80cb0dc Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 24 Aug 2020 08:20:29 +0900 Subject: [PATCH 062/582] remove translations with duplicate values --- .../filterdialog/filterdialog.template.html | 14 +++++++------- .../imageOptionsEditor.template.html | 10 +++++----- src/components/notifications/notifications.js | 2 +- src/controllers/dashboard/dashboard.html | 2 +- src/controllers/dashboard/dashboard.js | 2 +- src/controllers/dashboard/dlna/profile.html | 12 ++++++------ src/controllers/dashboard/dlna/profiles.js | 2 +- src/controllers/dashboard/dlna/settings.html | 2 +- src/controllers/dashboard/dlna/settings.js | 2 +- src/controllers/dashboard/encodingsettings.html | 4 ++-- src/controllers/dashboard/general.html | 2 +- src/controllers/dashboard/library.js | 2 +- .../dashboard/plugins/installed/index.js | 2 +- src/controllers/dashboard/users/useredit.html | 2 +- .../dashboard/users/userlibraryaccess.html | 2 +- .../dashboard/users/userparentalcontrol.html | 2 +- .../dashboard/users/userparentalcontrol.js | 6 +++--- src/controllers/dashboard/users/userpassword.html | 4 ++-- src/controllers/livetvsettings.html | 2 +- src/controllers/movies/movies.js | 2 +- src/controllers/music/musicalbums.js | 2 +- src/controllers/music/songs.js | 8 ++++---- src/controllers/playback/queue/index.html | 2 +- src/controllers/shows/episodes.js | 2 +- src/controllers/user/menu/index.html | 4 ++-- src/controllers/user/profile/index.html | 2 +- src/scripts/libraryBrowser.js | 4 ++-- src/scripts/libraryMenu.js | 4 ++-- 28 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/components/filterdialog/filterdialog.template.html b/src/components/filterdialog/filterdialog.template.html index 1d61f3923e..e98c71bf39 100644 --- a/src/components/filterdialog/filterdialog.template.html +++ b/src/components/filterdialog/filterdialog.template.html @@ -6,12 +6,12 @@
    @@ -68,11 +68,11 @@
    diff --git a/src/controllers/livetvsettings.html b/src/controllers/livetvsettings.html index ad3a9de7af..374ab9a4a0 100644 --- a/src/controllers/livetvsettings.html +++ b/src/controllers/livetvsettings.html @@ -11,7 +11,7 @@
    ' + globalize.translate('OptionAscending') + ''; + html += ''; isChecked = options.query.SortOrder == 'Descending' ? ' checked' : ''; - html += ''; + html += ''; html += '
    '; html += '
    '; dlg.innerHTML = html; diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index e1b0ff780d..e6b96e7447 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -293,10 +293,10 @@ import 'flexStyles'; html += ''; if (appHost.supports('multiserver')) { - html += '' + globalize.translate('ButtonSelectServer') + ''; + html += '' + globalize.translate('HeaderSelectServer') + ''; } - html += '' + globalize.translate('ButtonSettings') + ''; + html += '' + globalize.translate('Settings') + ''; html += '' + globalize.translate('ButtonSignOut') + ''; html += '
    '; } From b8e99661c735e02e1e2205414b1e24ae648ad0b4 Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 24 Aug 2020 08:29:19 +0900 Subject: [PATCH 063/582] update translation files --- src/strings/af.json | 2 -- src/strings/ar.json | 33 --------------------------------- src/strings/bg-bg.json | 33 --------------------------------- src/strings/bn_BD.json | 4 ---- src/strings/ca.json | 29 ----------------------------- src/strings/cs.json | 33 --------------------------------- src/strings/da.json | 33 --------------------------------- src/strings/de.json | 33 --------------------------------- src/strings/el.json | 32 -------------------------------- src/strings/en-gb.json | 33 --------------------------------- src/strings/en-us.json | 33 --------------------------------- src/strings/es-ar.json | 33 --------------------------------- src/strings/es-mx.json | 33 --------------------------------- src/strings/es.json | 33 --------------------------------- src/strings/es_419.json | 33 --------------------------------- src/strings/fa.json | 33 --------------------------------- src/strings/fi.json | 32 -------------------------------- src/strings/fr-ca.json | 6 ------ src/strings/fr.json | 33 --------------------------------- src/strings/gsw.json | 12 ------------ src/strings/he.json | 32 -------------------------------- src/strings/hi-in.json | 1 - src/strings/hr.json | 33 --------------------------------- src/strings/hu.json | 33 --------------------------------- src/strings/id.json | 7 ------- src/strings/is-is.json | 12 ------------ src/strings/it.json | 33 --------------------------------- src/strings/ja.json | 30 ------------------------------ src/strings/kk.json | 33 --------------------------------- src/strings/ko.json | 33 --------------------------------- src/strings/lt-lt.json | 31 ------------------------------- src/strings/lv.json | 29 ----------------------------- src/strings/mr.json | 3 --- src/strings/ms.json | 1 - src/strings/nb.json | 33 --------------------------------- src/strings/nl.json | 33 --------------------------------- src/strings/pl.json | 33 --------------------------------- src/strings/pr.json | 1 - src/strings/pt-br.json | 33 --------------------------------- src/strings/pt-pt.json | 33 --------------------------------- src/strings/pt.json | 33 --------------------------------- src/strings/ro.json | 33 --------------------------------- src/strings/ru.json | 33 --------------------------------- src/strings/sk.json | 33 --------------------------------- src/strings/sl-si.json | 32 -------------------------------- src/strings/sr.json | 6 ------ src/strings/sv.json | 33 --------------------------------- src/strings/ta.json | 33 --------------------------------- src/strings/tr.json | 27 --------------------------- src/strings/uk.json | 13 ------------- src/strings/vi.json | 15 --------------- src/strings/zh-cn.json | 33 --------------------------------- src/strings/zh-hk.json | 29 ----------------------------- src/strings/zh-tw.json | 33 --------------------------------- 54 files changed, 1409 deletions(-) diff --git a/src/strings/af.json b/src/strings/af.json index df3ca17f3f..6ac06df748 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -122,12 +122,10 @@ "TellUsAboutYourself": "Vertel ons van jouself", "TabUpcoming": "Komende", "TabStreaming": "Stroom", - "TabSettings": "Instellings", "TabServer": "Bediener", "TabScheduledTasks": "Geskeduleerde Take", "TabResponses": "Reaksies", "TabProfiles": "Profiele", - "TabProfile": "Profiel", "TabParentalControl": "Ouer Beheer", "TabOther": "Ander", "TabNotifications": "Kennisgewings", diff --git a/src/strings/ar.json b/src/strings/ar.json index ba172b57ae..41b96b0c4d 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -24,7 +24,6 @@ "ButtonEditOtherUserPreferences": "اضبط إعدادات حساب المستخدم هذا، وصورته وتفضيلاته الشخصية.", "ButtonForgotPassword": "نسيت كلمة السر", "ButtonFullscreen": "ملء الشاشة", - "ButtonGuide": "الدليل", "ButtonInfo": "معلومات", "ButtonLibraryAccess": "صلاحيات المكتبة", "ButtonManualLogin": "الدخول اليدوي", @@ -36,21 +35,16 @@ "ButtonParentalControl": "التحكم الأبوي", "ButtonPause": "توقف مؤقت", "ButtonPreviousTrack": "المقطوعة السابقة", - "ButtonProfile": "حساب", "ButtonQuickStartGuide": "دليل بدء الاستخدام السريع", "ButtonRefreshGuideData": "إعادة تنشيط بيانات الدليل", "ButtonRemove": "إزالة", "ButtonRename": "إعادة التسمية", "ButtonResetEasyPassword": "إعادة تهيئة الرمز الشخصي الميسر", - "ButtonResetPassword": "إعادة تهيئة كلمة السر", - "ButtonRestart": "إعادة التشغيل", "ButtonResume": "استأنف", "ButtonRevoke": "أرفض", "ButtonSelectDirectory": "إختر الدليلة", - "ButtonSelectServer": "إختر الخادم", "ButtonSelectView": "إختر طريقة عرض", "ButtonSend": "إرسال", - "ButtonSettings": "الإعدادات", "ButtonShutdown": "إنهاء التشغيل", "ButtonSignIn": "تسجيل الدخول", "ButtonSignOut": "تسجيل الخروج", @@ -213,7 +207,6 @@ "HeaderSelectTranscodingPathHelp": "تصفح أو أدخل المسار الذي ترغب أن يُستخدم لملفات التشفير البيني. يجب أن يكون هذا المجلد قابل للكتابة فيه.", "HeaderSendMessage": "أرسل رسالة", "HeaderServerSettings": "إعدادات الخادم", - "HeaderSettings": "الإعدادات", "HeaderSetupLibrary": "ضبط مكتبة المحتوى الخاصة بك", "HeaderSortBy": "ترتيب حسب", "HeaderSortOrder": "تسلسل الترتيب", @@ -570,8 +563,6 @@ "NumLocationsValue": "{0} مجلد(ات)", "Option3D": "ثلاثي أبعاد", "OptionAdminUsers": "المدراء", - "OptionAlbum": "الألبوم", - "OptionAlbumArtist": "ألبوم الفنان", "OptionAllUsers": "جميع المستخدمين", "OptionAllowAudioPlaybackTranscoding": "تمكين تشغيل الصوت الذي يحتاج تشفيراً بينياً", "OptionAllowBrowsingLiveTv": "السماح للوصول إلى قنوات التلفزة الحية", @@ -586,21 +577,14 @@ "OptionAllowUserToManageServer": "إسمح لهذا المستخدم بالتحكم بالخادم", "OptionAllowVideoPlaybackRemuxing": "تمكين تشغيل الفيديو الذي يحتاج إلى التحويل من غير تشفير", "OptionAllowVideoPlaybackTranscoding": "تمكين تشغيل الفيديو الذي يحتاج تشفيراً بينياً", - "OptionArtist": "الفنان", - "OptionAscending": "تصاعدي", - "OptionAuto": "آلي", "OptionAutomaticallyGroupSeries": "إدمج الحلقات الموزعة بين عدة مجلدات إلى مجلد واحد تلقائياً.", "OptionAutomaticallyGroupSeriesHelp": "في حال التفعيل فإن الحلقات الموزعة بين عدة مجلدات ستدمج تلقائياً في مجلد مسلسل واحد.", - "OptionBlockBooks": "الكتب", "OptionBlockChannelContent": "محتوى قنوات الإنترنت", "OptionBlockLiveTvChannels": "قنوات التلفاز المباشر", - "OptionBlockMovies": "الأفلام", - "OptionBlockMusic": "الموسيقى", "OptionBlockTrailers": "العروض الإعلانية", "OptionBlockTvShows": "المسلسلات التلفزيونية", "OptionCaptionInfoExSamsung": "CaptionInfoEx (أجهزة سامسونج)", "OptionCommunityRating": "تقييم المجتمع", - "OptionContinuing": "متابعة", "OptionCriticRating": "تقييم النقاد", "OptionCustomUsers": "مخصوص", "OptionDaily": "يومي", @@ -608,17 +592,11 @@ "OptionDateAddedFileTime": "استخدم تاريخ إنشاء الملف", "OptionDateAddedImportTime": "استخدم تاريخ التمشيط في المكتبة", "OptionDatePlayed": "تاريخ التشغيل", - "OptionDescending": "تنازلي", "OptionDisableUser": "تعطيل هذا المستخدم", "OptionDisableUserHelp": "عند التعطيل، فلن يسمح الخادم لهذا المستخدم بالاتصال. وسيتم قطع الاتصالات الموجودة بشكل فوري.", "OptionDislikes": "المنكورات", "OptionDisplayFolderView": "استعراض المجلد كمجلد وسائط بسيطة", "OptionDisplayFolderViewHelp": "عند التفعيل، فإن تطبيقات أمبي ستعرض تصنيفات المجلدات إلى جانب إظهار مكتبة وسائطك. سيكون ذلك مفيد إن كنت تحب أن تستعرض المجلدات كمجلدات عرض بسيطة", - "OptionDownloadArtImage": "فنيات", - "OptionDownloadBackImage": "للخلف", - "OptionDownloadBannerImage": "اليافطة", - "OptionDownloadBoxImage": "الصندوق", - "OptionDownloadDiscImage": "القرص", "OptionDownloadImagesInAdvance": "أنزل الصور مسبقاً", "OptionDownloadLogoImage": "اللوغو", "OptionDownloadMenuImage": "القائمة", @@ -633,22 +611,17 @@ "OptionEnableForAllTuners": "تمكين كل أجهزة المولفات", "OptionEnableM2tsMode": "تفعيل طور M2ts", "OptionEnableM2tsModeHelp": "تفعيل طور M2ts عند التشفير إلى صيغة mpegts.", - "OptionEnded": "إنتهى", "OptionEquals": "تساوي", "OptionEstimateContentLength": "توقّع طور المحتوى حال التشفير", "OptionEveryday": "كل يوم", "OptionExternallyDownloaded": "الإنزال من الخارج", "OptionExtractChapterImage": "تفعيل استخلاص صور الأبواب", - "OptionFavorite": "المفضلات", "OptionHasSpecialFeatures": "المحتويات الخاصة", - "OptionHasSubtitles": "الترجمة", "OptionHasThemeSong": "أغنية الشارة", "OptionHasThemeVideo": "فيديو الشارة", - "OptionHasTrailer": "العرض الإعلاني", "OptionHideUser": "أخفي هذا المستخدم من شاشة الدخول", "OptionHideUserFromLoginHelp": "هذه مفيدة لحسابات المدراء المتخفّين أو الخصوصيين. على المستخدم في هذه الحالة أن يدخل بياناته يدوياً عبر إدخال اسم المستخدم وكلمة السر.", "OptionHlsSegmentedSubtitles": "ترجمات hsl مقطّعة", - "OptionHomeVideos": "الفيديوهات والصور المنزلية", "OptionIgnoreTranscodeByteRangeRequests": "تجاهل طلبات مديات البايتات أثناء التشفير البيني", "OptionIgnoreTranscodeByteRangeRequestsHelp": "عند التفعيل، فسيلتزم بهذه الطلبات ولكن سيتم تجاهل رؤوس مديات البايتات.", "OptionImdbRating": "تقييم IMDb", @@ -666,9 +639,7 @@ "OptionPlainVideoItems": "إظهار جميع الفيديوهات كعناصر فيديو بسيطة", "OptionPlainVideoItemsHelp": "عند التفعيل، فإن جميع الفيديوهات ستُمثّل في مخطط DIDL كالتالي: \"كائن.عنصر.عنصر_فيديو\" بدلاً من النوع الأكثر تخصيصاً كما يلي \"كائن.عنصر.عنصر_فيديو.فيلم\".", "OptionPlayCount": "مرات التشغيل", - "OptionPlayed": "معزوف", "OptionPremiereDate": "تاريخ العرض", - "OptionProfileAudio": "الصوتيات", "OptionProfilePhoto": "صور", "OptionProfileVideo": "الفيديو", "OptionProfileVideoAudio": "صوتي مرئي", @@ -679,14 +650,12 @@ "OptionRequirePerfectSubtitleMatch": "نزّل فقط الترجمات التي توافق بدقة ملفات الفيديو الخاصة بي", "OptionResElement": "عناصر res", "OptionResumable": "إمكانية التكملة", - "OptionRuntime": "زمن التشغيل", "OptionSaveMetadataAsHidden": "حفظ واصفات البيانات والصور كملفات مخفية", "OptionSaveMetadataAsHiddenHelp": "إن تغيير هذه سيطبق على واصفات البيانات الجديدة من الآن. أما واصفات البيانات الموجودة مسبقاً، فهي ستحدث من قبل الخادم في المرة القادمة التي يتم حفظها.", "OptionSpecialEpisode": "حصريات", "OptionTrackName": "اسم المقطوعة", "OptionTvdbRating": "تقييم Tvdb", "OptionUnairedEpisode": "حلفة لم تبثّ", - "OptionUnplayed": "غير معزوف", "OptionWakeFromSleep": "استيقظ من السبات", "OptionWeekdays": "أيام الأسبوع", "OptionWeekends": "أيام العطلة", @@ -741,12 +710,10 @@ "TabOther": "أخرى", "TabParentalControl": "التحكم الأبوي", "TabPlugins": "الملحقات", - "TabProfile": "عريضة", "TabProfiles": "الحسابات", "TabResponses": "الردود", "TabScheduledTasks": "المهام المجدولة", "TabServer": "الخادم", - "TabSettings": "الإعدادات", "TabStreaming": "التشغيل التدفقي", "TabUpcoming": "القادم", "TellUsAboutYourself": "اخبرنا عن نفسك", diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index a79650546c..43fa593637 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -30,7 +30,6 @@ "ButtonCancel": "Отмяна", "ButtonForgotPassword": "Забравена парола", "ButtonGotIt": "Добре", - "ButtonGuide": "Справочник", "ButtonInfo": "Сведения", "ButtonLibraryAccess": "Достъп до библиотеката", "ButtonManualLogin": "Вход с име и парола", @@ -41,18 +40,14 @@ "ButtonParentalControl": "Родителски контрол", "ButtonPause": "Пауза", "ButtonPreviousTrack": "Предишна пътека", - "ButtonProfile": "Профил", "ButtonQuickStartGuide": "Първи стъпки", "ButtonRefreshGuideData": "Обновяване на данните в справочника", "ButtonRemove": "Премахване", "ButtonRename": "Преименуване", - "ButtonResetPassword": "Зануляване на паролата", - "ButtonRestart": "Повторно пускане", "ButtonResume": "Продължаване", "ButtonScanAllLibraries": "Сканиране на всички библиотеки", "ButtonSelectDirectory": "Изберете папка", "ButtonSend": "Изпращане", - "ButtonSettings": "Настройки", "ButtonShutdown": "Загасяне", "ButtonSignIn": "Вписване", "ButtonSignOut": "Отписване", @@ -202,7 +197,6 @@ "HeaderSelectPath": "Изберете път", "HeaderSendMessage": "Изпращане на съобщение", "HeaderServerSettings": "Настройки на сървъра", - "HeaderSettings": "Настройки", "HeaderSetupLibrary": "Настройте своите медийни библиотеки", "HeaderSortBy": "Подреждане по", "HeaderSortOrder": "Ред на подреждане", @@ -454,8 +448,6 @@ "Off": "Изключено", "Option3D": "Триизмерни", "OptionAdminUsers": "Администратори", - "OptionAlbum": "Албум", - "OptionAlbumArtist": "Изпълнител на албума", "OptionAllUsers": "Всички потребители", "OptionAllowBrowsingLiveTv": "Разрешаване на телевизия на живо", "OptionAllowLinkSharing": "Разрешаване на споделяне в социалните медии", @@ -465,29 +457,17 @@ "OptionAllowRemoteSharedDevices": "Разрешаване на отдалечен контрол на споделени устройства", "OptionAllowRemoteSharedDevicesHelp": "DLNA устройства се считат за споделени докато някой потребител не започне да ги контролира.", "OptionAllowUserToManageServer": "Разрешаване на този потребител да управлява сървъра", - "OptionArtist": "Изпълнител", - "OptionAscending": "Възходящо", - "OptionAuto": "Автоматично", - "OptionBlockBooks": "Книги", - "OptionBlockMovies": "Филми", "OptionBlockTvShows": "Телевизионни сериали", "OptionCommunityRating": "Обществена ощенка", - "OptionContinuing": "Продължаващо", "OptionCriticRating": "Оценка на критиците", "OptionCustomUsers": "По избор", "OptionDaily": "Ежедневно", "OptionDateAdded": "Дата на добавяне", "OptionDatePlayed": "Дата на пускане", - "OptionDescending": "Низходящо", "OptionDisableUser": "Дезактивирайте този потребител", "OptionDisableUserHelp": "Ако е дезактивиран, сървърът няма да позволи каквито и да било връзки от този потребител. Съществуващите връзки ще бъдат внезапно прекратени.", "OptionDislikes": "Нехаресвания", "OptionDisplayFolderView": "Показване на изглед в папки", - "OptionDownloadArtImage": "Картина", - "OptionDownloadBackImage": "Задна част", - "OptionDownloadBannerImage": "Банер", - "OptionDownloadBoxImage": "Кутия", - "OptionDownloadDiscImage": "Диск", "OptionDownloadImagesInAdvance": "Предварително изтегляне на изображения", "OptionDownloadLogoImage": "Логотип", "OptionDownloadMenuImage": "Меню", @@ -497,18 +477,13 @@ "OptionEnableAccessFromAllDevices": "Позволяване на достъпа от всички устройства", "OptionEnableAccessToAllChannels": "Позволяване на достъпа до всички канали", "OptionEnableAccessToAllLibraries": "Позволяване на достъпа до всички библиотеки", - "OptionEnded": "Приключило", "OptionEveryday": "Всеки ден", "OptionExternallyDownloaded": "Външно сваляне", - "OptionFavorite": "Любими", "OptionHasSpecialFeatures": "Специални функции", - "OptionHasSubtitles": "Субтитри", "OptionHasThemeSong": "Фонова песен", "OptionHasThemeVideo": "Фоново видео", - "OptionHasTrailer": "Трейлър", "OptionHideUser": "Скриване на потребителя от страниците за вход", "OptionHideUserFromLoginHelp": "Полезно за частни или скрити администраторски профили. Потребителят ще трябва да влезе ръчно чрез въвеждане на потребителско име и парола.", - "OptionHomeVideos": "Снимки", "OptionImdbRating": "Оценка в IMDb", "OptionIsHD": "ВК", "OptionIsSD": "СК", @@ -522,20 +497,16 @@ "OptionPlainStorageFolders": "Показвай всички папки като папки за обикновено съхранение", "OptionPlainVideoItems": "Показвай всички видео клипове като обикновени", "OptionPlayCount": "Брой пускания", - "OptionPlayed": "Пускани", "OptionPremiereDate": "Дата на премиера", - "OptionProfileAudio": "Звук", "OptionProfilePhoto": "Снимка", "OptionProfileVideo": "Видео", "OptionProfileVideoAudio": "Видео Аудио", "OptionReleaseDate": "Дата на издаване", "OptionRequirePerfectSubtitleMatch": "Да се изтеглят само субтитри, които пасват идеално на файловете ми", "OptionResumable": "Възобновляемост", - "OptionRuntime": "Времетраене", "OptionSpecialEpisode": "Специални", "OptionTrackName": "Име на песента", "OptionUnairedEpisode": "Неизлъчени епизоди", - "OptionUnplayed": "Непускано", "OptionWakeFromSleep": "Събуждане от сън", "OptionWeekly": "Ежеседмично", "OriginalAirDateValue": "Дата на първоначално излъчване: {0}", @@ -626,12 +597,10 @@ "TabOther": "Други", "TabParentalControl": "Родителски контрол", "TabPlugins": "Приставки", - "TabProfile": "Профил", "TabProfiles": "Профили", "TabResponses": "Отговори", "TabScheduledTasks": "Планирани задачи", "TabServer": "Сървър", - "TabSettings": "Настройки", "TabStreaming": "Излъчване", "TabUpcoming": "Предстоящи", "Tags": "Етикети", @@ -719,7 +688,6 @@ "ButtonTrailer": "Предварителен откъс", "ButtonStart": "Пускане", "ButtonSelectView": "Изберете изглед", - "ButtonSelectServer": "Изберете сървър", "ButtonNetwork": "Мрежа", "ButtonFullscreen": "На цял екран", "AllowOnTheFlySubtitleExtraction": "Позволява моментално извличане на поднадписи", @@ -1369,7 +1337,6 @@ "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionBluray": "Блу-рей", "OptionBlockTrailers": "Трейлъри", - "OptionBlockMusic": "Музика", "OptionBlockLiveTvChannels": "Телевизионни канали на живо", "OptionBlockChannelContent": "Съдържание на интернет канала", "OptionBanner": "Банер", diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index 3f11b4f050..bd7a5f30c3 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -26,7 +26,6 @@ "ButtonMore": "আরও", "ButtonLibraryAccess": "লাইব্রেরি অ্যাক্সেস", "ButtonInfo": "তথ্য", - "ButtonGuide": "গাইড", "ButtonGotIt": "বুঝেছি", "ButtonFullscreen": "ফুলস্ক্রিন", "ButtonForgotPassword": "পাসওয়ার্ড ভুলে গেছি", @@ -77,10 +76,7 @@ "Aired": "উন্মুক্ত করন", "Add": "যোগ", "ButtonPreviousTrack": "পূর্ববর্তী ট্র্যাক", - "ButtonProfile": "প্রোফাইল", "ButtonResume": "রিসিউম", - "ButtonRestart": "রিস্টার্ট", - "ButtonResetPassword": "পাসওয়ার্ড রিসেট করুন", "ButtonResetEasyPassword": "সহজ পিন কোডটি রিসেট করুন", "ButtonRename": "নামান্তর", "ButtonRemove": "সরান", diff --git a/src/strings/ca.json b/src/strings/ca.json index c199cb2cbe..58677fbb8d 100644 --- a/src/strings/ca.json +++ b/src/strings/ca.json @@ -26,7 +26,6 @@ "ButtonEditOtherUserPreferences": "Edita el perfil, la imatge i les preferències d'aquest usuari.", "ButtonForgotPassword": "He oblidat la contrasenya", "ButtonGotIt": "Entesos", - "ButtonGuide": "Guia", "ButtonLibraryAccess": "Accés a la biblioteca", "ButtonManualLogin": "Inici de sessió manual", "ButtonMore": "Més", @@ -36,18 +35,13 @@ "ButtonParentalControl": "Control parental", "ButtonPause": "Pausa", "ButtonPreviousTrack": "Pista anterior", - "ButtonProfile": "Perfil", "ButtonQuickStartGuide": "Guia d'inici ràpid", "ButtonRefreshGuideData": "Refresca les Dades de la Guia", "ButtonRemove": "Elimina", "ButtonResetEasyPassword": "Reinicia el codi pin senzill", - "ButtonResetPassword": "Reiniciar Contrasenya", - "ButtonRestart": "Reiniciar", "ButtonResume": "Reprèn", "ButtonSelectDirectory": "Selecciona Directori", - "ButtonSelectServer": "Seleccionar servidor", "ButtonSend": "Envia", - "ButtonSettings": "Preferències", "ButtonShutdown": "Atura", "ButtonSignIn": "Inicia Sessió", "ButtonSignOut": "Tanca sessió", @@ -193,7 +187,6 @@ "HeaderSendMessage": "Enviar Missatge", "HeaderSeriesOptions": "Opcions de Sèries", "HeaderServerSettings": "Preferències del Servidor", - "HeaderSettings": "Preferències", "HeaderSetupLibrary": "Configura les teves biblioteques multimèdia", "HeaderSortBy": "Ordena per", "HeaderSortOrder": "Ordre de Classificació", @@ -440,7 +433,6 @@ "OnlyForcedSubtitles": "Només subtítols forçats", "OnlyForcedSubtitlesHelp": "Només es carregaran aquells subtítols marcats com a forçats.", "OptionAdminUsers": "Administradors", - "OptionAlbum": "Àlbum", "OptionAllUsers": "Tots els usuaris", "OptionAllowBrowsingLiveTv": "Permetre accés a TV en directe", "OptionAllowContentDownloading": "Permetre descàrrega de mitjans", @@ -452,26 +444,16 @@ "OptionAllowRemoteSharedDevices": "Permetre el control remot de dispositius compartits", "OptionAllowRemoteSharedDevicesHelp": "Els dispositius dlna es consideren compartits fins que un usuari comença a controlar-los.", "OptionAllowUserToManageServer": "Permet aquest usuari gestionar el servidor", - "OptionArtist": "Artista", - "OptionAscending": "Ascendent", - "OptionAuto": "Automàtc", - "OptionBlockBooks": "Llibres", - "OptionBlockMovies": "Pel·lícules", - "OptionBlockMusic": "Música", "OptionBlockTrailers": "Tràilers", "OptionCommunityRating": "Valoració de la Comunitat", - "OptionContinuing": "Continuant", "OptionCriticRating": "Valoració dels Crítics", "OptionDaily": "Diari", "OptionDateAdded": "Data Afegida", "OptionDateAddedImportTime": "Empra la data d'escaneig", "OptionDatePlayed": "Data de Reproducció", - "OptionDescending": "Descendent", "OptionDisableUser": "Desactiva aquest usuari", "OptionDisableUserHelp": "Si es desactiva el servidor no permetrà cap connexió des d'aquest usuari. Les connexions existents seran interrompudes abruptament.", "OptionDislikes": "No m'agrada", - "OptionDownloadBackImage": "Contra", - "OptionDownloadBoxImage": "Capsa", "OptionDownloadMenuImage": "Menú", "OptionDownloadPrimaryImage": "Primària", "OptionDownloadThumbImage": "Miniatura", @@ -480,19 +462,14 @@ "OptionEnableAccessToAllChannels": "Habilita l'accés a tots els canals", "OptionEnableAccessToAllLibraries": "Habilita l'accés a totes les biblioteques", "OptionEnableExternalContentInSuggestionsHelp": "Permet incloure tràilers d'internet i programes de TV en directe amb el continguts suggerits.", - "OptionEnded": "Acabades", "OptionEquals": "Equival", "OptionEveryday": "Cada dia", "OptionExternallyDownloaded": "Descàrrega externa", - "OptionFavorite": "Preferits", "OptionHasSpecialFeatures": "Característiques Especials", - "OptionHasSubtitles": "Subtítols", "OptionHasThemeSong": "Cançó Temàtica", "OptionHasThemeVideo": "Vídeo Temàtic", - "OptionHasTrailer": "Tràiler", "OptionHideUser": "Oculta aquest usuari de les pantalles de login", "OptionHideUserFromLoginHelp": "Pràctic per a comptes d'administrador ocults o privats. L'usuari necessitarà accedir manualment introduint el seu nom d'usuari i contrasenya.", - "OptionHomeVideos": "Fotos i vídeos domèstics", "OptionImdbRating": "Qualificació IMDb", "OptionLikes": "M'agrada", "OptionMissingEpisode": "Episodis Perduts", @@ -502,19 +479,15 @@ "OptionOnInterval": "En un interval", "OptionParentalRating": "Classificació Parental", "OptionPlayCount": "Nombre de Reproduccions", - "OptionPlayed": "Reproduït", - "OptionProfileAudio": "Àudio", "OptionProfilePhoto": "Foto", "OptionProfileVideo": "Vídeo", "OptionReleaseDate": "Data de Publicació", "OptionResumable": "Continuable", - "OptionRuntime": "Temps d'exec.", "OptionSaveMetadataAsHidden": "Desa les metadades i les imatges com a fitxers ocults", "OptionSpecialEpisode": "Especials", "OptionSubstring": "Subcadena", "OptionTvdbRating": "Valoració TVDB", "OptionUnairedEpisode": "Episodis No Emesos", - "OptionUnplayed": "No reproduït", "OptionWakeFromSleep": "Despertar", "OptionWeekdays": "Entre setmana", "OptionWeekends": "Cap de setmana", @@ -596,12 +569,10 @@ "TabOther": "Altres", "TabParentalControl": "Control Parental", "TabPlugins": "Complements", - "TabProfile": "Perfil", "TabProfiles": "Perfils", "TabResponses": "Respostes", "TabScheduledTasks": "Tasques Programades", "TabServer": "Servidor", - "TabSettings": "Preferències", "TabUpcoming": "Properament", "Tags": "Etiquetes", "TellUsAboutYourself": "Explica'ns sobre tu", diff --git a/src/strings/cs.json b/src/strings/cs.json index cf7b3cf2e9..198a8c32d1 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -47,7 +47,6 @@ "ButtonForgotPassword": "Zapomenuté heslo", "ButtonFullscreen": "Celá obrazovka", "ButtonGotIt": "Mám to", - "ButtonGuide": "Programový průvodce", "ButtonLibraryAccess": "Přístup ke knihovně", "ButtonManualLogin": "Manuální přihlášení", "ButtonMore": "Více", @@ -57,20 +56,16 @@ "ButtonParentalControl": "Rodičovská kontrola", "ButtonPause": "Pozastavit", "ButtonPreviousTrack": "Předchozí stopa", - "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Rychlý průvodce", "ButtonRefreshGuideData": "Obnovit data programového průvodce", "ButtonRemove": "Odstranit", "ButtonRename": "Přejmenovat", "ButtonResetEasyPassword": "Obnovit easy pin kód", - "ButtonResetPassword": "Obnovit heslo", "ButtonResume": "Pokračovat", "ButtonRevoke": "Odvolat", "ButtonSelectDirectory": "Vybrat složku", - "ButtonSelectServer": "Výběr serveru", "ButtonSelectView": "Výběr zobrazení", "ButtonSend": "Odeslat", - "ButtonSettings": "Nastavení", "ButtonShutdown": "Vypnout", "ButtonSignIn": "Přihlásit se", "ButtonSignOut": "Odhlásit se", @@ -318,7 +313,6 @@ "HeaderSendMessage": "Poslat zprávu", "HeaderSeriesOptions": "Nastavení seriálu", "HeaderServerSettings": "Nastavení serveru", - "HeaderSettings": "Nastavení", "HeaderSetupLibrary": "Nastavení Vašich knihoven médií", "HeaderSortBy": "Třídit dle", "HeaderSortOrder": "Pořadí třídění", @@ -758,7 +752,6 @@ "OnlyForcedSubtitles": "Pouze vynucené", "OnlyForcedSubtitlesHelp": "Jen vynucené titulky budou nahrány.", "OptionAdminUsers": "Administrátoři", - "OptionAlbumArtist": "Umělec Alba", "OptionAllUsers": "Všichni uživatelé", "OptionAllowAudioPlaybackTranscoding": "Povolit přehrávání audia, které vyžaduje překódování", "OptionAllowBrowsingLiveTv": "Povolit přístup k televiznímu vysílání", @@ -773,20 +766,13 @@ "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í", - "OptionArtist": "Umělec", - "OptionAscending": "Vzestupně", - "OptionAuto": "Automaticky", "OptionAutomaticallyGroupSeries": "Automatické sloučení k seriálu, které jsou ve více složkách", "OptionAutomaticallyGroupSeriesHelp": "Seriály uložené ve více složkách v této knihovně budou automaticky sloučeny do jednoho seriálu.", - "OptionBlockBooks": "Knihy", "OptionBlockChannelContent": "Obsah internetového kanálu", "OptionBlockLiveTvChannels": "Televizní kanály", - "OptionBlockMovies": "Filmy", - "OptionBlockMusic": "Hudba", "OptionBlockTrailers": "Upoutávky", "OptionBlockTvShows": "Televizní pořady", "OptionCommunityRating": "Hodnocení komunity", - "OptionContinuing": "Pokračování", "OptionCriticRating": "Hodnocení kritiků", "OptionCustomUsers": "Vlastní", "OptionDaily": "Denní", @@ -794,15 +780,11 @@ "OptionDateAddedFileTime": "Dle data vytvoření souboru", "OptionDateAddedImportTime": "Dle data přidání do knihovny", "OptionDatePlayed": "Datum přehrání", - "OptionDescending": "Sestupně", "OptionDisableUser": "Zablokovat tohoto uživatele", "OptionDisableUserHelp": "Server nedovolí tomuto uživateli žádné připojení. Existující připojení bude okamžitě přerušeno.", "OptionDislikes": "Nelíbí se", "OptionDisplayFolderView": "Zobrazit složku s originálním zobrazením složek médií", "OptionDisplayFolderViewHelp": "Zobrazte složky vedle vašich ostatních knihoven médií. To může být užitečné, pokud si přejete mít prosté zobrazení složky.", - "OptionDownloadArtImage": "Obal", - "OptionDownloadBackImage": "Zadek", - "OptionDownloadDiscImage": "Disk", "OptionDownloadImagesInAdvance": "Stáhnout obrázky pokročilejším způsobem", "OptionDownloadImagesInAdvanceHelp": "Ve výchozím nastavení se většina obrázků stahuje pouze na žádost klienta. Povolením této možnosti dojde ke stažení všech obrázků předem současně s importem nových médií. Může způsobit výrazně delší skenování knihoven.", "OptionDownloadMenuImage": "Nabídka", @@ -818,22 +800,17 @@ "OptionEnableForAllTuners": "Povolit pro všechna zařízení tunerů", "OptionEnableM2tsMode": "Povolit M2ts mód", "OptionEnableM2tsModeHelp": "Povolit režim M2TS při kódování do MPEGTS.", - "OptionEnded": "Ukončeno", "OptionEquals": "Je rovno", "OptionEstimateContentLength": "Odhadnout délku obsahu při překódování", "OptionEveryday": "Každý den", "OptionExternallyDownloaded": "Externí stažení", "OptionExtractChapterImage": "Povolit extrakci obrázků z videa", - "OptionFavorite": "Oblíbené", "OptionHasSpecialFeatures": "Speciální funkce", - "OptionHasSubtitles": "Titulky", "OptionHasThemeSong": "Tematická hudba", "OptionHasThemeVideo": "Tematické video", - "OptionHasTrailer": "Upoutávka", "OptionHideUser": "Skrýt tohoto uživatele z přihlašovacích obrazovek", "OptionHideUserFromLoginHelp": "Vhodné pro soukromé a administrátorské účty. Pro přihlášení musí uživatel manuálně zadat uživatelské jméno a heslo.", "OptionHlsSegmentedSubtitles": "Segmentované titulky HLS", - "OptionHomeVideos": "Fotky", "OptionIgnoreTranscodeByteRangeRequests": "Ignorovat požadavky na překódování rozsahy bajtů", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Tyto žádosti budou nadále plněny, ale budou ignorovány hlavičky bajtových rozsahů.", "OptionImdbRating": "Hodnocení IMDb", @@ -849,7 +826,6 @@ "OptionPlainVideoItems": "Zobrazit všechna videa jako s obyčejné video položky", "OptionPlainVideoItemsHelp": "Všechna videa jsou prezentována v DIDL jako \"object.item.videoItem\" místo konkrétnějšího typu, například \"object.item.videoItem.movie\".", "OptionPlayCount": "Počet přehrání", - "OptionPlayed": "Shlédnuto", "OptionPremiereDate": "Datum premiéry", "OptionProfilePhoto": "Fotografie", "OptionRegex": "Regexp", @@ -859,7 +835,6 @@ "OptionRequirePerfectSubtitleMatch": "Stahovat jen titulky, které perfektně sedí k mým video souborům", "OptionResElement": "Prvek \"res\"", "OptionResumable": "Pozastavavitelný", - "OptionRuntime": "Délka", "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í", @@ -867,7 +842,6 @@ "OptionTrackName": "Název skladby", "OptionTvdbRating": "Tvdb hodnocení", "OptionUnairedEpisode": "Neodvysílané epizody", - "OptionUnplayed": "Neshlédnuto", "OptionWakeFromSleep": "Probuzení ze spánku", "OptionWeekdays": "Pracovní dny", "OptionWeekends": "Víkendy", @@ -1001,11 +975,9 @@ "TabOther": "Další", "TabParentalControl": "Rodičovská kontrola", "TabPlugins": "Zásuvné moduly", - "TabProfile": "Profil", "TabProfiles": "Profily", "TabResponses": "Odpovědi", "TabScheduledTasks": "Naplánované úlohy", - "TabSettings": "Nastavení", "TabStreaming": "Streamování", "TabUpcoming": "Nadcházející", "Tags": "Tagy", @@ -1082,7 +1054,6 @@ "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", "ButtonOk": "Ok", - "ButtonRestart": "Restart", "ButtonScanAllLibraries": "Skenovat všechny knihovny", "ButtonStart": "Start", "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ě.", @@ -1222,20 +1193,16 @@ "NoNewDevicesFound": "Nebyla nalezena žádná nová zařízení. Chcete-li přidat nový tuner, zavřete tento dialog a zadejte informace o zařízení ručně.", "OnlyImageFormats": "Pouze obrazové formáty (VOBSUB, PGS, SUB, atd.)", "Option3D": "3D", - "OptionAlbum": "Album", "OptionAllowMediaPlaybackTranscodingHelp": "Omezení přístupu k překódování může způsobit selhání přehrávání v klientech kvůli nepodporovaným formátům médií.", "OptionAllowSyncTranscoding": "Povolit stahování a synchronizaci médií, které vyžaduje překódování", "OptionBluray": "Blu-ray", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", - "OptionDownloadBannerImage": "Banner", - "OptionDownloadBoxImage": "Krabice", "OptionDownloadLogoImage": "Logo", "OptionIsHD": "HD", "OptionIsSD": "SD", "OptionLoginAttemptsBeforeLockout": "Určuje, kolik chybných pokusů o přihlášení lze provést před zablokováním.", "OptionLoginAttemptsBeforeLockoutHelp": "0 znamená zdědění výchozí hodnoty 3 pokusů pro běžné uživatele a 5 pro administrátory. Nastavení na -1 deaktivuje funkci.", "OptionMax": "Max", - "OptionProfileAudio": "Audio", "OptionProfileVideo": "Video", "OptionProfileVideoAudio": "Video Audio", "OptionProtocolHls": "Přímý přenos z internetu", diff --git a/src/strings/da.json b/src/strings/da.json index e097d93dd2..fc16caa032 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -52,21 +52,16 @@ "ButtonOpen": "Åben", "ButtonParentalControl": "Forældrekontrol", "ButtonPreviousTrack": "Forrige spor", - "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Hurtig-start guide", "ButtonRefreshGuideData": "Opdater Guide data", "ButtonRemove": "Fjern", "ButtonRename": "Omdøb", "ButtonResetEasyPassword": "Nulstil pinkode", - "ButtonResetPassword": "Nulstil adgangskode", - "ButtonRestart": "Genstart", "ButtonResume": "Genoptag", "ButtonRevoke": "Invalider", "ButtonScanAllLibraries": "Skan Alle Biblioteker", "ButtonSelectDirectory": "Vælg mappe", - "ButtonSelectServer": "Vælg server", "ButtonSelectView": "Vælg visning", - "ButtonSettings": "Indstillinger", "ButtonShutdown": "Luk", "ButtonSignIn": "Log Ind", "ButtonSignOut": "Log ud", @@ -288,7 +283,6 @@ "HeaderSendMessage": "Send besked", "HeaderSeriesOptions": "Serieindstillinger", "HeaderServerSettings": "Serverindstillinger", - "HeaderSettings": "Indstillinger", "HeaderSetupLibrary": "Opsæt dine mediebiblioteker", "HeaderSortBy": "Sorter Efter", "HeaderSortOrder": "Sorteringsorden", @@ -699,7 +693,6 @@ "NumLocationsValue": "{0} mapper", "OneChannel": "En kanal", "OptionAdminUsers": "Administratore", - "OptionAlbumArtist": "Album-artist", "OptionAllUsers": "Alle brugere", "OptionAllowAudioPlaybackTranscoding": "Tillad lydafspilning der kræver transkodning", "OptionAllowBrowsingLiveTv": "Tillad adgang til live TV", @@ -716,18 +709,13 @@ "OptionAllowUserToManageServer": "Tillad denne bruger at administrere serveren", "OptionAllowVideoPlaybackRemuxing": "Tillad videoafspilning som kræver konvertering uden omkodning", "OptionAllowVideoPlaybackTranscoding": "Tillad videoafspilning der kræver transkodning", - "OptionAscending": "Stigende", "OptionAutomaticallyGroupSeries": "Flet automatisk serier der er spredt over adskillige mapper", "OptionAutomaticallyGroupSeriesHelp": "Hvis aktiveret, vil serier der er spredt over adskillige mapper i dette bibliotek blive samlet i én enkelt serie.", - "OptionBlockBooks": "Bøger", "OptionBlockChannelContent": "Internet kanalindhold", "OptionBlockLiveTvChannels": "Live TV-kanaler", - "OptionBlockMovies": "Film", - "OptionBlockMusic": "Musik", "OptionBlockTrailers": "Trailere", "OptionBlockTvShows": "TV serier", "OptionCommunityRating": "Fællesskabsvurdering", - "OptionContinuing": "Forsættes", "OptionCriticRating": "Kritikervurdering", "OptionCustomUsers": "Brugerdefineret", "OptionDaily": "Daglig", @@ -735,16 +723,11 @@ "OptionDateAddedFileTime": "Brug filen oprettelsesdato", "OptionDateAddedImportTime": "Brug datoen for indskanning", "OptionDatePlayed": "Dato for afspilning", - "OptionDescending": "Faldende", "OptionDisableUser": "Deaktiver denne bruger", "OptionDisableUserHelp": "Hvis deaktiveret vil serveren ikke tillade forbindelser fra denne bruger. Eksisterende forbindelser vil blive afbrudt øjeblikkeligt.", "OptionDislikes": "Ikke-Lide", "OptionDisplayFolderView": "Få vist en mappevisning til at se enkle mediemapper", "OptionDisplayFolderViewHelp": "Vis mapper sammen med dine andre mediebiblioteker. Dette kan være nyttigt, hvis du gerne vil have en almindelig mappevisning.", - "OptionDownloadArtImage": "Billede", - "OptionDownloadBackImage": "Bagside", - "OptionDownloadBoxImage": "Boks", - "OptionDownloadDiscImage": "Disk", "OptionDownloadImagesInAdvance": "Download billeder på forhånd", "OptionDownloadImagesInAdvanceHelp": "Som standard downloades de fleste billeder kun, når de anmodes fra en Jellyfin-app. Aktivér denne mulighed for at downloade alle billeder på forhånd, da nye medier importeres. Dette kan forårsage betydeligt længere biblioteksscanninger.", "OptionDownloadPrimaryImage": "Primær", @@ -759,21 +742,17 @@ "OptionEnableForAllTuners": "Aktiver for alle tuner-enheder", "OptionEnableM2tsMode": "Aktiver M2ts tilstand", "OptionEnableM2tsModeHelp": "Aktiver M2ts tilstand når der omkodes til mpegts.", - "OptionEnded": "Færdig", "OptionEquals": "Lig med", "OptionEstimateContentLength": "Estimer længden af indholdet når der transkodes", "OptionEveryday": "Hver dag", "OptionExternallyDownloaded": "Ekstern hentning", "OptionExtractChapterImage": "Aktiver udvinding af kapitelbillede", - "OptionFavorite": "Favoritter", "OptionHasSpecialFeatures": "Specielle egenskaber", - "OptionHasSubtitles": "Undertekster", "OptionHasThemeSong": "Temasang", "OptionHasThemeVideo": "Temavideo", "OptionHideUser": "Vis ikke denne bruger på loginsiden", "OptionHideUserFromLoginHelp": "Nyttigt for private kontoer eller skjulte administratorkontoer. Brugeren skal logge ind ved at skive sit brugernavn og adgangskode.", "OptionHlsSegmentedSubtitles": "HLS segmenterede undertekster", - "OptionHomeVideos": "Billeder", "OptionIgnoreTranscodeByteRangeRequests": "Ignorer forespørgsler vedrørende transcode byte interval", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Hvis aktiveret vil disse forespørgsler blive efterkommet, men byte range headeren ignoreret.", "OptionImdbRating": "IMDB bedømmelse", @@ -789,9 +768,7 @@ "OptionPlainVideoItems": "Vis alle videoer som standardvideo", "OptionPlainVideoItemsHelp": "Når dette er aktiveret, bliver alle videoer vist i DIDL som \"object.item.videoItem\" i stedet for mere specifikke typer, som f. eks. \"object.item.videoItem.movie\".", "OptionPlayCount": "Gange afspillet", - "OptionPlayed": "Afspillet", "OptionPremiereDate": "Præmieredato", - "OptionProfileAudio": "Lyd", "OptionProfilePhoto": "Foto", "OptionProfileVideoAudio": "Video lyd", "OptionReleaseDate": "Udgivelsesdato", @@ -799,7 +776,6 @@ "OptionReportByteRangeSeekingWhenTranscodingHelp": "Dette er krævet for nogle enheder der ikke er særligt gode til tidssøgning.", "OptionRequirePerfectSubtitleMatch": "Download kun undertekster der er perfekte matches for mine videofiler", "OptionResumable": "Kan genoptages", - "OptionRuntime": "Varighed", "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", @@ -807,7 +783,6 @@ "OptionTrackName": "Nummerets navn", "OptionTvdbRating": "TVDB bedømmelse", "OptionUnairedEpisode": "Ikke sendte episoder", - "OptionUnplayed": "Ikke afspillet", "OptionWakeFromSleep": "Vågner fra dvale", "OptionWeekdays": "Hverdage", "OptionWeekends": "Weekender", @@ -925,11 +900,9 @@ "TabOther": "Andet", "TabParentalControl": "Forældrekontrol", "TabPlugins": "Tilføjelser", - "TabProfile": "Profil", "TabProfiles": "Profiler", "TabResponses": "Svar", "TabScheduledTasks": "Planlagte opgaver", - "TabSettings": "Indstillinger", "TabUpcoming": "Kommende", "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.", @@ -1003,7 +976,6 @@ "Box": "Boks", "BoxRear": "Boks (bagside)", "BurnSubtitlesHelp": "Bestemmer om serveren skal brænde undertekster, når der afspilles transcoding videoer. Undgå dette vil forbedre ydelsen meget. Vælg Auto for at brænde billedbaserede formater (VOBSUB, PGS, SUB, IDX) og bestemte ASS- eller SSA-undertekster.", - "ButtonGuide": "Vejledning", "ButtonInfo": "Information", "ButtonOk": "Ok", "ButtonPause": "Pause", @@ -1175,16 +1147,11 @@ "OnlyForcedSubtitlesHelp": "Kun undertekster markeret som tvungne vil blive indlæst.", "OnlyImageFormats": "Kun billedformater (VOBSUB, PGS, SUB)", "Option3D": "3D", - "OptionAlbum": "Album", - "OptionArtist": "Kunstner", - "OptionAuto": "Automatisk", "OptionBanner": "Banner", "OptionBluray": "Blu-Ray", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", - "OptionDownloadBannerImage": "Bannere", "OptionDownloadLogoImage": "Logo", "OptionDownloadMenuImage": "Menu", - "OptionHasTrailer": "Forfilm", "OptionIsHD": "HD", "OptionIsSD": "SD", "OptionLikes": "Favoritter", diff --git a/src/strings/de.json b/src/strings/de.json index 756aa99ab4..54c8f4a539 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -59,7 +59,6 @@ "ButtonForgotPassword": "Passwort vergessen", "ButtonFullscreen": "Vollbild", "ButtonGotIt": "Verstanden", - "ButtonGuide": "TV Guide", "ButtonLibraryAccess": "Bibliothekszugang", "ButtonManualLogin": "Manuelle Anmeldung", "ButtonMore": "Mehr", @@ -68,22 +67,17 @@ "ButtonOpen": "Öffnen", "ButtonParentalControl": "Kindersicherung", "ButtonPreviousTrack": "Vorheriges Stück", - "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Schnellstart Anleitung", "ButtonRefreshGuideData": "Aktualisiere TV-Programmdaten", "ButtonRemove": "Entfernen", "ButtonRename": "Umbenennen", "ButtonResetEasyPassword": "Einfachen PIN zurücksetzen", - "ButtonResetPassword": "Passwort zurücksetzten", - "ButtonRestart": "Neustart", "ButtonResume": "Fortsetzen", "ButtonRevoke": "Zurücknehmen", "ButtonScanAllLibraries": "Scanne alle Bibliotheken", "ButtonSelectDirectory": "Wähle Verzeichnis", - "ButtonSelectServer": "Wähle Server", "ButtonSelectView": "Ansicht wählen", "ButtonSend": "senden", - "ButtonSettings": "Einstellungen", "ButtonShutdown": "Herunterfahren", "ButtonSignIn": "Einloggen", "ButtonSignOut": "Abmelden", @@ -361,7 +355,6 @@ "HeaderSeriesOptions": "Serienoptionen", "HeaderSeriesStatus": "Serienstatus", "HeaderServerSettings": "Server Einstellungen", - "HeaderSettings": "Einstellungen", "HeaderSetupLibrary": "Medienbibliotheken einrichten", "HeaderSortBy": "Sortiert nach", "HeaderSortOrder": "Sortierreihenfolge", @@ -831,7 +824,6 @@ "OnlyForcedSubtitlesHelp": "Nur Untertitel, die als erzwungen markiert wurden, werden geladen.", "OnlyImageFormats": "Nur Bildformate (VOBSUB, PGS, SUB)", "OptionAdminUsers": "Administratoren", - "OptionAlbumArtist": "Album-Interpret", "OptionAllUsers": "Alle Benutzer", "OptionAllowAudioPlaybackTranscoding": "Erlaube Audio-Wiedergabe die Transkodierung benötigt", "OptionAllowBrowsingLiveTv": "Erlaube Live TV Zugriff", @@ -848,19 +840,13 @@ "OptionAllowUserToManageServer": "Dieser Benutzer kann den Server managen", "OptionAllowVideoPlaybackRemuxing": "Erlaube Video-Wiedergabe mittels Konvertierung ohne Neu-Enkodierung", "OptionAllowVideoPlaybackTranscoding": "Erlaube Video-Wiedergabe die Transkodierung benötigt", - "OptionArtist": "Interpret", - "OptionAscending": "Aufsteigend", "OptionAutomaticallyGroupSeries": "Vermische Serieninhalte, die in verschiedenen Ordnern abgelegt sind", "OptionAutomaticallyGroupSeriesHelp": "Inhalte einer Serie in verschiedenen Ordnern werden innerhalb einer Bibliothek als eine Serie angezeigt.", - "OptionBlockBooks": "Bücher", "OptionBlockChannelContent": "Internet Channelinhalte", "OptionBlockLiveTvChannels": "Live-TV Kanäle", - "OptionBlockMovies": "Filme", - "OptionBlockMusic": "Musik", "OptionBlockTrailers": "Trailer", "OptionBlockTvShows": "TV Serien", "OptionCommunityRating": "Community Bewertung", - "OptionContinuing": "Fortlaufend", "OptionCriticRating": "Kritiker Bewertung", "OptionCustomUsers": "Benutzer", "OptionDaily": "Täglich", @@ -868,15 +854,11 @@ "OptionDateAddedFileTime": "Benutze das Erstellungsdatum der Datei", "OptionDateAddedImportTime": "Benutze das Scandatum vom Hinzufügen in die Bibliothek", "OptionDatePlayed": "Gesehen am", - "OptionDescending": "Absteigend", "OptionDisableUser": "Sperre diesen Benutzer", "OptionDisableUserHelp": "Der Server keine Verbindung von diesem Benutzer erlauben. Bestehende Verbindungen werden sofort beendet.", "OptionDislikes": "Mag ich nicht", "OptionDisplayFolderView": "Darstellung in Verzeichnisansicht zeigt Medien Verzechnisse", "OptionDisplayFolderViewHelp": "Zeige eine Verzeichnisansicht neben deinen Bibliotheken an. Dies kann praktisch sein, wenn man nur Verzeichnisansichten verwendet.", - "OptionDownloadArtImage": "Kunst", - "OptionDownloadBackImage": "Zurück", - "OptionDownloadDiscImage": "Disk", "OptionDownloadImagesInAdvance": "Bilder vorab herunterladen", "OptionDownloadImagesInAdvanceHelp": "Standardmäßig werden die meisten Bilder erst dann heruntergeladen, wenn ein Client diese anfragt. Schalten Sie diese Option ein um alle Bilder im Voraus herunterzuladen, wenn neue Medien importiert werden. Diese Einstellung kann zu signifikant längeren Bibliothekscans führen.", "OptionDownloadMenuImage": "Menü", @@ -891,21 +873,17 @@ "OptionEnableForAllTuners": "Aktiviere für alle Tuner", "OptionEnableM2tsMode": "Aktiviere M2TS Modus", "OptionEnableM2tsModeHelp": "Aktiviere M2TS Modus beim Encodieren nach MPEGTS.", - "OptionEnded": "Beendent", "OptionEquals": "Gleiche", "OptionEstimateContentLength": "Voraussichtliche Inhaltslänge beim Transkodieren", "OptionEveryday": "Täglich", "OptionExternallyDownloaded": "Externer Download", "OptionExtractChapterImage": "Aktiviere Kapitelbild-Extrahierung", - "OptionFavorite": "Favoriten", "OptionHasSpecialFeatures": "Besonderes Merkmal", - "OptionHasSubtitles": "Untertitel", "OptionHasThemeSong": "Titellied", "OptionHasThemeVideo": "Titelvideo", "OptionHideUser": "Verberge diesen Benutzer in den Anmeldebildschirmen", "OptionHideUserFromLoginHelp": "Hilfreich für private oder versteckte Administrator-Konten. Der Benutzer muss sich manuell mit der Eingabe des Benutzernamens und Passworts anmelden.", "OptionHlsSegmentedSubtitles": "HLS segmentierte Untertitel", - "OptionHomeVideos": "Fotos", "OptionIgnoreTranscodeByteRangeRequests": "Ignoriere Anfragen für Transkodierbytebereiche", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Diese Anfragen werden berücksichtigt, aber den Byte-Range-Header ignorieren.", "OptionImdbRating": "IMDb Bewertung", @@ -920,7 +898,6 @@ "OptionPlainVideoItems": "Zeige alle Videos als reine Videodateien an", "OptionPlainVideoItemsHelp": "Alle Videos werden in DIDL als \"object.item.videoItem\" angezeigt, anstatt eines spezifischen Typs wie beispielsweise \"object.item.videoItem.movie\".", "OptionPlayCount": "Zähler", - "OptionPlayed": "Gesehen", "OptionPremiereDate": "Premiere", "OptionReleaseDate": "Veröffentlichungsdatum", "OptionReportByteRangeSeekingWhenTranscoding": "Teilt die Unterstützung der Bytesuche während des transkodierens auf dem Server mit", @@ -929,12 +906,10 @@ "OptionRequirePerfectSubtitleMatchHelp": "Perfektes Ergebnis wählt beim Filtern nur Untertitel, welche getestet und für deine exakte Videodatei verifiziert wurden. Die Abwahl dieser Option erhöht die Chance, dass Untertitel heruntergeladen werden, die Möglichkeit falscher Untertitel oder dass Text an falschen Positionen angezeigt wird ist aber ebenfalls größer.", "OptionResElement": "Res Element", "OptionResumable": "Fortsetzen", - "OptionRuntime": "Dauer", "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.", "OptionTvdbRating": "TVDB Bewertung", "OptionUnairedEpisode": "Nicht ausgestrahlte Episoden", - "OptionUnplayed": "Ungesehen", "OptionWakeFromSleep": "Aufwachen nach dem Schlafen", "OptionWeekdays": "Wöchentlich", "OptionWeekends": "An Wochenenden", @@ -1082,11 +1057,9 @@ "TabNotifications": "Benachrichtigungen", "TabOther": "Andere", "TabParentalControl": "Kindersicherung", - "TabProfile": "Profil", "TabProfiles": "Profile", "TabResponses": "Antworten", "TabScheduledTasks": "Geplante Aufgaben", - "TabSettings": "Einstellungen", "TabUpcoming": "Bevorstehend", "TellUsAboutYourself": "Sagen Sie uns etwas über sich selbst", "ThemeSongs": "Titelsongs", @@ -1205,17 +1178,12 @@ "MediaInfoInterlaced": "Interlaced/Zeilensprungverfahren", "MediaInfoLevel": "Level", "Option3D": "3D", - "OptionAlbum": "Album", - "OptionAuto": "Auto", "OptionBluray": "Blu-ray", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", - "OptionDownloadBannerImage": "Banner", "OptionDownloadLogoImage": "Logo", - "OptionHasTrailer": "Trailer", "OptionIsHD": "HD", "OptionIsSD": "SD", "OptionNameSort": "Name", - "OptionProfileAudio": "Audio", "OptionProfilePhoto": "Foto", "OptionProfileVideo": "Video", "OptionProtocolHls": "HTTP-Live-Streaming", @@ -1273,7 +1241,6 @@ "MediaInfoStreamTypeSubtitle": "Untertitel", "MediaInfoStreamTypeVideo": "Video", "MessageNoCollectionsAvailable": "Sammlungen ermöglichen es, personalisierte Gruppierungen von Filmen, Serien und Alben zu genießen. Klicken Sie auf die Schaltfläche +, um mit der Erstellung von Sammlungen zu beginnen.", - "OptionDownloadBoxImage": "Box", "OptionLoginAttemptsBeforeLockout": "Legt fest, wie viele falsche Anmeldeversuche durchgeführt werden können, bevor es zur Sperrung kommt.", "OptionLoginAttemptsBeforeLockoutHelp": "Null (0) bedeutet den Standardwert von drei Versuchen für normale, sowie fünf für Administrator-Benutzer zu übernehmen. Ein Wert von -1 deaktiviert die Funktion.", "PasswordResetProviderHelp": "Wählen Sie einen Password Reset Provider, der verwendet werden soll, wenn dieser Benutzer ein Passwort zurücksetzen möchte.", diff --git a/src/strings/el.json b/src/strings/el.json index 7ee61d2b62..3abf40e981 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -57,7 +57,6 @@ "ButtonForgotPassword": "Ξέχασα τον κωδικό", "ButtonFullscreen": "Πλήρης οθόνη", "ButtonGotIt": "Το κατάλαβα", - "ButtonGuide": "Οδηγός", "ButtonInfo": "Πληροφορία", "ButtonLibraryAccess": "Πρόσβαση στη βιβλιοθήκη", "ButtonManualLogin": "Χειροκίνητη Είσοδος", @@ -67,22 +66,17 @@ "ButtonParentalControl": "Γονικός έλεγχος", "ButtonPause": "Παύση", "ButtonPreviousTrack": "Προηγουμενο", - "ButtonProfile": "Προφίλ", "ButtonQuickStartGuide": "Οδηγός Γρήγορης Εκκίνησης", "ButtonRefreshGuideData": "Ανανέωση Δεδομένων Οδηγού", "ButtonRemove": "Κατάργηση", "ButtonRename": "Μετονομασία", "ButtonResetEasyPassword": "Επαναφορά εύκολου κωδικού PIN", - "ButtonResetPassword": "Επαναφορά του κωδικού πρόσβασης", - "ButtonRestart": "Επανεκκίνηση", "ButtonResume": "Συνέχιση", "ButtonRevoke": "Ανακαλώ", "ButtonScanAllLibraries": "Σάρωση όλων των βιβλιοθηκών", "ButtonSelectDirectory": "Επιλογή Φακέλου", - "ButtonSelectServer": "Επιλογή Διακομιστή", "ButtonSelectView": "Επιλέξτε Προβολή", "ButtonSend": "Αποστολή", - "ButtonSettings": "Ρυθμίσεις", "ButtonShutdown": "Απενεργοποίηση", "ButtonSignIn": "Είσοδος", "ButtonSignOut": "Έξοδος", @@ -331,7 +325,6 @@ "HeaderSeriesOptions": "Επιλογές Σειρών", "HeaderSeriesStatus": "Κατάσταση Σειράς", "HeaderServerSettings": "Ρυθμίσεις διακομιστή", - "HeaderSettings": "Ρυθμίσεις", "HeaderSetupLibrary": "Ρυθμίστε τις βιβλιοθήκες πολυμέσων σας", "HeaderSortBy": "Ταξινόμηση κατά", "HeaderSortOrder": "Σειρά ταξινόμησης", @@ -738,8 +731,6 @@ "OnlyForcedSubtitlesHelp": "Μόνο οι υπότιτλοι που έχουν επισημανθεί ως αναγκασμένοι θα φορτωθούν.", "OnlyImageFormats": "Μόνο μορφές εικόνων (VOBSUB, PGS, SUB / IDX κ.λπ.)", "OptionAdminUsers": "Διαχειριστές", - "OptionAlbum": "Άλμπουμ", - "OptionAlbumArtist": "άλμπουμ Καλλιτέχνες", "OptionAllUsers": "Ολοι οι χρήστες", "OptionAllowAudioPlaybackTranscoding": "Επέτρεψε την αναπαραγωγή μουσικής που χρειάζεται αναπροσαρμογή", "OptionAllowBrowsingLiveTv": "ΖΩΝΤΑΝΗ ΤΗΛΕΩΡΑΣΗ", @@ -756,34 +747,21 @@ "OptionAllowUserToManageServer": "Επιτρέψτε σε αυτόν τον χρήστη να διαχειρίζεται το διακομιστή", "OptionAllowVideoPlaybackRemuxing": "Επέτρεψε την αναπαραγωγή βίντεο που χρειάζεται αναπροσαρμογή", "OptionAllowVideoPlaybackTranscoding": "Επέτρεψε την αναπαραγωγή βίντεο που χρειάζεται αναπροσαρμογή", - "OptionArtist": "Καλλιτέχνες", - "OptionAscending": "Αύξουσα", - "OptionAuto": "Αυτόματο", - "OptionBlockBooks": "Βιβλία", "OptionBlockChannelContent": "Περιεχόμενο Διαδικτυακών Καναλιών", "OptionBlockLiveTvChannels": "ΚΑΝΑΛΙΑ ΖΩΝΤΑΝΗΣ ΤΗΛΕΟΡΑΣΗΣ", - "OptionBlockMovies": "Ταινίες", - "OptionBlockMusic": "Μουσική", "OptionBlockTvShows": "Τηλεοπτικά προγράμματα", "OptionCommunityRating": "Βαθμολογία Κοινότητας", - "OptionContinuing": "Συνέχιση", "OptionCriticRating": "Βαθμολογία κριτικών", "OptionCustomUsers": "Προσαρμοσμένο", "OptionDaily": "Καθημερινά", "OptionDateAdded": "Ημερομηνία Προσθήκης", "OptionDateAddedFileTime": "Χρήση της ημερομηνίας δημιουργίας αρχείου", "OptionDatePlayed": "Ημερομηνία Αναπαραγωγής", - "OptionDescending": "Φθίνουσα", "OptionDisableUser": "Απενεργοποιήση Χρήστη", "OptionDisableUserHelp": "Αν απενεργοποιηθεί, ο διακομιστής δεν θα επιτρέψει οποιεσδήποτε συνδέσεις από αυτόν τον χρήστη. Οι υπάρχουσες συνδέσεις τερματίζονται απότομα.", "OptionDislikes": "Αντιπαθεί", "OptionDisplayFolderView": "Εμφάνιση μιας προβολής φακέλου για την εμφάνιση φακέλων απλού μέσου", "OptionDisplayFolderViewHelp": "Εάν ενεργοποιηθεί, οι εφαρμογές Jellyfin θα εμφανίζουν μια κατηγορία φακέλων παράλληλα με τη βιβλιοθήκη πολυμέσων. Αυτό είναι χρήσιμο αν θέλετε να έχετε προβολές απλού φακέλου.", - "OptionDownloadArtImage": "Τέχνη", - "OptionDownloadBackImage": "Πίσω", - "OptionDownloadBannerImage": "Πανό", - "OptionDownloadBoxImage": "Κουτί", - "OptionDownloadDiscImage": "Δίσκος", "OptionDownloadImagesInAdvance": "Κατεβάστε εικόνες εκ των προτέρων", "OptionDownloadImagesInAdvanceHelp": "Από προεπιλογή, οι περισσότερες εικόνες μεταφορτώνονται μόνο όταν ζητούνται από μια εφαρμογή Jellyfin. Ενεργοποιήστε αυτήν την επιλογή για να κάνετε λήψη όλων των εικόνων εκ των προτέρων, καθώς εισάγονται νέα μέσα. Αυτό μπορεί να προκαλέσει σημαντικά μεγαλύτερες σαρώσεις βιβλιοθήκης.", "OptionDownloadMenuImage": "Μενού", @@ -794,19 +772,14 @@ "OptionEnableAccessToAllLibraries": "Πρόσβαση σε όλες τις Βιβλιοθήκες", "OptionEnableExternalContentInSuggestionsHelp": "Να επιτρέπεται η συμπερίληψη internet trailers και προγράμματα live tv στο προτεινόμενο περιεχόμενο.", "OptionEnableM2tsMode": "Ενεργοποίηση λειτουργίας M2ts", - "OptionEnded": "Τέλος", "OptionEquals": "Ίσα", "OptionEveryday": "Κάθε μέρα", "OptionExternallyDownloaded": "Εξωτερική λήψη", - "OptionFavorite": "Αγαπημένα", "OptionHasSpecialFeatures": "Ειδικά Χαρακτηριστικά", - "OptionHasSubtitles": "Υπότιτλοι", "OptionHasThemeSong": "Θεματικό Τραγούδι", "OptionHasThemeVideo": "Θεματικό Βίντεο", - "OptionHasTrailer": "Τρέϊλερ", "OptionHideUser": "Απόκρυψη αυτού του χρήστη από τις οθόνες σύνδεσης", "OptionHideUserFromLoginHelp": "Χρήσιμο για ιδιωτικούς ή κρυφό λογαριασμούς διαχειριστή. Ο χρήστης θα πρέπει να συνδεθεί χειροκίνητα εισάγοντας το όνομα χρήστη και τον κωδικό πρόσβασής του.", - "OptionHomeVideos": "Προσωπικά βίντεο & φωτογραφίες", "OptionImdbRating": "Βαθμολογία IMDb", "OptionLikes": "Συμπαθεί", "OptionMax": "Μέγιστο", @@ -821,9 +794,7 @@ "OptionPlainVideoItems": "Εμφάνιση όλων των βίντεο ως στοιχείων απλού βίντεο", "OptionPlainVideoItemsHelp": "Εάν ενεργοποιηθεί, όλα τα βίντεο αντιπροσωπεύονται στο DIDL ως \"object.item.videoItem\" αντί για έναν πιο συγκεκριμένο τύπο, όπως \"object.item.videoItem.movie\".", "OptionPlayCount": "Φορές Αναπαραγωγής", - "OptionPlayed": "Αναπαράχθηκε", "OptionPremiereDate": "Ημερομηνία πρεμιέρας", - "OptionProfileAudio": "Ήχος", "OptionProfileVideo": "Βίντεο", "OptionReleaseDate": "Ημερομηνία Προβολής", "OptionResumable": "Αναληπτέος", @@ -832,7 +803,6 @@ "OptionTrackName": "Όνομα Αρχείου", "OptionTvdbRating": "Tvdb Βαθμολογία", "OptionUnairedEpisode": "Επεισόδια που δεν προβλήθηκαν", - "OptionUnplayed": "Δεν παίχθηκε", "OptionWakeFromSleep": "Επανεργοποιήση", "OptionWeekdays": "Καθημερινές", "OptionWeekends": "Σαββατοκύριακα", @@ -971,12 +941,10 @@ "TabOther": "Άλλα", "TabParentalControl": "Γονικός έλεγχος", "TabPlugins": "Πρόσθετα", - "TabProfile": "Προφίλ", "TabProfiles": "Προφίλ", "TabResponses": "Απαντήσεις", "TabScheduledTasks": "Προγραμματισμένες Εργασίες", "TabServer": "Διακομιστής", - "TabSettings": "Ρυθμισεις", "TabStreaming": "Ροή", "TabUpcoming": "Επερχόμενα", "Tags": "Ετικέτες", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index d44183a4a8..62893a62fb 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -21,7 +21,6 @@ "NewCollectionHelp": "Collections allow you to create personalized groupings of movies and other library content.", "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialogueand enter the device information manually.", "OptionEnableExternalContentInSuggestionsHelp": "Allow internet trailers and live TV programs to be included within suggested content.", - "OptionFavorite": "Favourites", "OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honoured but will ignore the byte range header.", "PlaceFavoriteChannelsAtBeginning": "Place favourite channels at the beginning", "Programs": "Programs", @@ -109,7 +108,6 @@ "ButtonForgotPassword": "Forgot Password", "ButtonFullscreen": "Fullscreen", "ButtonGotIt": "Got It", - "ButtonGuide": "Guide", "ButtonInfo": "Info", "ButtonLibraryAccess": "Library access", "ButtonManualLogin": "Manual Login", @@ -121,22 +119,17 @@ "ButtonParentalControl": "Parental control", "ButtonPause": "Pause", "ButtonPreviousTrack": "Previous track", - "ButtonProfile": "Profile", "ButtonQuickStartGuide": "Quick Start Guide", "ButtonRefreshGuideData": "Refresh Guide Data", "ButtonRemove": "Remove", "ButtonRename": "Rename", "ButtonResetEasyPassword": "Reset easy pin code", - "ButtonResetPassword": "Reset Password", - "ButtonRestart": "Restart", "ButtonResume": "Resume", "ButtonRevoke": "Revoke", "ButtonScanAllLibraries": "Scan All Libraries", "ButtonSelectDirectory": "Select Directory", - "ButtonSelectServer": "Select Server", "ButtonSelectView": "Select view", "ButtonSend": "Send", - "ButtonSettings": "Settings", "ButtonShutdown": "Shutdown", "ButtonSignIn": "Sign In", "ButtonSignOut": "Sign Out", @@ -423,7 +416,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", - "TabSettings": "Settings", "TabServer": "Server", "TabScheduledTasks": "Scheduled Tasks", "TabResponses": "Responses", @@ -546,7 +538,6 @@ "OptionWeekends": "Weekends", "OptionWeekdays": "Weekdays", "OptionWakeFromSleep": "Wake from sleep", - "OptionUnplayed": "Unplayed", "OptionUnairedEpisode": "Unaired Episodes", "OptionTrackName": "Track Name", "OptionThumbCard": "Thumb card", @@ -555,7 +546,6 @@ "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", - "OptionRuntime": "Runtime", "OptionResumable": "Resumable", "OptionResElement": "res element", "OptionRequirePerfectSubtitleMatchHelp": "Requiring a perfect match will filter subtitles to include only those that have been tested and verified with your exact video file. Unchecking this will increase the likelihood of subtitles being downloaded, but will increase the chances of mistimed or incorrect subtitle text.", @@ -564,7 +554,6 @@ "OptionReportByteRangeSeekingWhenTranscoding": "Report that the server supports byte seeking when transcoding", "OptionRegex": "Regex", "OptionProfileVideo": "Video", - "OptionProfileAudio": "Audio", "OptionPremiereDate": "Premiere Date", "OptionPlayCount": "Play Count", "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\".", @@ -582,12 +571,10 @@ "OptionDatePlayed": "Date Played", "OptionBlockTvShows": "TV Shows", "OptionBlockTrailers": "Trailers", - "OptionBlockMovies": "Movies", "OptionBlockChannelContent": "Internet Channel Content", "OptionBanner": "Banner", "OptionAutomaticallyGroupSeriesHelp": "If enabled, series that are spread across multiple folders within this library will be automatically merged into a single series.", "OptionAutomaticallyGroupSeries": "Automatically merge series that are spread across multiple folders", - "OptionArtist": "Artist", "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", "OptionAllowVideoPlaybackRemuxing": "Allow video playback that requires conversion without re-encoding", "OptionAllowUserToManageServer": "Allow this user to manage the server", @@ -603,8 +590,6 @@ "OptionAllowBrowsingLiveTv": "Allow Live TV access", "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", "OptionAllUsers": "All users", - "OptionAlbumArtist": "Album Artist", - "OptionAlbum": "Album", "Option3D": "3D", "OnlyImageFormats": "Only Image Formats (VOBSUB, PGS, SUB)", "OnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", @@ -859,7 +844,6 @@ "LabelDefaultUserHelp": "Determines which user library should be displayed on connected devices. This can be overridden for each device using profiles.", "TabStreaming": "Streaming", "TabProfiles": "Profiles", - "TabProfile": "Profile", "TabPlugins": "Plugins", "TabNfoSettings": "NFO Settings", "TabNetworking": "Networking", @@ -1113,7 +1097,6 @@ "OptionProfileVideoAudio": "Video Audio", "OptionPosterCard": "Poster card", "OptionPoster": "Poster", - "OptionPlayed": "Played", "OneChannel": "One channel", "MediaInfoChannels": "Channels", "MediaInfoBitDepth": "Bit depth", @@ -1154,7 +1137,6 @@ "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", "OptionDateAdded": "Date Added", "OptionDaily": "Daily", - "OptionContinuing": "Continuing", "OptionCommunityRating": "Community Rating", "MessageUnsetContentHelp": "Content will be displayed as plain folders. For best results use the metadata manager to set the content types of sub-folders.", "LabelSelectVersionToInstall": "Select version to install:", @@ -1164,19 +1146,15 @@ "OptionIsHD": "HD", "OptionImdbRating": "IMDb Rating", "OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests", - "OptionHomeVideos": "Photos", "OptionHlsSegmentedSubtitles": "HLS segmented subtitles", "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", "OptionHideUser": "Hide this user from login screens", - "OptionHasTrailer": "Trailer", "OptionHasThemeVideo": "Theme Video", "OptionHasThemeSong": "Theme Song", - "OptionHasSubtitles": "Subtitles", "OptionHasSpecialFeatures": "Special Features", "OptionExtractChapterImage": "Enable chapter image extraction", "OptionExternallyDownloaded": "External download", "OptionEquals": "Equals", - "OptionEnded": "Ended", "OptionEnableM2tsModeHelp": "Enable m2ts mode when encoding to mpegts.", "OptionEnableM2tsMode": "Enable M2ts mode", "OptionEnableExternalContentInSuggestions": "Enable external content in suggestions", @@ -1190,11 +1168,6 @@ "OptionDownloadLogoImage": "Logo", "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.", "OptionDownloadImagesInAdvance": "Download images in advance", - "OptionDownloadDiscImage": "Disc", - "OptionDownloadBoxImage": "Box", - "OptionDownloadBannerImage": "Banner", - "OptionDownloadBackImage": "Back", - "OptionDownloadArtImage": "Art", "OptionDisplayFolderView": "Display a folder view to show plain media folders", "LabelMovieRecordingPath": "Movie recording path (optional):", "LabelMoviePrefixHelp": "If a prefix is applied to movie titles, enter it here so the server can handle it properly.", @@ -1233,18 +1206,13 @@ "OptionDisplayFolderViewHelp": "Display folders alongside your other media libraries. This can be useful if you'd like to have a plain folder view.", "OptionDislikes": "Dislikes", "OptionDisableUser": "Disable this user", - "OptionDescending": "Descending", "OptionDateAddedImportTime": "Use date scanned into the library", "OptionDateAddedFileTime": "Use file creation date", "OptionCustomUsers": "Custom", "OptionCriticRating": "Critic Rating", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionBluray": "Blu-ray", - "OptionBlockMusic": "Music", "OptionBlockLiveTvChannels": "Live TV Channels", - "OptionBlockBooks": "Books", - "OptionAuto": "Auto", - "OptionAscending": "Ascending", "OptionAdminUsers": "Administrators", "NoSubtitleSearchResultsFound": "No results found.", "News": "News", @@ -1277,7 +1245,6 @@ "HeaderSortOrder": "Sort Order", "HeaderSortBy": "Sort By", "HeaderSetupLibrary": "Setup your media libraries", - "HeaderSettings": "Settings", "HeaderServerSettings": "Server Settings", "HeaderSeriesStatus": "Series Status", "HeaderSeriesOptions": "Series Options", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index f87c1a326e..7fbdfe4d1f 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -75,7 +75,6 @@ "ButtonForgotPassword": "Forgot Password", "ButtonFullscreen": "Fullscreen", "ButtonGotIt": "Got It", - "ButtonGuide": "Guide", "ButtonInfo": "Info", "ButtonLibraryAccess": "Library access", "ButtonManualLogin": "Manual Login", @@ -87,22 +86,17 @@ "ButtonParentalControl": "Parental control", "ButtonPause": "Pause", "ButtonPreviousTrack": "Previous track", - "ButtonProfile": "Profile", "ButtonQuickStartGuide": "Quick Start Guide", "ButtonRefreshGuideData": "Refresh Guide Data", "ButtonRemove": "Remove", "ButtonRename": "Rename", "ButtonResetEasyPassword": "Reset easy pin code", - "ButtonResetPassword": "Reset Password", - "ButtonRestart": "Restart", "ButtonResume": "Resume", "ButtonRevoke": "Revoke", "ButtonScanAllLibraries": "Scan All Libraries", "ButtonSelectDirectory": "Select Directory", - "ButtonSelectServer": "Select Server", "ButtonSelectView": "Select view", "ButtonSend": "Send", - "ButtonSettings": "Settings", "ButtonShutdown": "Shutdown", "ButtonSignIn": "Sign In", "ButtonSignOut": "Sign Out", @@ -425,7 +419,6 @@ "HeaderSeriesStatus": "Series Status", "HeaderServerAddressSettings": "Server Address Settings", "HeaderServerSettings": "Server Settings", - "HeaderSettings": "Settings", "HeaderSetupLibrary": "Setup your media libraries", "HeaderSortBy": "Sort By", "HeaderSortOrder": "Sort Order", @@ -1028,8 +1021,6 @@ "OnlyImageFormats": "Only Image Formats (VOBSUB, PGS, SUB)", "Option3D": "3D", "OptionAdminUsers": "Administrators", - "OptionAlbum": "Album", - "OptionAlbumArtist": "Album Artist", "OptionAllUsers": "All users", "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", "OptionForceRemoteSourceTranscoding": "Force transcoding of remote media sources (like LiveTV)", @@ -1047,23 +1038,16 @@ "OptionAllowUserToManageServer": "Allow this user to manage the server", "OptionAllowVideoPlaybackRemuxing": "Allow video playback that requires conversion without re-encoding", "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", - "OptionArtist": "Artist", - "OptionAscending": "Ascending", - "OptionAuto": "Auto", "OptionAutomaticallyGroupSeries": "Automatically merge series that are spread across multiple folders", "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", "OptionBlockLiveTvChannels": "Live TV Channels", - "OptionBlockMovies": "Movies", - "OptionBlockMusic": "Music", "OptionBlockTrailers": "Trailers", "OptionBlockTvShows": "TV Shows", "OptionBluray": "Blu-ray", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionCommunityRating": "Community Rating", - "OptionContinuing": "Continuing", "OptionCriticRating": "Critic Rating", "OptionCustomUsers": "Custom", "OptionDaily": "Daily", @@ -1071,17 +1055,11 @@ "OptionDateAddedFileTime": "Use file creation date", "OptionDateAddedImportTime": "Use date scanned into the library", "OptionDatePlayed": "Date Played", - "OptionDescending": "Descending", "OptionDisableUser": "Disable this user", "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.", - "OptionDownloadArtImage": "Art", - "OptionDownloadBackImage": "Back", - "OptionDownloadBannerImage": "Banner", - "OptionDownloadBoxImage": "Box", - "OptionDownloadDiscImage": "Disc", "OptionDownloadImagesInAdvance": "Download images in advance", "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", @@ -1098,22 +1076,17 @@ "OptionEnableForAllTuners": "Enable for all tuner devices", "OptionEnableM2tsMode": "Enable M2ts mode", "OptionEnableM2tsModeHelp": "Enable m2ts mode when encoding to mpegts.", - "OptionEnded": "Ended", "OptionEquals": "Equals", "OptionEstimateContentLength": "Estimate content length when transcoding", "OptionEveryday": "Every day", "OptionExternallyDownloaded": "External download", "OptionExtractChapterImage": "Enable chapter image extraction", - "OptionFavorite": "Favorites", "OptionHasSpecialFeatures": "Special Features", - "OptionHasSubtitles": "Subtitles", "OptionHasThemeSong": "Theme Song", "OptionHasThemeVideo": "Theme Video", - "OptionHasTrailer": "Trailer", "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.", "OptionHlsSegmentedSubtitles": "HLS segmented subtitles", - "OptionHomeVideos": "Photos", "OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests", "OptionIgnoreTranscodeByteRangeRequestsHelp": "These requests will be honored but will ignore the byte range header.", "OptionImdbRating": "IMDb Rating", @@ -1135,11 +1108,9 @@ "OptionPlainVideoItems": "Display all videos as plain video items", "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", "OptionPosterCard": "Poster card", "OptionPremiereDate": "Premiere Date", - "OptionProfileAudio": "Audio", "OptionProfilePhoto": "Photo", "OptionProfileVideo": "Video", "OptionProfileVideoAudio": "Video Audio", @@ -1154,7 +1125,6 @@ "OptionRequirePerfectSubtitleMatchHelp": "Requiring a perfect match will filter subtitles to include only those that have been tested and verified with your exact video file. Unchecking this will increase the likelihood of subtitles being downloaded, but will increase the chances of mistimed or incorrect subtitle text.", "OptionResElement": "res element", "OptionResumable": "Resumable", - "OptionRuntime": "Runtime", "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", @@ -1164,7 +1134,6 @@ "OptionTrackName": "Track Name", "OptionTvdbRating": "TVDB Rating", "OptionUnairedEpisode": "Unaired Episodes", - "OptionUnplayed": "Unplayed", "OptionWakeFromSleep": "Wake from sleep", "OptionWeekdays": "Weekdays", "OptionWeekends": "Weekends", @@ -1340,12 +1309,10 @@ "TabOther": "Other", "TabParentalControl": "Parental Control", "TabPlugins": "Plugins", - "TabProfile": "Profile", "TabProfiles": "Profiles", "TabResponses": "Responses", "TabScheduledTasks": "Scheduled Tasks", "TabServer": "Server", - "TabSettings": "Settings", "TabStreaming": "Streaming", "TabUpcoming": "Upcoming", "Tags": "Tags", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index ce3a0c4b7a..cd1ed540b5 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -100,7 +100,6 @@ "ButtonForgotPassword": "Olvidé mi contraseña", "ButtonFullscreen": "Pantalla completa", "ButtonGotIt": "Lo entendí", - "ButtonGuide": "Guía", "ButtonInfo": "Información", "ButtonLibraryAccess": "Acceso a la biblioteca", "ButtonManualLogin": "Inicio de sesión manual", @@ -112,21 +111,16 @@ "ButtonParentalControl": "Control parental", "ButtonPause": "Pausar", "ButtonPreviousTrack": "Pista anterior", - "ButtonProfile": "Perfil", "ButtonRefreshGuideData": "Actualizar datos de la guía", "ButtonRemove": "Quitar", "ButtonRename": "Renombrar", "ButtonResetEasyPassword": "Restablecer código PIN", - "ButtonResetPassword": "Restablecer contraseña", - "ButtonRestart": "Reiniciar", "ButtonResume": "Resumir", "ButtonRevoke": "Revocar", "ButtonScanAllLibraries": "Escanear todas las bibliotecas", "ButtonSelectDirectory": "Seleccionar directorio", - "ButtonSelectServer": "Seleccionar servidor", "ButtonSelectView": "Seleccionar vista", "ButtonSend": "Enviar", - "ButtonSettings": "Configuraciones", "ButtonShutdown": "Apagar", "ButtonSignIn": "Iniciar sesión", "ButtonStart": "Iniciar", @@ -452,7 +446,6 @@ "HeaderSortOrder": "Orden de clasificación", "HeaderSortBy": "Ordenar por", "HeaderSetupLibrary": "Configura tus bibliotecas de medios", - "HeaderSettings": "Configuraciones", "HeaderServerSettings": "Configuración del servidor", "HeaderServerAddressSettings": "Configuración de la dirección del servidor", "HeaderSeriesStatus": "Estado de la serie", @@ -801,13 +794,9 @@ "LabelLibraryPageSize": "Tamaño de página de la biblioteca:", "LabelLanguage": "Idioma:", "LabelLanNetworks": "Redes LAN:", - "OptionBlockBooks": "Libros", "OptionBanner": "Pancarta", "OptionAutomaticallyGroupSeriesHelp": "Si está habilitado, las series que se distribuyen en varias carpetas dentro de esta biblioteca se fusionarán automáticamente en una sola serie.", "OptionAutomaticallyGroupSeries": "Combinar automáticamente series que se extienden a través de múltiples carpetas", - "OptionAuto": "Auto", - "OptionAscending": "Ascendente", - "OptionArtist": "Artista", "OptionAllowVideoPlaybackTranscoding": "Permitir reproducción de video que requiere transcodificación", "OptionAllowVideoPlaybackRemuxing": "Permitir reproducción de video que requiere conversión sin volver a codificar", "OptionAllowUserToManageServer": "Permitir a este usuario administrar el servidor", @@ -825,8 +814,6 @@ "OptionForceRemoteSourceTranscoding": "Forzar la transcodificación de fuentes de medios remotos (como LiveTV)", "OptionAllowAudioPlaybackTranscoding": "Permitir reproducción de audio que requiere transcodificación", "OptionAllUsers": "Todos los usuarios", - "OptionAlbumArtist": "Artista del álbum", - "OptionAlbum": "Álbum", "OptionAdminUsers": "Administradores", "Option3D": "3D", "OnlyImageFormats": "Solo formatos de imagen (VOBSUB, PGS, SUB)", @@ -1054,17 +1041,11 @@ "OptionDownloadLogoImage": "Logo", "OptionDownloadImagesInAdvanceHelp": "Por defecto, la mayoría de las imágenes solo se descargan cuando lo solicita una aplicación Jellyfin. Active esta opción para descargar todas las imágenes de antemano, ya que se importan nuevos medios. Esto puede causar escaneos de biblioteca significativamente más largos.", "OptionDownloadImagesInAdvance": "Descargar imágenes por adelantado", - "OptionDownloadDiscImage": "Disco", - "OptionDownloadBoxImage": "Caja", - "OptionDownloadBannerImage": "Pancarta", - "OptionDownloadBackImage": "Volver", - "OptionDownloadArtImage": "Arte", "OptionDisplayFolderViewHelp": "Mostrar carpetas junto con sus otras bibliotecas de medios. Esto puede ser útil si desea tener una vista de carpeta simple.", "OptionDisplayFolderView": "Mostrar una vista de carpeta para mostrar carpetas de medios simples", "OptionDislikes": "No me gustas", "OptionDisableUserHelp": "Si está deshabilitado, el servidor no permitirá ninguna conexión de este usuario. Las conexiones existentes se terminarán abruptamente.", "OptionDisableUser": "Deshabilitar este usuario", - "OptionDescending": "Descendente", "OptionDatePlayed": "Fecha de reproducción", "OptionDateAddedImportTime": "Use la fecha escaneada en la biblioteca", "OptionDateAddedFileTime": "Usar fecha de creación de archivo", @@ -1072,14 +1053,11 @@ "OptionDaily": "Diario", "OptionCustomUsers": "Personalizado", "OptionCriticRating": "Valoración crítica", - "OptionContinuing": "Continuo", "OptionCommunityRating": "Calificación de la comunidad", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionBluray": "Blu-ray", "OptionBlockTvShows": "Programas de televisión", "OptionBlockTrailers": "Avances", - "OptionBlockMusic": "Música", - "OptionBlockMovies": "Películas", "OptionBlockLiveTvChannels": "Canales de TV en vivo", "OptionBlockChannelContent": "Contenido del canal de internet", "MusicLibraryHelp": "Revise la {0}guía de nomenclatura musical{1}.", @@ -1179,7 +1157,6 @@ "OptionWeekends": "Fines de semana", "OptionWeekdays": "Días de la semana", "OptionWakeFromSleep": "Despertarse del sueño", - "OptionUnplayed": "No reproducido", "OptionTvdbRating": "Calificación de TVDB", "OptionTrackName": "Nombre de la pista", "OptionThumbCard": "Tarjeta del pulgar", @@ -1188,7 +1165,6 @@ "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", - "OptionRuntime": "Tiempo de ejecución", "OptionResumable": "Reanudable", "OptionResElement": "elemento res", "OptionRequirePerfectSubtitleMatchHelp": "Requerir una combinación perfecta filtrará los subtítulos para incluir solo aquellos que han sido probados y verificados con su archivo de video exacto. Desmarcar esto aumentará la probabilidad de que se descarguen los subtítulos, pero aumentará las posibilidades de texto de subtítulos incorrecto o incorrecto.", @@ -1203,11 +1179,9 @@ "OptionProfileVideoAudio": "Video Audio", "OptionProfileVideo": "Video", "OptionProfilePhoto": "Foto", - "OptionProfileAudio": "Audio", "OptionPremiereDate": "Fecha de estreno", "OptionPosterCard": "Tarjeta de póster", "OptionPoster": "Póster", - "OptionPlayed": "Reproducido", "OptionPlayCount": "Cuento de reproducciones", "OptionPlainVideoItemsHelp": "Si está habilitado, todos los videos se representan 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", @@ -1228,22 +1202,17 @@ "OptionImdbRating": "Calificación de IMDb", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Si está habilitado, estas solicitudes serán atendidas pero ignorarán el encabezado del rango de bytes.", "OptionIgnoreTranscodeByteRangeRequests": "Ignorar las solicitudes de rango de bytes de transcodificación", - "OptionHomeVideos": "Fotos", "OptionHlsSegmentedSubtitles": "Subtítulos segmentados HLS", "OptionHideUserFromLoginHelp": "Útil para cuentas de administrador privadas u ocultas. El usuario deberá iniciar sesión manualmente ingresando su nombre de usuario y contraseña.", "OptionHideUser": "Ocultar a este usuario de las pantallas de inicio de sesión", - "OptionHasTrailer": "Avance", "OptionHasThemeVideo": "Video temático", "OptionHasThemeSong": "Tema musical", - "OptionHasSubtitles": "Subtítulos", "OptionHasSpecialFeatures": "Características especiales", - "OptionFavorite": "Favoritos", "OptionExtractChapterImage": "Habilitar la extracción de imágenes de capítulos", "OptionExternallyDownloaded": "Descarga externa", "OptionEveryday": "Cada día", "OptionEstimateContentLength": "Estimar la longitud del contenido al transcodificar", "OptionEquals": "Igual a", - "OptionEnded": "Terminó", "OptionEnableM2tsModeHelp": "Habilite el modo m2ts al codificar en mpegts.", "ReplaceExistingImages": "Reemplazar imágenes existentes", "ReplaceAllMetadata": "Reemplazar todos los metadatos", @@ -1335,12 +1304,10 @@ "LabelSkipForwardLength": "Saltar hacia adelante longitud:", "Trailers": "Avances", "TabStreaming": "Transmisión", - "TabSettings": "Configuraciones", "TabServer": "Servidor", "TabScheduledTasks": "Tareas programadas", "TabResponses": "Respuestas", "TabProfiles": "Perfiles", - "TabProfile": "Perfil", "TabPlugins": "Complementos", "TabParentalControl": "Control parental", "TabOther": "Otro", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 7c392f04b6..acefd39d05 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -63,7 +63,6 @@ "ButtonForgotPassword": "Olvidé mi contraseña", "ButtonFullscreen": "Pantalla completa", "ButtonGotIt": "Hecho", - "ButtonGuide": "Guía", "ButtonLibraryAccess": "Acceso a biblioteca(s)", "ButtonManualLogin": "Inicio de sesión manual", "ButtonMore": "Más", @@ -73,22 +72,17 @@ "ButtonParentalControl": "Control parental", "ButtonPause": "Pausar", "ButtonPreviousTrack": "Pista anterior", - "ButtonProfile": "Perfil", "ButtonQuickStartGuide": "Guía de inicio rápido", "ButtonRefreshGuideData": "Actualizar datos de la guía", "ButtonRemove": "Remover", "ButtonRename": "Renombrar", "ButtonResetEasyPassword": "Restablecer código PIN sencillo", - "ButtonResetPassword": "Restablecer contraseña", - "ButtonRestart": "Reiniciar", "ButtonResume": "Continuar", "ButtonRevoke": "Revocar", "ButtonScanAllLibraries": "Escanear todas las bibliotecas", "ButtonSelectDirectory": "Seleccionar directorio", - "ButtonSelectServer": "Seleccionar servidor", "ButtonSelectView": "Seleccionar vista", "ButtonSend": "Enviar", - "ButtonSettings": "Configuración", "ButtonShutdown": "Apagar", "ButtonSignIn": "Iniciar sesión", "ButtonSignOut": "Cerrar sesión", @@ -376,7 +370,6 @@ "HeaderSeriesOptions": "Opciones de serie", "HeaderSeriesStatus": "Estado de la serie", "HeaderServerSettings": "Configuración del servidor", - "HeaderSettings": "Configuración", "HeaderSetupLibrary": "Configura tus bibliotecas de medios", "HeaderSortBy": "Ordenar por", "HeaderSortOrder": "Clasificar ordenado", @@ -869,8 +862,6 @@ "OnlyForcedSubtitlesHelp": "Solo se cargarán subtítulos marcados como forzados.", "OnlyImageFormats": "Solo formatos de imagen (VOBSUB, PGS, SUB)", "OptionAdminUsers": "Administradores", - "OptionAlbum": "Álbum", - "OptionAlbumArtist": "Artista del álbum", "OptionAllUsers": "Todos los usuarios", "OptionAllowAudioPlaybackTranscoding": "Permitir la reproducción de audio que requiera transcodificación", "OptionAllowBrowsingLiveTv": "Permitir acceso a TV en vivo", @@ -887,20 +878,13 @@ "OptionAllowUserToManageServer": "Permitir a este usuario administrar el servidor", "OptionAllowVideoPlaybackRemuxing": "Permitir reproducción de video que requiera conversión sin recodificar", "OptionAllowVideoPlaybackTranscoding": "Permitir la reproducción de video que requiera de transcodificación", - "OptionArtist": "Artista", - "OptionAscending": "Ascendente", - "OptionAuto": "Automático", "OptionAutomaticallyGroupSeries": "Fusionar automáticamente series esparcidas a través de múltiples carpetas", "OptionAutomaticallyGroupSeriesHelp": "Si se habilita, las series que se reparten a través de múltiples carpetas dentro de esta biblioteca serán fusionadas en una sola serie.", - "OptionBlockBooks": "Libros", "OptionBlockChannelContent": "Contenido de canales de Internet", "OptionBlockLiveTvChannels": "Canales de TV en vivo", - "OptionBlockMovies": "Películas", - "OptionBlockMusic": "Música", "OptionBlockTrailers": "Trailers", "OptionBlockTvShows": "Programas de TV", "OptionCommunityRating": "Calificación de la comunidad", - "OptionContinuing": "Continuando", "OptionCriticRating": "Calificación de los críticos", "OptionCustomUsers": "Personalizado", "OptionDaily": "Diario", @@ -908,17 +892,11 @@ "OptionDateAddedFileTime": "Usar la fecha de creación del archivo", "OptionDateAddedImportTime": "Usar la fecha de escaneo en la biblioteca", "OptionDatePlayed": "Fecha de reproducción", - "OptionDescending": "Descendente", "OptionDisableUser": "Desactivar este usuario", "OptionDisableUserHelp": "Si se desactiva, el servidor no aceptará conexiones de este usuario. Las conexiones existentes serán finalizadas abruptamente.", "OptionDislikes": "No me gusta", "OptionDisplayFolderView": "Mostrar una vista de carpetas para mostrar las carpetas simples de los medios", "OptionDisplayFolderViewHelp": "Muestra las carpetas junto con sus otras bibliotecas de medios. Esto puede ser útil si deseas tener una vista simple de carpeta.", - "OptionDownloadArtImage": "Arte", - "OptionDownloadBackImage": "Parte trasera", - "OptionDownloadBannerImage": "Banner", - "OptionDownloadBoxImage": "Caja", - "OptionDownloadDiscImage": "Disco", "OptionDownloadImagesInAdvance": "Descargar las imágenes con antelación", "OptionDownloadImagesInAdvanceHelp": "Por defecto, la mayoría de las imágenes solo son descargadas cuando son solicitadas por una aplicación Jellyfin. Habilita esta opción para descargar todas las imágenes por adelantado, a medida que se agreguen nuevos medios. Esto podría causar escaneos de bibliotecas significativamente más largos.", "OptionDownloadMenuImage": "Menú", @@ -934,22 +912,17 @@ "OptionEnableForAllTuners": "Habilitar para todos los dispositivos sintonizadores", "OptionEnableM2tsMode": "Habilitar modo M2TS", "OptionEnableM2tsModeHelp": "Habilita el modo m2ts cuando se codifican mpegts.", - "OptionEnded": "Finalizado", "OptionEquals": "Igual a", "OptionEstimateContentLength": "Estimar la duración del contenido cuando se transcodifica", "OptionEveryday": "Todos los días", "OptionExternallyDownloaded": "Descarga externa", "OptionExtractChapterImage": "Habilitar la extracción de imágenes de los capítulos", - "OptionFavorite": "Favoritos", "OptionHasSpecialFeatures": "Características especiales", - "OptionHasSubtitles": "Subtítulos", "OptionHasThemeSong": "Canción temática", "OptionHasThemeVideo": "Video temático", - "OptionHasTrailer": "Trailer", "OptionHideUser": "Ocultar este usuario de las pantallas de inicio de sesión", "OptionHideUserFromLoginHelp": "Útil para cuentas privadas o de administrador ocultas. El usuario tendrá que iniciar sesión manualmente introduciendo su nombre de usuario y contraseña.", "OptionHlsSegmentedSubtitles": "Subtítulos segmentados HLS", - "OptionHomeVideos": "Fotos", "OptionIgnoreTranscodeByteRangeRequests": "Ignorar solicitudes de transcodificación de rango de bytes", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Si se habilita, estas solicitudes serán honradas pero se ignorará el encabezado de rango de bytes.", "OptionImdbRating": "Calificación de IMDb", @@ -966,7 +939,6 @@ "OptionPlainVideoItems": "Mostrar todos los videos como elementos de video simples", "OptionPlainVideoItemsHelp": "Si se habilita, 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».", "OptionPlayCount": "Contador de reproducciones", - "OptionPlayed": "Reproducido", "OptionPremiereDate": "Fecha de estreno", "OptionProfilePhoto": "Foto", "OptionProfileVideoAudio": "Audio del video", @@ -978,7 +950,6 @@ "OptionRequirePerfectSubtitleMatchHelp": "Solicitar una coincidencia perfecta filtrará los subtítulos para incluir solo aquellos que han sido probados y verificados exactamente con tu archivo de video. Desmarcar esta opción incrementará las probabilidades de que se descarguen subtítulos, pero incrementará las posibilidades de obtener subtítulos mal sincronizados o con texto incorrecto.", "OptionResElement": "Elemento res", "OptionResumable": "Reanudable", - "OptionRuntime": "Duración", "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", @@ -986,7 +957,6 @@ "OptionTrackName": "Nombre de la pista", "OptionTvdbRating": "Calificación de TVDB", "OptionUnairedEpisode": "Episodios no emitidos", - "OptionUnplayed": "No reproducido", "OptionWakeFromSleep": "Despertar de la suspensión", "OptionWeekdays": "Días de semana", "OptionWeekends": "Fines de semana", @@ -1138,12 +1108,10 @@ "TabOther": "Otros", "TabParentalControl": "Control parental", "TabPlugins": "Complementos", - "TabProfile": "Perfil", "TabProfiles": "Perfiles", "TabResponses": "Respuestas", "TabScheduledTasks": "Tareas programadas", "TabServer": "Servidor", - "TabSettings": "Configuración", "TabStreaming": "Transmisión", "TabUpcoming": "Próximamente", "Tags": "Etiquetas", @@ -1274,7 +1242,6 @@ "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.", "OptionPoster": "Póster", "OptionPosterCard": "Ficha de póster", - "OptionProfileAudio": "Audio", "OptionProfileVideo": "Video", "OptionProtocolHttp": "HTTP", "OptionRegex": "Expresión regular", diff --git a/src/strings/es.json b/src/strings/es.json index b77192611c..7e19b57228 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -53,7 +53,6 @@ "ButtonForgotPassword": "Contraseña olvidada", "ButtonFullscreen": "Pantalla completa", "ButtonGotIt": "Entendido", - "ButtonGuide": "Guía", "ButtonLibraryAccess": "Acceso a la biblioteca", "ButtonManualLogin": "Acceder manualmente", "ButtonMore": "Más", @@ -64,22 +63,17 @@ "ButtonParentalControl": "Control parental", "ButtonPause": "Pausa", "ButtonPreviousTrack": "Pista anterior", - "ButtonProfile": "Perfil", "ButtonQuickStartGuide": "Guía de inicio rápido", "ButtonRefreshGuideData": "Actualizar datos de la guía", "ButtonRemove": "Quitar", "ButtonRename": "Renombrar", "ButtonResetEasyPassword": "Restablecer código PIN", - "ButtonResetPassword": "Reiniciar Contraseña", - "ButtonRestart": "Reiniciar", "ButtonResume": "Continuar", "ButtonRevoke": "Revocar", "ButtonScanAllLibraries": "Escanear todas las bibliotecas", "ButtonSelectDirectory": "Seleccionar directorio", - "ButtonSelectServer": "Elegir servidor", "ButtonSelectView": "Seleccionar vista", "ButtonSend": "Enviar", - "ButtonSettings": "Opciones", "ButtonShutdown": "Apagar", "ButtonSignIn": "Iniciar sesión", "ButtonSignOut": "Desconectarse", @@ -329,7 +323,6 @@ "HeaderSendMessage": "Enviar mensaje", "HeaderSeriesOptions": "Opciones de series", "HeaderServerSettings": "Ajustes del servidor", - "HeaderSettings": "Ajustes", "HeaderSetupLibrary": "Configure sus bibliotecas de medios", "HeaderSortBy": "Ordenar por", "HeaderSortOrder": "Orden", @@ -797,8 +790,6 @@ "OnlyForcedSubtitlesHelp": "Solo se cargarán los subtítulos marcados como forzados.", "OnlyImageFormats": "Solo formatos de imagen (VOBSUB, PGS, SUB)", "OptionAdminUsers": "Administradores", - "OptionAlbum": "Álbum", - "OptionAlbumArtist": "Artista de álbum", "OptionAllUsers": "Todos los usuarios", "OptionAllowAudioPlaybackTranscoding": "Activar la conversión del audio", "OptionAllowBrowsingLiveTv": "Permitir acceso a la televisión en directo", @@ -815,18 +806,12 @@ "OptionAllowUserToManageServer": "Permite a este usuario administrar el servidor", "OptionAllowVideoPlaybackRemuxing": "Activar el cambio de contenedor para el contenido cuyo audio y vídeo es compatible, pero no lo es su contenedor", "OptionAllowVideoPlaybackTranscoding": "Activar la conversión del vídeo", - "OptionArtist": "Artista", - "OptionAscending": "Ascendente", "OptionAutomaticallyGroupSeries": "Combinar automáticamente series que se distribuyen en varias carpetas", "OptionAutomaticallyGroupSeriesHelp": "Si está activada, las series que se distribuyen entre varias carpetas dentro de esta biblioteca se fusionarán automáticamente en una sola serie.", - "OptionBlockBooks": "Libros", "OptionBlockChannelContent": "Contenido de canales de Internet", "OptionBlockLiveTvChannels": "Canales de televisión en directo", - "OptionBlockMovies": "Películas", - "OptionBlockMusic": "Música", "OptionBlockTvShows": "Programas de televisión", "OptionCommunityRating": "Valoración de la comunidad", - "OptionContinuing": "Continuando", "OptionCriticRating": "Valoración de la crítica", "OptionCustomUsers": "A medida", "OptionDaily": "Diario", @@ -834,17 +819,11 @@ "OptionDateAddedFileTime": "Usar fecha de creación del archivo", "OptionDateAddedImportTime": "Usar fecha escaneada de la biblioteca", "OptionDatePlayed": "Fecha de reproducción", - "OptionDescending": "Descendente", "OptionDisableUser": "Deshabilitar este usuario", "OptionDisableUserHelp": "Si está deshabilitado, el servidor no aceptará conexiones de este usuario. Si existen conexiones de este usuario, finalizarán inmediatamente.", "OptionDislikes": "No me gusta", "OptionDisplayFolderView": "Mostrar una vista de carpeta para ver las carpetas de medios en plano", "OptionDisplayFolderViewHelp": "Mostrar carpetas junto con tus otras bibliotecas de medios. Esto es útil si te gustar tener una vista plana de carpetas.", - "OptionDownloadArtImage": "Arte", - "OptionDownloadBackImage": "Atrás", - "OptionDownloadBannerImage": "Pancarta", - "OptionDownloadBoxImage": "Caja", - "OptionDownloadDiscImage": "Disco", "OptionDownloadImagesInAdvance": "Descargar imágenes con antelación", "OptionDownloadImagesInAdvanceHelp": "Por defecto, la mayoría de las imágenes solo se descargan cuando lo solicita una aplicación Jellyfin. Activa esta opción para descargar todas las imágenes por adelantado, a medida que se importan nuevos medios. Esto puede causar escaneos de biblioteca significativamente más largos.", "OptionDownloadMenuImage": "Menú", @@ -859,21 +838,17 @@ "OptionEnableForAllTuners": "Activar para todos los dispositivos sintonizadores", "OptionEnableM2tsMode": "Activar modo M2TS", "OptionEnableM2tsModeHelp": "Activar modo M2TS cuando se codifique a MPEGTS.", - "OptionEnded": "Finalizado", "OptionEquals": "Igual", "OptionEstimateContentLength": "Estimar la longitud del contenido al convertirse", "OptionEveryday": "Todos los días", "OptionExternallyDownloaded": "Descarga externa", "OptionExtractChapterImage": "Habilitar la extracción de imágenes de los capítulos", - "OptionFavorite": "Favoritos", "OptionHasSpecialFeatures": "Características especiales", - "OptionHasSubtitles": "Subtítulos", "OptionHasThemeSong": "Banda sonora", "OptionHasThemeVideo": "Vídeo temático", "OptionHideUser": "Ocultar este usuario en las pantallas de inicio de sesión", "OptionHideUserFromLoginHelp": "Útil para privado o cuentas de administradores escondidos. El usuario tendrá que acceder entrando su nombre de usuario y contraseña manualmente.", "OptionHlsSegmentedSubtitles": "Subtítulos segmentados HLS", - "OptionHomeVideos": "Fotos", "OptionIgnoreTranscodeByteRangeRequests": "En las conversiones, ignorar las solicitudes de un intervalo específico de bytes", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Si está activado, estas solicitudes serán atendidas pero ignorarán el encabezado de intervalo de bytes.", "OptionImdbRating": "Valoración IMDb", @@ -890,7 +865,6 @@ "OptionPlainVideoItems": "Mostrar todos los videos como elementos de video sin formato", "OptionPlainVideoItemsHelp": "Si está habilitado, todos los vídeos están representados en DIDL como \"object.item.videoItem\" en lugar de un tipo más específico, como por ejemplo \"object.item.videoItem.movie\".", "OptionPlayCount": "Número de reproducciones", - "OptionPlayed": "Reproducido", "OptionPremiereDate": "Fecha de estreno", "OptionProfilePhoto": "Foto", "OptionProfileVideoAudio": "Vídeo y audio", @@ -902,14 +876,12 @@ "OptionRequirePerfectSubtitleMatchHelp": "Requerir una coincidencia perfecta filtra los subtítulos para incluir sólo aquellos que coinciden con el archivo de vídeo. Desmarcando esta opción, aumentará la probabilidad de que los subtítulos se descarguen, pero puede que el texto del subtítulo no coincida con el vídeo.", "OptionResElement": "Elemento res", "OptionResumable": "Se puede continuar", - "OptionRuntime": "Tiempo", "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", "OptionTrackName": "Nombre de pista", "OptionTvdbRating": "Valoración TVDB", "OptionUnairedEpisode": "Episodios no emitidos", - "OptionUnplayed": "No reproducido", "OptionWakeFromSleep": "Despertar", "OptionWeekdays": "Días de la semana", "OptionWeekends": "Fines de semana", @@ -1043,12 +1015,10 @@ "TabNotifications": "Notificaciones", "TabOther": "Otros", "TabParentalControl": "Control parental", - "TabProfile": "Perfil", "TabProfiles": "Perfiles", "TabResponses": "Respuestas", "TabScheduledTasks": "Tareas programadas", "TabServer": "Servidor", - "TabSettings": "Opciones", "TabStreaming": "Transmisión", "TabUpcoming": "Próximos", "Tags": "Etiquetas", @@ -1207,13 +1177,11 @@ "Normal": "Normal", "Off": "Apagado", "Option3D": "3D", - "OptionAuto": "Automático", "OptionBanner": "Cabecera", "OptionBlockTrailers": "Tráilers", "OptionBluray": "Blu-ray", "OptionDownloadLogoImage": "Logo", "OptionDvd": "DVD", - "OptionHasTrailer": "Tráiler", "OptionIsHD": "HD", "OptionIsSD": "SD", "AuthProviderHelp": "Selecciona un proveedor de autenticación a utilizar para autenticar la contraseña de este usuario.", @@ -1251,7 +1219,6 @@ "OptionLoginAttemptsBeforeLockoutHelp": "El valor cero implica heredar el valor por defecto de tres intentos para usuarios y cinco intentos para administradores. El valor -1 desactiva esta funcionalidad.", "OptionPoster": "Póster", "OptionPosterCard": "Cartelera", - "OptionProfileAudio": "Audio", "OptionProfileVideo": "Vídeo", "OptionProtocolHttp": "HTTP", "OptionRegex": "Regex (expresión regular)", diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 5197f3d813..68a6fb9200 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -129,12 +129,10 @@ "Tags": "Etiquetas", "TabUpcoming": "Próximamente", "TabStreaming": "Transmisión", - "TabSettings": "Configuración", "TabServer": "Servidor", "TabScheduledTasks": "Tareas programadas", "TabResponses": "Respuestas", "TabProfiles": "Perfiles", - "TabProfile": "Perfil", "TabPlugins": "Complementos", "TabParentalControl": "Control parental", "TabOther": "Otros", @@ -151,7 +149,6 @@ "TabCodecs": "Códecs", "TabCatalog": "Catálogo", "OptionPoster": "Póster", - "OptionPlayed": "Reproducido", "OptionPlayCount": "Contador de reproducciones", "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", @@ -173,22 +170,17 @@ "OptionImdbRating": "Calificación de IMDb", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Estas solicitudes serán consideradas pero se ignorará el encabezado de rango de bytes.", "OptionIgnoreTranscodeByteRangeRequests": "Ignorar solicitudes de transcodificación de rango de bytes", - "OptionHomeVideos": "Fotos", "OptionHlsSegmentedSubtitles": "Subtítulos segmentados HLS", "OptionHideUserFromLoginHelp": "Útil para cuentas privadas o de administrador ocultas. El usuario tendrá que iniciar sesión manualmente introduciendo su nombre de usuario y contraseña.", "OptionHideUser": "Ocultar este usuario de las pantallas de inicio de sesión", - "OptionHasTrailer": "Trailer", "OptionHasThemeVideo": "Video temático", "OptionHasThemeSong": "Canción temática", - "OptionHasSubtitles": "Subtítulos", "OptionHasSpecialFeatures": "Características especiales", - "OptionFavorite": "Favoritos", "OptionExtractChapterImage": "Habilitar la extracción de imágenes de los capítulos", "OptionExternallyDownloaded": "Descarga externa", "OptionEveryday": "Todos los días", "OptionEstimateContentLength": "Estimar la duración del contenido cuando se transcodifica", "OptionEquals": "Igual a", - "OptionEnded": "Finalizado", "OptionEnableM2tsModeHelp": "Habilita el modo m2ts cuando se codifican mpegts.", "OptionEnableM2tsMode": "Habilitar modo M2TS", "OptionEnableForAllTuners": "Habilitar para todos los dispositivos sintonizadores", @@ -205,17 +197,11 @@ "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 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", - "OptionDownloadBannerImage": "Banner", - "OptionDownloadBackImage": "Parte trasera", - "OptionDownloadArtImage": "Arte", "OptionDisplayFolderViewHelp": "Muestra las carpetas junto con sus otras bibliotecas de medios. Esto puede ser útil si deseas tener una vista simple de carpeta.", "OptionDisplayFolderView": "Mostrar una vista de carpetas para mostrar las carpetas simples de los medios", "OptionDislikes": "No me gusta", "OptionDisableUserHelp": "El servidor no aceptará conexiones de este usuario. Las conexiones existentes serán finalizadas abruptamente.", "OptionDisableUser": "Desactivar este usuario", - "OptionDescending": "Descendente", "OptionDatePlayed": "Fecha de reproducción", "OptionDateAddedImportTime": "Usar la fecha de escaneo en la biblioteca", "OptionDateAddedFileTime": "Usar la fecha de creación del archivo", @@ -223,20 +209,13 @@ "OptionDaily": "Diario", "OptionCustomUsers": "Personalizado", "OptionCriticRating": "Calificación de los críticos", - "OptionContinuing": "Continuando", "OptionCommunityRating": "Calificación de la comunidad", "OptionBlockTvShows": "Programas de TV", - "OptionBlockMusic": "Música", - "OptionBlockMovies": "Películas", "OptionBlockLiveTvChannels": "Canales de TV en vivo", "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 automáticamente fusionadas en una sola serie.", "OptionAutomaticallyGroupSeries": "Fusionar automáticamente series esparcidas a través de múltiples carpetas", - "OptionAuto": "Automático", - "OptionAscending": "Ascendente", - "OptionArtist": "Artista", "OptionAllowVideoPlaybackTranscoding": "Permitir la reproducción de video que requiera de transcodificación", "OptionAllowVideoPlaybackRemuxing": "Permitir reproducción de video que requiera conversión sin recodificar", "OptionAllowUserToManageServer": "Permitir a este usuario administrar el servidor", @@ -254,8 +233,6 @@ "OptionForceRemoteSourceTranscoding": "Forzar transcodificación de fuentes remotas (como TV en vivo)", "OptionAllowAudioPlaybackTranscoding": "Permitir la reproducción de audio que requiera transcodificación", "OptionAllUsers": "Todos los usuarios", - "OptionAlbumArtist": "Artista del álbum", - "OptionAlbum": "Álbum", "OptionAdminUsers": "Administradores", "Option3D": "3D", "OnlyImageFormats": "Solo formatos de imagen (VOBSUB, PGS, SUB)", @@ -590,7 +567,6 @@ "OptionWeekends": "Fines de semana", "OptionWeekdays": "Días de semana", "OptionWakeFromSleep": "Despertar de la suspensión", - "OptionUnplayed": "No reproducido", "OptionUnairedEpisode": "Episodios no emitidos", "OptionTvdbRating": "Calificación de TVDB", "OptionTrackName": "Nombre de la pista", @@ -599,7 +575,6 @@ "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.", "OptionSaveMetadataAsHidden": "Guardar metadatos e imágenes como archivos ocultos", - "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.", "OptionRequirePerfectSubtitleMatch": "Solo descargar subtítulos que coincidan perfectamente con mis archivos de video", @@ -613,7 +588,6 @@ "OptionProfileVideoAudio": "Audio del video", "OptionProfileVideo": "Video", "OptionProfilePhoto": "Foto", - "OptionProfileAudio": "Audio", "OptionPremiereDate": "Fecha de estreno", "OptionPosterCard": "Ficha de póster", "LabelSize": "Tamaño:", @@ -978,7 +952,6 @@ "HeaderSortOrder": "Clasificar ordenado", "HeaderSortBy": "Ordenar por", "HeaderSetupLibrary": "Configura tus bibliotecas de medios", - "HeaderSettings": "Configuración", "HeaderServerSettings": "Configuración del servidor", "HeaderSelectServerCachePathHelp": "Explora o introduce la ruta a utilizar para los archivos caché del servidor. Se debe tener permisos de escritura en dicha carpeta.", "HeaderSelectServerCachePath": "Seleccionar ruta para la caché del servidor", @@ -1323,22 +1296,17 @@ "ButtonSignOut": "Cerrar sesión", "ButtonSignIn": "Iniciar sesión", "ButtonShutdown": "Apagar", - "ButtonSettings": "Configuración", "ButtonSend": "Enviar", "ButtonSelectView": "Seleccionar vista", - "ButtonSelectServer": "Seleccionar servidor", "ButtonSelectDirectory": "Seleccionar directorio", "ButtonScanAllLibraries": "Escanear todas las bibliotecas", "ButtonRevoke": "Revocar", "ButtonResume": "Continuar", - "ButtonRestart": "Reiniciar", - "ButtonResetPassword": "Restablecer contraseña", "ButtonResetEasyPassword": "Restablecer código PIN sencillo", "ButtonRename": "Renombrar", "ButtonRemove": "Remover", "ButtonRefreshGuideData": "Actualizar datos de la guía", "ButtonQuickStartGuide": "Guía de inicio rápido", - "ButtonProfile": "Perfil", "ButtonPreviousTrack": "Pista anterior", "ButtonPause": "Pausar", "ButtonParentalControl": "Control parental", @@ -1350,7 +1318,6 @@ "ButtonManualLogin": "Inicio de sesión manual", "ButtonLibraryAccess": "Acceso a biblioteca(s)", "ButtonInfo": "Info", - "ButtonGuide": "Guía", "ButtonGotIt": "Hecho", "ButtonFullscreen": "Pantalla completa", "ButtonForgotPassword": "Olvidé mi contraseña", diff --git a/src/strings/fa.json b/src/strings/fa.json index c68bab1124..fd7402a209 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -9,7 +9,6 @@ "ButtonCancel": "لغو کردن", "ButtonOk": "خوب", "ButtonQuickStartGuide": "راهنمای شروع سریع", - "ButtonResetPassword": "تنظیم مجدد رمز", "ButtonSignOut": "Sign out", "DeleteMedia": "حذف رسانه", "Disabled": "غیرفعال شده", @@ -61,24 +60,18 @@ "MoreUsersCanBeAddedLater": "بعدا میتوانید کاربران بیشتری را در داشبورد اضافه کنید.", "NextUp": "بعدی چیه", "MessageNoNextUpItems": "چیزی یافت نشد. دیدن سریال ها یتان را شروع کنید!", - "OptionAscending": "صعودی", - "OptionDescending": "نزولی", "OptionDislikes": "پسندیده نشده ها", "OptionEnableAccessFromAllDevices": "فعالسازی دسترسی از همه ی دستگاه ها", "OptionEnableAccessToAllChannels": "فعالسازی دسترسی به همه ی کانال ها", "OptionEnableAccessToAllLibraries": "فعالسازی دسترسی به همه ی کتابخانه ها", - "OptionFavorite": "مورد علاقه ها", "OptionLikes": "پسندها", - "OptionPlayed": "پخش شده", "OptionProfileVideo": "ویدیو", - "OptionUnplayed": "پخش نشده", "ShowAdvancedSettings": "نمایش تنظیمات پیشرفته", "TabAccess": "دسترسی", "TabAdvanced": "پیشرفته", "TabLatest": "جدیدترین‌ها", "TabNetworks": "شبکه ها", "TabNotifications": "اعلان ها", - "TabProfile": "پروفایل", "TabProfiles": "پروفایل ها", "TabUpcoming": "بزودی", "TellUsAboutYourself": "در مورد خودتان به ما بگویید", @@ -115,19 +108,15 @@ "Add": "افزودن", "Actor": "بازیگر", "AccessRestrictedTryAgainLater": "دسترسی در حال حاضر محدود شده است. لطفا دوباره تلاش کنید.", - "ButtonSettings": "تنظیمات", "ButtonSend": "ارسال", "ButtonSelectView": "انتخاب نما", - "ButtonSelectServer": "انتخاب سرور", "ButtonScanAllLibraries": "اسکن تمام کتابخانه‌ها", "ButtonRevoke": "ابطال", "ButtonResume": "ادامه", - "ButtonRestart": "راه اندازی مجدد", "ButtonResetEasyPassword": "بازنشانی کد پین آسان", "ButtonRename": "تغییر نام", "ButtonRemove": "حذف", "ButtonRefreshGuideData": "به‌روز‌رسانی داده‌ی راهنما", - "ButtonProfile": "نمایه", "ButtonNextTrack": "ترانه پسین", "ButtonPreviousTrack": "ترانه پیشین", "ButtonPause": "مکث", @@ -138,7 +127,6 @@ "ButtonManualLogin": "ورود دستی", "ButtonLibraryAccess": "دسترسی به کتابخانه", "ButtonInfo": "اطلاعات", - "ButtonGuide": "راهنما", "ButtonGotIt": "متوجه شدم", "ButtonFullscreen": "تمام صفحه", "ButtonForgotPassword": "فراموشی گذرواژه", @@ -538,7 +526,6 @@ "OptionSubstring": "زیررشته", "OptionSpecialEpisode": "ویژه‌ها", "OptionSaveMetadataAsHidden": "ذخیره فراداده‌ها و عکس‌ها به عنوان فایل‌های پنهان", - "OptionRuntime": "زمان اجرا", "OptionResumable": "قابل از سرگیری", "OptionResElement": "عنصر res", "OptionReleaseDate": "تاریخ انتشار", @@ -548,7 +535,6 @@ "OptionProtocolHls": "پخش مستقیم HTTP", "OptionProfileVideoAudio": "صوتی تصویری", "OptionProfilePhoto": "عکس", - "OptionProfileAudio": "صدا", "OptionPremiereDate": "تاریخ پخش", "OptionPosterCard": "کارتِ پوستر", "OptionPoster": "پوستر", @@ -579,7 +565,6 @@ "ButtonTogglePlaylist": "لیست پخش", "TheseSettingsAffectSubtitlesOnThisDevice": "این تنظیمات روی زیرنویس‌ها در این دستگاه تأثیر می‌گذارد", "TabStreaming": "در حال پخش", - "TabSettings": "تنظیمات", "TabServer": "سرور", "TabScheduledTasks": "وظایف زمان بندی شده", "TabResponses": "پاسخ‌ها", @@ -877,8 +862,6 @@ "OnlyImageFormats": "Only Image Formats (VOBSUB, PGS, SUB)", "Option3D": "3D", "OptionAdminUsers": "Administrators", - "OptionAlbum": "Album", - "OptionAlbumArtist": "Album Artist", "OptionAllUsers": "All users", "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", "OptionForceRemoteSourceTranscoding": "Force transcoding of remote media sources (like LiveTV)", @@ -896,22 +879,16 @@ "OptionAllowUserToManageServer": "Allow this user to manage the server", "OptionAllowVideoPlaybackRemuxing": "Allow video playback that requires conversion without re-encoding", "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", - "OptionArtist": "Artist", - "OptionAuto": "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.", "OptionBanner": "Banner", - "OptionBlockBooks": "Books", "OptionBlockChannelContent": "Internet Channel Content", "OptionBlockLiveTvChannels": "Live TV Channels", - "OptionBlockMovies": "Movies", - "OptionBlockMusic": "Music", "OptionBlockTrailers": "Trailers", "OptionBlockTvShows": "TV Shows", "OptionBluray": "Blu-ray", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionCommunityRating": "Community Rating", - "OptionContinuing": "Continuing", "OptionCriticRating": "Critic Rating", "OptionCustomUsers": "Custom", "OptionDaily": "Daily", @@ -923,11 +900,6 @@ "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", "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.", - "OptionDownloadArtImage": "Art", - "OptionDownloadBackImage": "Back", - "OptionDownloadBannerImage": "Banner", - "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.", "OptionDownloadLogoImage": "Logo", @@ -941,17 +913,14 @@ "OptionEnableForAllTuners": "Enable for all tuner devices", "OptionEnableM2tsMode": "Enable M2ts mode", "OptionEnableM2tsModeHelp": "Enable m2ts mode when encoding to mpegts.", - "OptionEnded": "Ended", "OptionEquals": "Equals", "OptionEstimateContentLength": "Estimate content length when transcoding", "OptionEveryday": "Every day", "OptionExternallyDownloaded": "External download", "OptionExtractChapterImage": "Enable chapter image extraction", "OptionHasSpecialFeatures": "Special Features", - "OptionHasSubtitles": "Subtitles", "OptionHasThemeSong": "Theme Song", "OptionHasThemeVideo": "Theme Video", - "OptionHasTrailer": "Trailer", "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", @@ -959,7 +928,6 @@ "HeaderSeriesStatus": "Series Status", "HeaderServerAddressSettings": "Server Address Settings", "HeaderServerSettings": "Server Settings", - "HeaderSettings": "Settings", "HeaderSortBy": "Sort By", "HeaderSortOrder": "Sort Order", "HeaderSpecialEpisodeInfo": "Special Episode Info", @@ -1032,7 +1000,6 @@ "LabelAppNameExample": "Example: Sickbeard, Sonarr", "LabelArtists": "Artists:", "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.", "OptionImdbRating": "IMDb Rating", diff --git a/src/strings/fi.json b/src/strings/fi.json index 9481f59b4f..b915ebd9c5 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", - "ButtonResetPassword": "Nollaa salasana", "ButtonSignOut": "Sign out", "Delete": "Poista", "DeleteImage": "Poista Kuva", @@ -34,7 +33,6 @@ "PasswordSaved": "Salasana tallennettu.", "Save": "Tallenna", "SettingsSaved": "Asetukset tallennettu.", - "TabProfile": "Profiili", "TabProfiles": "Profiilit", "TellUsAboutYourself": "Kerro meille itsestäsi", "ThisWizardWillGuideYou": "Tämä työkalu auttaa sinua asennusprosessin aikana. Valitse kieli aloittaaksesi.", @@ -104,7 +102,6 @@ "ButtonForgotPassword": "Unohtuiko salasana", "ButtonFullscreen": "Kokonäyttötila", "ButtonGotIt": "Selvä", - "ButtonGuide": "Opas", "ButtonInfo": "Tiedot", "ButtonLibraryAccess": "Kiraston pääsy", "ButtonManualLogin": "Manuaalinen kirjautuminen", @@ -117,21 +114,17 @@ "ButtonParentalControl": "Lapsilukko", "ButtonPause": "Tauko", "ButtonPreviousTrack": "Edellinen raita", - "ButtonProfile": "Profiili", "ButtonQuickStartGuide": "Pikaopas", "ButtonRefreshGuideData": "Päivitä oppaan tiedot", "ButtonRemove": "Poista", "ButtonRename": "Nimeä uudelleen", "ButtonResetEasyPassword": "Nollaa helppo PIN-koodi", - "ButtonRestart": "Käynnistä uudelleen", "ButtonResume": "Jatka", "ButtonRevoke": "Peruuta", "ButtonScanAllLibraries": "Skannaa kaikki kirjastot", "ButtonSelectDirectory": "Valitse hakemisto", - "ButtonSelectServer": "Valitse palvelin", "ButtonSelectView": "Valitse näkymä", "ButtonSend": "Lähetä", - "ButtonSettings": "Asetukset", "ButtonShutdown": "Sammuta", "ButtonSignIn": "Kirjaudu sisään", "ButtonStart": "Käynnistä", @@ -274,7 +267,6 @@ "OptionSubstring": "Substring", "OptionSpecialEpisode": "Erikoisjaksot", "OptionSaveMetadataAsHidden": "Tallenna metadata ja kuvat piilotettuina tiedostoina", - "OptionRuntime": "Kesto", "OptionResumable": "Jatkettavissa oleva", "OptionResElement": "res element", "OptionReleaseDate": "Julkaisupäivä", @@ -285,12 +277,10 @@ "OptionProfileVideoAudio": "Video Audio", "OptionProfileVideo": "Video", "OptionProfilePhoto": "Kuva", - "OptionProfileAudio": "Audio", "OptionPremiereDate": "Ensi-iltapäivä", "OptionPosterCard": "Julistekortti", "OptionPoster": "Juliste", "OptionPlayCount": "Toistokerrat", - "OptionPlayed": "Toistettu", "OptionNew": "Uusi…", "OptionNameSort": "Nimi", "OptionMissingEpisode": "Puuttuvat jaksot", @@ -300,18 +290,13 @@ "OptionIsSD": "SD", "OptionIsHD": "HD", "OptionImdbRating": "IMDb Luokitus", - "OptionHomeVideos": "Kuvat", "OptionHideUser": "Piilota tämä käyttäjä kirjautumisnäkymästä", - "OptionHasTrailer": "Traileri", "OptionHasThemeVideo": "Tunnusvideo", "OptionHasThemeSong": "Tunnuskappale", - "OptionHasSubtitles": "Tekstitykset", "OptionHasSpecialFeatures": "Erikoisominaisuudet", - "OptionFavorite": "Suosikit", "OptionExtractChapterImage": "Ota käyttöön kappalekuvien luonti", "OptionExternallyDownloaded": "Ulkoinen lataus", "OptionEveryday": "Joka päivä", - "OptionEnded": "Loppuneet", "OptionEnableM2tsMode": "Ota käyttöön M2ts tila", "OptionEnableForAllTuners": "Ota käyttöön kaikille viritinlaitteille", "OptionEnableAccessToAllLibraries": "Salli pääsy kaikkiin kirjastoihin", @@ -326,7 +311,6 @@ "OptionDislikes": "Disliket", "OptionCustomUsers": "Mukautettu", "OptionCriticRating": "Kriitikoiden luokitus", - "OptionContinuing": "Jatkuvat", "OptionCommunityRating": "Yhteisön luokitus", "OptionBlockLiveTvChannels": "Live-TV kanavat", "OptionBanner": "Lippu", @@ -444,13 +428,7 @@ "HeaderAlert": "Hälytys", "HeaderActivity": "Toiminta", "HDPrograms": "HD-ohjelmat", - "OptionDownloadArtImage": "Taide", - "OptionDownloadDiscImage": "Levy", - "OptionDownloadBoxImage": "Laatikko", - "OptionDownloadBannerImage": "Lippu", - "OptionDownloadBackImage": "Tausta", "OptionDisableUser": "Poista tämä käyttäjä käytöstä", - "OptionDescending": "Laskeva", "OptionDatePlayed": "Toistopäivä", "OptionDateAddedImportTime": "Käytä kirjastoon skannauspäivää", "OptionDateAddedFileTime": "Käytä tiedoston luontipäivää", @@ -459,8 +437,6 @@ "OptionBluray": "Blu-ray", "OptionBlockTvShows": "TV-sarjat", "OptionBlockTrailers": "Trailerit", - "OptionBlockMusic": "Musiikki", - "OptionBlockMovies": "Elokuvat", "HeaderMoreLikeThis": "Lisää tällaista", "HeaderMetadataSettings": "Metadata-asetukset", "MoreMediaInfo": "Mediainfo", @@ -476,7 +452,6 @@ "HeaderFrequentlyPlayed": "Usein toistetut", "HeaderFetcherSettings": "Hakijan asetukset", "HeaderFetchImages": "Hae kuvia:", - "OptionBlockBooks": "Kirjat", "Filters": "Suodattimet", "FastForward": "Hyppää eteenpäin", "YadifBob": "YADIF Bob", @@ -616,7 +591,6 @@ "TagsValue": "Tunnisteet: {0}", "Tags": "Tunnisteet", "TabUpcoming": "Tulevat", - "TabSettings": "Asetukset", "TabServer": "Palvelin", "TabScheduledTasks": "Ajastetut tehtävät", "TabResponses": "Vastaukset", @@ -681,9 +655,6 @@ "RecordingCancelled": "Tallennus peruttu.", "RecordSeries": "Tallenna sarja", "Record": "Tallenna", - "OptionAuto": "Auto", - "OptionAscending": "Nousevassa järjestyksessä", - "OptionArtist": "Artisti", "OptionAllowVideoPlaybackTranscoding": "Salli transkoodausta vaativan videon toistaminen", "OptionAllowVideoPlaybackRemuxing": "Salli videon toistaminen, joka vaatii muuntamista ilman koodausta", "OptionAllowMediaPlaybackTranscodingHelp": "Transkoodauksen estäminen voi aiheuttaa toistovirheitä Jellyfin-sovelluksissa ei-tuettujen mediaformaattien takia.", @@ -704,8 +675,6 @@ "OptionAllowLinkSharing": "Salli jakaminen sosiaaliseen mediaan", "OptionAllowAudioPlaybackTranscoding": "Salli äänen toistaminen joka vaatii uudelleenpakkausta", "OptionAllUsers": "Kaikki käyttäjät", - "OptionAlbumArtist": "Albumin artisti", - "OptionAlbum": "Albumi", "OptionAdminUsers": "Järjestelmänvalvojat", "Option3D": "3D", "MusicVideo": "Musiikkivideo", @@ -825,7 +794,6 @@ "HeaderSubtitleAppearance": "Tekstityksen ulkonäkö", "HeaderStatus": "Tila", "HeaderServerSettings": "Palvelimen asetukset", - "HeaderSettings": "Asetukset", "HeaderSendMessage": "Lähetä viesti", "HeaderSelectServer": "Valitse palvelin", "HeaderSeasons": "Kaudet", diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index bcbba8eb66..8ac6d94679 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -5,7 +5,6 @@ "ButtonCancel": "Annuler", "ButtonGotIt": "J'ai compris", "ButtonQuickStartGuide": "Guide de démarrage rapide", - "ButtonRestart": "Redémarrer", "ButtonSignOut": "Sign out", "ConfirmDeleteItem": "La suppression de cet élément le supprimera à la fois du système de fichiers et de votre médiathèque. Êtes-vous sûr de vouloir continuer ?", "Delete": "Supprimer", @@ -144,7 +143,6 @@ "ButtonEditOtherUserPreferences": "Modifier ce profil utilisateur, son avatar et ses préférences personnelles.", "ButtonForgotPassword": "Mot de passe oublié", "ButtonFullscreen": "Plein écran", - "ButtonGuide": "Guide", "ButtonInfo": "Informations", "ButtonLibraryAccess": "Accès à la médiathèque", "ButtonManualLogin": "Connexion manuelle", @@ -192,19 +190,15 @@ "ButtonStart": "Démarrer", "ButtonSignIn": "Se connecter", "ButtonShutdown": "Éteindre", - "ButtonSettings": "Paramètres", "ButtonSend": "Envoyer", - "ButtonSelectServer": "Sélectionner le serveur", "ButtonSelectDirectory": "Sélectionner le répertoire", "ButtonScanAllLibraries": "Analyser toutes les médiathèques", "ButtonRevoke": "Révoquer", "ButtonResume": "Reprendre la lecture", - "ButtonResetPassword": "Réinitialiser le mot de passe", "ButtonResetEasyPassword": "Remettre à nouveau le code NIP facile", "ButtonRename": "Renommer", "ButtonRemove": "Enlever", "ButtonRefreshGuideData": "Rafraîchir les données de guide", - "ButtonProfile": "Profil", "ButtonPreviousTrack": "Piste précédente", "ButtonPause": "Pause", "ButtonParentalControl": "Contrôle parentale", diff --git a/src/strings/fr.json b/src/strings/fr.json index ad0c997ba7..7bc943a1c8 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -72,22 +72,17 @@ "ButtonOpen": "Ouvrir", "ButtonParentalControl": "Contrôle parental", "ButtonPreviousTrack": "Piste précédente", - "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Guide de démarrage rapide", "ButtonRefreshGuideData": "Actualiser les données du guide", "ButtonRemove": "Supprimer", "ButtonRename": "Renommer", "ButtonResetEasyPassword": "Réinitialiser le code easy PIN", - "ButtonResetPassword": "Réinitialiser le mot de passe", - "ButtonRestart": "Redémarrer", "ButtonResume": "Reprendre", "ButtonRevoke": "Révoquer", "ButtonScanAllLibraries": "Actualiser toutes les médiathèques", "ButtonSelectDirectory": "Sélectionner le répertoire", - "ButtonSelectServer": "Sélectionner le serveur", "ButtonSelectView": "Sélectionnez une vue", "ButtonSend": "Envoyer", - "ButtonSettings": "Paramètres", "ButtonShutdown": "Éteindre", "ButtonSignIn": "Se connecter", "ButtonSignOut": "Se déconnecter", @@ -375,7 +370,6 @@ "HeaderSeriesOptions": "Options de la série", "HeaderSeriesStatus": "Statut de la série", "HeaderServerSettings": "Paramètres du serveur", - "HeaderSettings": "Paramètres", "HeaderSetupLibrary": "Configurer vos médiathèques", "HeaderSortBy": "Trier par", "HeaderSortOrder": "Ordre de tri", @@ -869,7 +863,6 @@ "OnlyForcedSubtitlesHelp": "Seuls les sous-titres marqués comme forcés seront chargés.", "OnlyImageFormats": "Seulement les formats image (VOBSUB, PGS, SUB)", "OptionAdminUsers": "Administrateurs", - "OptionAlbumArtist": "Artiste de l'album", "OptionAllUsers": "Tous les utilisateurs", "OptionAllowAudioPlaybackTranscoding": "Permettre la lecture audio nécessitant un transcodage", "OptionAllowBrowsingLiveTv": "Autoriser l'accès à la TV en direct", @@ -886,20 +879,13 @@ "OptionAllowUserToManageServer": "Autoriser la gestion du serveur à cet utilisateur", "OptionAllowVideoPlaybackRemuxing": "Autoriser la lecture de vidéos nécessitant une conversion sans réencodage", "OptionAllowVideoPlaybackTranscoding": "Autoriser la lecture de vidéos nécessitant un transcodage", - "OptionArtist": "Artiste", - "OptionAscending": "Croissant", - "OptionAuto": "Automatique", "OptionAutomaticallyGroupSeries": "Fusionner automatiquement les séries qui sont réparties en plusieurs dossiers", "OptionAutomaticallyGroupSeriesHelp": "Les séries qui sont réparties en plusieurs dossiers dans la médiathèque seront automatiquement fusionnées en une seule série.", - "OptionBlockBooks": "Livres", "OptionBlockChannelContent": "Chaînes Internet", "OptionBlockLiveTvChannels": "Chaînes TV en direct", - "OptionBlockMovies": "Films", - "OptionBlockMusic": "Musique", "OptionBlockTrailers": "Bandes-annonces", "OptionBlockTvShows": "Émissions TV", "OptionCommunityRating": "Note de la communauté", - "OptionContinuing": "En cours", "OptionCriticRating": "Note des critiques", "OptionCustomUsers": "Personnalisé", "OptionDaily": "Quotidien", @@ -907,16 +893,11 @@ "OptionDateAddedFileTime": "Utiliser la date de création du fichier", "OptionDateAddedImportTime": "Utiliser la date d'ajout dans la médiathèque", "OptionDatePlayed": "Date de lecture", - "OptionDescending": "Décroissant", "OptionDisableUser": "Désactiver cet utilisateur", "OptionDisableUserHelp": "Le serveur n'autorisera pas de connexion de cet utilisateur. Les connexions existantes seront interrompues.", "OptionDislikes": "Pas aimés", "OptionDisplayFolderView": "Afficher une vue de dossiers pour montrer les dossiers multimédia en intégralité", "OptionDisplayFolderViewHelp": "Afficher les dossier au côté de votre médiathèque. Cela peut être utile si vous souhaitez avoir une vue complète des dossiers.", - "OptionDownloadBackImage": "Dos", - "OptionDownloadBannerImage": "Bannière", - "OptionDownloadBoxImage": "Boîtier", - "OptionDownloadDiscImage": "Disque", "OptionDownloadImagesInAdvance": "Télécharger les images en avance", "OptionDownloadImagesInAdvanceHelp": "Par défaut, la plupart des images sont téléchargées seulement lorsqu'un client le demande. Sélectionnez cette option pour télécharger toutes les images à l'avance, lorsqu'un nouveau média est importé. Cela peut allonger significativement la durée d'actualisation de la médiathèque.", "OptionDownloadPrimaryImage": "Principal", @@ -931,22 +912,17 @@ "OptionEnableForAllTuners": "Autoriser pour tous les tuners", "OptionEnableM2tsMode": "Activer le mode M2TS", "OptionEnableM2tsModeHelp": "Active le mode M2TS lors d'encodage en MPEGTS.", - "OptionEnded": "Terminé", "OptionEquals": "Égal", "OptionEstimateContentLength": "Estimer la taille du contenu lors d'encodage", "OptionEveryday": "Tous les jours", "OptionExternallyDownloaded": "Téléchargement externe", "OptionExtractChapterImage": "Activer l'extraction des images de chapitres", - "OptionFavorite": "Favoris", "OptionHasSpecialFeatures": "Bonus", - "OptionHasSubtitles": "Sous-titres", "OptionHasThemeSong": "Chanson thème", "OptionHasThemeVideo": "Vidéo du générique", - "OptionHasTrailer": "Bande-annonce", "OptionHideUser": "Ne pas afficher cet utilisateur dans les écrans de connexion", "OptionHideUserFromLoginHelp": "Recommandé pour les comptes administrateurs privés ou cachés. L'utilisateur devra s'authentifier manuellement en saisissant son nom d'utilisateur et son mot de passe.", "OptionHlsSegmentedSubtitles": "Sous-titres segmentés HLS", - "OptionHomeVideos": "Photos", "OptionIgnoreTranscodeByteRangeRequests": "Ignore les requêtes de transcodage de plage d'octets", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Ces requêtes seront honorées mais l'en-tête de plage d'octets sera ignoré.", "OptionImdbRating": "Note IMDb", @@ -963,7 +939,6 @@ "OptionPlainVideoItems": "Afficher les vidéos en tant que simples éléments vidéos", "OptionPlainVideoItemsHelp": "Toutes les vidéos seront affichées dans le DIDL en tant que \"object.item.videoItem\" au lieu de formats plus spécifiques comme, par exemple \"object.item.videoItem.movie\".", "OptionPlayCount": "Nombre de lectures", - "OptionPlayed": "Lu", "OptionPremiereDate": "Date de la première", "OptionProfileVideo": "Vidéo", "OptionProfileVideoAudio": "Vidéo Audio", @@ -975,7 +950,6 @@ "OptionRequirePerfectSubtitleMatchHelp": "En activant cette option, seuls les sous-titres ayant été testés et vérifiés avec votre fichier vidéo seront téléchargés. En désactivant cette option, vous aurez plus de chance que des sous-titres soient téléchargés, mais ils risquent d'être décalés ou incorrects.", "OptionResElement": "Résolution d'élément", "OptionResumable": "Reprise possible", - "OptionRuntime": "Durée", "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", @@ -983,7 +957,6 @@ "OptionTrackName": "Titre", "OptionTvdbRating": "Note d'évaluation TVDB", "OptionUnairedEpisode": "Épisodes non diffusés", - "OptionUnplayed": "Non lu", "OptionWakeFromSleep": "Sortie de veille", "OptionWeekdays": "Jours de la semaine", "OptionWeekends": "Week-ends", @@ -1129,12 +1102,10 @@ "TabNfoSettings": "Paramètres NFO", "TabOther": "Autre", "TabParentalControl": "Contrôle Parental", - "TabProfile": "Profil", "TabProfiles": "Profils", "TabResponses": "Réponses", "TabScheduledTasks": "Tâches planifiées", "TabServer": "Serveur", - "TabSettings": "Paramètres", "TabUpcoming": "À venir", "Tags": "Étiquettes", "TagsValue": "Mots clés: {0}", @@ -1204,7 +1175,6 @@ "Art": "Illustration", "Audio": "Audio", "Auto": "Auto", - "ButtonGuide": "Guide", "ButtonPause": "Pause", "Collections": "Collections", "Extras": "Extras", @@ -1225,14 +1195,11 @@ "MessageImageTypeNotSelected": "Veuillez sélectionner un type d'image dans le menu déroulant.", "Normal": "Normal", "Option3D": "3D", - "OptionAlbum": "Album", "OptionBluray": "Blu-ray", - "OptionDownloadArtImage": "Illustration", "OptionDownloadLogoImage": "Logo", "OptionDownloadMenuImage": "Menu", "OptionIsHD": "HD", "OptionIsSD": "SD", - "OptionProfileAudio": "Audio", "OptionProfilePhoto": "Photo", "OptionProtocolHttp": "HTTP", "OptionRegex": "Expression régulière", diff --git a/src/strings/gsw.json b/src/strings/gsw.json index a16a28910c..06ea542d33 100644 --- a/src/strings/gsw.json +++ b/src/strings/gsw.json @@ -3,7 +3,6 @@ "ButtonCancel": "Abbreche", "ButtonOk": "OK", "ButtonQuickStartGuide": "Schnellstart Instruktione", - "ButtonResetPassword": "Passwort zrug setze", "ButtonSignOut": "Uslogge", "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", @@ -47,31 +46,21 @@ "MoreUsersCanBeAddedLater": "Meh User chönt spöter im Dashboard hinzuegfüegt werde.", "NewCollectionNameExample": "Biispell: Star Wars Sammlig", "MessageNoNextUpItems": "Nix da. Fang mal a Serie luege!", - "OptionAlbumArtist": "Album-Artist", - "OptionAscending": "Ufstiigend", "OptionBluray": "BluRay", "OptionCommunityRating": "Community Bewertig", - "OptionContinuing": "Fortlaufend", "OptionCriticRating": "Kritiker Bewertig", "OptionDateAdded": "Dezue gfüegt am", "OptionDatePlayed": "Abgspellt am", - "OptionDescending": "Abstiigend", "OptionDvd": "DVD", "OptionEnableAccessFromAllDevices": "Aktiviere de Zuegriff vo allne Grät", "OptionEnableAccessToAllChannels": "Aktiviere de Zuegriff zu allne Kanäl", "OptionEnableAccessToAllLibraries": "Aktiviere de Zuegriff zu allne Bibliotheke", - "OptionEnded": "Beendent", - "OptionFavorite": "Favorite", - "OptionHasSubtitles": "Undertitel", "OptionImdbRating": "IMDB Bewertig", "OptionParentalRating": "Altersfriigab", "OptionPlayCount": "Zähler", - "OptionPlayed": "Gspellt", "OptionPremiereDate": "Premiere Datum", "OptionReleaseDate": "Release Ziit", "OptionResumable": "Chan fortgsetzt werde", - "OptionRuntime": "Laufziit", - "OptionUnplayed": "Ungspellt", "ParentalRating": "Parental Rating", "Saturday": "Samstig", "Save": "Speichere", @@ -84,7 +73,6 @@ "TabMyPlugins": "Miini Plugins", "TabNetworks": "Studios", "TabNotifications": "Mitteilige", - "TabProfile": "Profil", "TabProfiles": "Profil", "TabUpcoming": "Usstehend", "TellUsAboutYourself": "Verzell was über dech selber", diff --git a/src/strings/he.json b/src/strings/he.json index 828f140465..ef2740ba8c 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -23,8 +23,6 @@ "ButtonQuickStartGuide": "מדריך מהיר", "ButtonRefreshGuideData": "רענן את מדריך השידור", "ButtonRemove": "הסר", - "ButtonResetPassword": "איפוס סיסמא", - "ButtonRestart": "הפעל מחדש", "ButtonSelectDirectory": "בחר תיקיות", "ButtonShutdown": "כבה", "ButtonSignIn": "היכנס", @@ -275,44 +273,28 @@ "NoSubtitleSearchResultsFound": "לא נמצאו תוצאות.", "Option3D": "תלת מימד", "OptionAdminUsers": "מנהלים", - "OptionAlbum": "אלבום", - "OptionAlbumArtist": "אמן אלבום", "OptionAllUsers": "כל המשתמשים", "OptionAllowLinkSharing": "אפשר שיתוף ברשתות חברתיות", "OptionAllowMediaPlayback": "אפשר ניגון מדיה", "OptionAllowUserToManageServer": "אפשר למשתמש זה לנהל את השרת", - "OptionArtist": "אמן", - "OptionAscending": "סדר עולה", - "OptionBlockMovies": "סרטים", "OptionBlockTvShows": "תוכניות טלויזיה", "OptionBluray": "בלו-ריי", "OptionCommunityRating": "דירוג הקהילה", - "OptionContinuing": "ממשיך", "OptionCriticRating": "ציון מבקרים", "OptionCustomUsers": "מותאם אישית", "OptionDaily": "כל יום", "OptionDateAdded": "תאריך הוספה", "OptionDatePlayed": "תאריך ניגון", - "OptionDescending": "סדר יורד", "OptionDisableUser": "בטל משתמש זה", "OptionDisableUserHelp": "השרת לא יאפשר חיבורים ממשתמש זה. חיבורים פעילים יבוטלו מייד.", "OptionDislikes": "לא אוהב", - "OptionDownloadArtImage": "עטיפה", - "OptionDownloadBackImage": "גב", - "OptionDownloadBannerImage": "באנר", - "OptionDownloadBoxImage": "מארז", - "OptionDownloadDiscImage": "דיסק", "OptionDownloadLogoImage": "לוגו", "OptionDownloadMenuImage": "תפריט", "OptionDownloadPrimaryImage": "ראשי", "OptionDvd": "DVD", - "OptionEnded": "הסתיים", - "OptionFavorite": "מועדפים", "OptionHasSpecialFeatures": "מאפיינים מיוחדים", - "OptionHasSubtitles": "כתוביות", "OptionHasThemeSong": "שיר נושא", "OptionHasThemeVideo": "סרט נושא", - "OptionHasTrailer": "קדימון", "OptionHideUser": "הסתר משתמש זה בחלון ההתחברות", "OptionImdbRating": "דירוג IMDb", "OptionLikes": "נבחרים", @@ -322,19 +304,15 @@ "OptionOnInterval": "כל פרק זמן", "OptionParentalRating": "דירוג בקרת הורים", "OptionPlayCount": "כמות ניגונים", - "OptionPlayed": "נוגן", "OptionPremiereDate": "תאריך בכורה", - "OptionProfileAudio": "צליל", "OptionProfilePhoto": "תמונה", "OptionProfileVideo": "וידאו", "OptionProfileVideoAudio": "צליל וידאו", "OptionResumable": "ניתן להמשיך", - "OptionRuntime": "זמן ריצה", "OptionSpecialEpisode": "ספיישלים", "OptionTrackName": "שם הרצועה", "OptionTvdbRating": "דירוג TVDB", "OptionUnairedEpisode": "פרקים שלא שודרו", - "OptionUnplayed": "לא נוגן", "OptionWakeFromSleep": "הער ממצב שינה", "OptionWeekly": "כל שבוע", "OriginalAirDateValue": "תאריך אוויר מקורי: {0}", @@ -414,10 +392,8 @@ "TabMyPlugins": "התוספים שלי", "TabNetworks": "רשתות", "TabNotifications": "התראות", - "TabProfile": "פרופיל", "TabProfiles": "פרופילים", "TabServer": "שרת", - "TabSettings": "הגדרות", "TabUpcoming": "בקרוב", "Tags": "מילות מפתח", "TellUsAboutYourself": "ספר לנו על עצמך", @@ -509,10 +485,8 @@ "ButtonTrailer": "קדימון", "ButtonSplit": "פיצול", "ButtonStop": "עצור", - "ButtonSettings": "הגדרות", "ButtonSend": "שלח", "ButtonSelectView": "בחר תצוגה", - "ButtonSelectServer": "בחר שרת", "ButtonRename": "שנה שם", "ButtonPause": "השהה", "ButtonParentalControl": "בקרת הורים", @@ -533,7 +507,6 @@ "HeaderStopRecording": "עצור הקלטה", "HeaderSortOrder": "סדר מיון", "HeaderSortBy": "מיין לפי", - "HeaderSettings": "הגדרות", "HeaderSendMessage": "שלח הודעה", "HeaderSelectServer": "בחר שרת", "HeaderSecondsValue": "{0} שניות", @@ -626,12 +599,10 @@ "ButtonRevoke": "בטל", "TabScheduledTasks": "משימות מתוזמנות", "ButtonResume": "המשך", - "ButtonProfile": "פרופיל", "ButtonOpen": "פתח", "HeaderTracks": "רצועות", "ButtonPreviousTrack": "הרצועה הקודמת", "ButtonNextTrack": "הרצועה הבאה", - "ButtonGuide": "מדריך", "ButtonForgotPassword": "שחזור סיסמה", "ButtonEditOtherUserPreferences": "ערוך את הפרופיל, התמונה וההגדרות האישיות של משתמש זה.", "ButtonChangeServer": "החלף שרת", @@ -724,9 +695,7 @@ "OptionDateAddedImportTime": "השתמש בתאריך הסריקה לתוך הספרייה", "OptionDateAddedFileTime": "השתמש בתאריך יצירת הקובץ", "OptionBlockTrailers": "קדימונים", - "OptionBlockMusic": "מוזיקה", "OptionBlockLiveTvChannels": "ערוצי שידורים חיים", - "OptionBlockBooks": "ספרים", "OptionAllowRemoteSharedDevices": "אפשר שליטה מרחוק על מכשירים משותפים", "OptionAllowRemoteControlOthers": "אפשר שליטה מרחוק על משתמשים אחרים", "SelectAdminUsername": "נא לבחור שם משתמש עבור חשבון המנהל.", @@ -736,7 +705,6 @@ "HeaderAdmin": "מנהל", "Suggestions": "המלצות", "MessageSyncPlayNoGroupsAvailable": "אין קבוצות זמינות. התחל לנגן משהו קודם.", - "OptionHomeVideos": "תמונות", "Home": "בית", "LabelServerName": "שם השרת:", "TabPlugins": "תוספים", diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index bacff9aca2..3e17566d5a 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -38,7 +38,6 @@ "ButtonManualLogin": "मैनुअल लॉगिन", "ButtonLibraryAccess": "पुस्तकालय का उपयोग", "ButtonInfo": "जानकारी", - "ButtonGuide": "मार्गदर्शक", "ButtonGotIt": "समझ गया", "ButtonFullscreen": "पूर्ण स्क्रीन", "ButtonForgotPassword": "पासवर्ड भूल गए", diff --git a/src/strings/hr.json b/src/strings/hr.json index 169d50ad6c..2bde808701 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -29,7 +29,6 @@ "ButtonForgotPassword": "Zaboravili ste lozinku", "ButtonFullscreen": "Puni zaslon", "ButtonGotIt": "Shvaćam", - "ButtonGuide": "Vodič", "ButtonLibraryAccess": "Pristup biblioteci", "ButtonManualLogin": "Ručna prijava", "ButtonMore": "Više", @@ -40,21 +39,16 @@ "ButtonParentalControl": "Roditeljska kontrola", "ButtonPause": "Pauza", "ButtonPreviousTrack": "Prethodna pjesma", - "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Vodič za brzi početak", "ButtonRefreshGuideData": "Osvježi TV vodič", "ButtonRemove": "Ukloni", "ButtonRename": "Preimenuj", "ButtonResetEasyPassword": "Poništi jednostavan PIN kod", - "ButtonResetPassword": "Resetiraj lozinku", - "ButtonRestart": "Ponovo pokreni", "ButtonResume": "Nastavi", "ButtonRevoke": "Opozvati", "ButtonSelectDirectory": "Odaberi mapu", - "ButtonSelectServer": "Odaberi Server", "ButtonSelectView": "Odaberi pogled", "ButtonSend": "Pošalji", - "ButtonSettings": "Postavke", "ButtonShutdown": "Ugasi", "ButtonSignIn": "Prijava", "ButtonSignOut": "Odjava", @@ -244,7 +238,6 @@ "HeaderSendMessage": "Pošalji poruku", "HeaderSeriesOptions": "Opcije serija", "HeaderServerSettings": "Postavke Servera", - "HeaderSettings": "Postavke", "HeaderSetupLibrary": "Postavite vaše medijske biblioteke", "HeaderSortBy": "Složi po", "HeaderSortOrder": "Redoslijed", @@ -633,8 +626,6 @@ "NoSubtitleSearchResultsFound": "Nije ništa pronađeno.", "NumLocationsValue": "{0} mape", "OptionAdminUsers": "Administratori", - "OptionAlbum": "Albumu", - "OptionAlbumArtist": "Albumu izvođača", "OptionAllUsers": "Svi korisnici", "OptionAllowAudioPlaybackTranscoding": "Dopusti audio reprodukciju koja zahtijeva konvertiranje", "OptionAllowBrowsingLiveTv": "Dopusti pristup TV uživo", @@ -649,18 +640,11 @@ "OptionAllowUserToManageServer": "Dopusti ovom korisniku da upravlja serverom", "OptionAllowVideoPlaybackRemuxing": "Dopusti video reprodukciju koja zahtijeva konvertiranje bez ponovnog kodiranja", "OptionAllowVideoPlaybackTranscoding": "Dopusti video reprodukciju koja zahtijeva konvertiranje", - "OptionArtist": "Izvođaču", - "OptionAscending": "Uzlazno", - "OptionAuto": "Automatski", - "OptionBlockBooks": "Knjige", "OptionBlockChannelContent": "Sadržaj Internet kanala", "OptionBlockLiveTvChannels": "TV kanali uživo", - "OptionBlockMovies": "Filmovi", - "OptionBlockMusic": "Glazba", "OptionBlockTrailers": "Kratki filmovi", "OptionBlockTvShows": "TV emisije", "OptionCommunityRating": "Ocjeni zajednice", - "OptionContinuing": "Nastavlja se", "OptionCriticRating": "Ocjeni kritike", "OptionCustomUsers": "Prilagođeno", "OptionDaily": "Dnevno", @@ -668,17 +652,11 @@ "OptionDateAddedFileTime": "Koristi datum stvaranja datoteke", "OptionDateAddedImportTime": "Koristi skenirano datumom u biblioteku", "OptionDatePlayed": "Datumu izvođenja", - "OptionDescending": "Silazno", "OptionDisableUser": "Onemogući ovog korisnika", "OptionDisableUserHelp": "Ako je onemogućen server neće dopustiti nikakve veze od ovog korisnika. Postojeće veze će odmah biti prekinute.", "OptionDislikes": "Nevolim", "OptionDisplayFolderView": "Prikaz pogleda mape za prikaz obične medijske mape", "OptionDisplayFolderViewHelp": "Ako je omogućeno, Jellyfin aplikacija će prikazati kategoriju mape uz vašu medijsku biblioteku. To je korisno ako želite imati običan pogled mapa.", - "OptionDownloadArtImage": "Grafike", - "OptionDownloadBackImage": "Druga str.", - "OptionDownloadBannerImage": "Zaglavlje", - "OptionDownloadBoxImage": "Kutija", - "OptionDownloadDiscImage": "Disk", "OptionDownloadImagesInAdvance": "Preuzmi slike unaprijed", "OptionDownloadMenuImage": "Meni", "OptionDownloadPrimaryImage": "Primarno", @@ -692,22 +670,17 @@ "OptionEnableForAllTuners": "Omogući za sve TV/Radio uređaje", "OptionEnableM2tsMode": "Omogući M2ts način", "OptionEnableM2tsModeHelp": "Omogući M2ts način kada se kodira u mpegts.", - "OptionEnded": "Završeno", "OptionEquals": "Jednako", "OptionEstimateContentLength": "Procjena duljine sadržaja kada se konvertira", "OptionEveryday": "Svaki dan", "OptionExternallyDownloaded": "Vanjsko preuzimanje", "OptionExtractChapterImage": "Omogući preuzimanje slika iz poglavlja", - "OptionFavorite": "Omiljeni", "OptionHasSpecialFeatures": "Specijalne opcije", - "OptionHasSubtitles": "Titlovi", "OptionHasThemeSong": "Pjesma teme", "OptionHasThemeVideo": "Video teme", - "OptionHasTrailer": "Kratki video", "OptionHideUser": "Sakrij korisnika sa prozora prijave", "OptionHideUserFromLoginHelp": "Korisno za privatne ili skrivene administratorske račune. Korisnik će se morati prijaviti ručno unosom svojeg korisničkog imena i lozinke.", "OptionHlsSegmentedSubtitles": "Hls dijelovi titlova prijevoda", - "OptionHomeVideos": "Kućni videi i slike", "OptionIgnoreTranscodeByteRangeRequests": "Zanemari raspon zahtjeva prikrivenog bajta", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Ako je omogućeno, zahtjevi će biti poštovani, ali će ignorirati zaglavlja raspona bajta.", "OptionImdbRating": "IMDb ocjena", @@ -724,7 +697,6 @@ "OptionPlainVideoItems": "Prikaži sve video zapise kao jednostavne video stavke", "OptionPlainVideoItemsHelp": "Ako je omogućeno, sav video se prezentira u DIDL-u kao \"objekt.stavka.videoStavka\" umjesto više specijaliziranog tipa kao \"objekt.stavka.videoStavka.film\".", "OptionPlayCount": "Broju izvođenja", - "OptionPlayed": "Izvođeni", "OptionPremiereDate": "Datum premijere", "OptionProfilePhoto": "Slika", "OptionProtocolHls": "Http strujanje uživo", @@ -733,7 +705,6 @@ "OptionReportByteRangeSeekingWhenTranscodingHelp": "To je potrebno za neke uređaje koji ne mogu dobro koristiti pretraživanje vremena.", "OptionRequirePerfectSubtitleMatch": "Samo preuzimanje titlova prijevoda koji su savršen izbor za moje video datoteke", "OptionResumable": "Nastavi", - "OptionRuntime": "Trajanje", "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", @@ -741,7 +712,6 @@ "OptionTrackName": "Nazivu pjesme", "OptionTvdbRating": "Ocjeni Tvdb", "OptionUnairedEpisode": "Ne emitirane epizode", - "OptionUnplayed": "Neizvođeni", "OptionWakeFromSleep": "Pokreni iz stanja mirovanja", "OptionWeekdays": "Radni dani", "OptionWeekends": "Vikendi", @@ -844,11 +814,9 @@ "TabOther": "Ostalo", "TabParentalControl": "Roditeljska kontrola", "TabPlugins": "Dodaci", - "TabProfile": "Profil", "TabProfiles": "Profili", "TabResponses": "Odazivi", "TabScheduledTasks": "Zakazani zadaci", - "TabSettings": "Postavke", "TabStreaming": "Strujanje", "TabUpcoming": "Uskoro", "Tags": "Oznake", @@ -967,7 +935,6 @@ "OptionThumb": "Sličica", "OptionProtocolHttp": "HTTP", "OptionProfileVideo": "Video", - "OptionProfileAudio": "Audio", "OptionPoster": "Poster", "OptionList": "Lista", "OptionIsSD": "SD", diff --git a/src/strings/hu.json b/src/strings/hu.json index c49b1ffad3..921cc3c64d 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -31,19 +31,14 @@ "ButtonParentalControl": "Szülői felügyelet", "ButtonPause": "Szünet", "ButtonPreviousTrack": "Előző sáv", - "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Gyorsbeállítás varázsló", "ButtonRemove": "Eltávolítás", "ButtonRename": "Átnevezés", "ButtonResetEasyPassword": "Pin kód visszaállítása", - "ButtonResetPassword": "Jelszó visszaállítás", - "ButtonRestart": "Újraindítás", "ButtonResume": "Folytatás", "ButtonScanAllLibraries": "Minden könyvtár beolvasása", "ButtonSelectDirectory": "Könyvtár választása", - "ButtonSelectServer": "Szerver Kiválasztás", "ButtonSend": "Küldés", - "ButtonSettings": "Beállítások", "ButtonShutdown": "Leállítás", "ButtonSignIn": "Bejelentkezés", "ButtonSignOut": "Kijelentkezés", @@ -158,7 +153,6 @@ "HeaderSelectMetadataPath": "Válaszd ki a metaadat útvonalat", "HeaderSelectServer": "Szerver Kiválasztás", "HeaderSendMessage": "Üzenet küldése", - "HeaderSettings": "Beállítások", "HeaderSetupLibrary": "Média könyvtárak beállítása", "HeaderSortBy": "Megjelenítés", "HeaderSortOrder": "Sorrend", @@ -327,34 +321,24 @@ "OptionAllowRemoteControlOthers": "Egyéb felhasználók távoli irányításának engedélyezése", "OptionAllowRemoteSharedDevices": "Megosztott eszközök távirányításának engedélyezése", "OptionAllowUserToManageServer": "Szerver kezelés engedélyezése a felhasználónak", - "OptionAscending": "Növekvő", - "OptionBlockMovies": "Filmek", "OptionBlockTrailers": "Előzetesek", "OptionCommunityRating": "Közösségi értékelés", "OptionCriticRating": "Kritikusok értékelése", "OptionDaily": "Napi", "OptionDateAdded": "Hozzáadva", "OptionDatePlayed": "Lejátszási dátum", - "OptionDescending": "Csökkenő", "OptionDisableUser": "Felhasználó letiltása", "OptionDislikes": "Nemtetszések", - "OptionDownloadBackImage": "Vissza", - "OptionDownloadBoxImage": "Doboz", - "OptionDownloadDiscImage": "Lemez", "OptionDownloadLogoImage": "Logó", "OptionDownloadMenuImage": "Menü", "OptionEnableAccessFromAllDevices": "Hozzáférés engedélyezése minden eszközről", "OptionEnableAccessToAllChannels": "Hozzáférés engedélyezése minden csatornához", "OptionEnableAccessToAllLibraries": "Hozzáférés engedélyezése minden könyvtárhoz", "OptionExternallyDownloaded": "Külső letöltés", - "OptionFavorite": "Kedvencek", "OptionHasSpecialFeatures": "Speciális lehetőségek", - "OptionHasSubtitles": "Feliratok", "OptionHasThemeSong": "Főcímdal", "OptionHasThemeVideo": "Filmzene", - "OptionHasTrailer": "Előzetes", "OptionHideUser": "Felhasználó elrejtése a bejelentkezési képernyőn", - "OptionHomeVideos": "Fényképek", "OptionImdbRating": "IMDb értékelés", "OptionLikes": "Kedveltek", "OptionMissingEpisode": "Hiányzó Epizódok", @@ -362,15 +346,11 @@ "OptionNew": "Új…", "OptionParentalRating": "Korhatár besorolás", "OptionPlayCount": "Lejátszások száma", - "OptionPlayed": "Megnézett", - "OptionProfileAudio": "Audió", "OptionProfileVideo": "Videó", "OptionReleaseDate": "Megjelenés dátuma", "OptionResumable": "Folytatható", - "OptionRuntime": "Játékidő", "OptionTrackName": "Sáv Címe", "OptionUnairedEpisode": "Nem vetített Epizódok", - "OptionUnplayed": "Nemjátszott", "OptionWeekly": "Heti", "OriginalAirDateValue": "Eredeti vetítés dátuma: {0}", "PackageInstallCancelled": "{0} ({1} verzió) telepítése megszakítva.", @@ -444,11 +424,9 @@ "TabOther": "Egyéb", "TabParentalControl": "Szülői Felügyelet", "TabPlugins": "Bővítmények", - "TabProfile": "Profil", "TabProfiles": "Profilok", "TabScheduledTasks": "Ütemezett feladatok", "TabServer": "Szerver", - "TabSettings": "Beállítások", "TabUpcoming": "Hamarosan érkezik", "Tags": "Címkék", "TellUsAboutYourself": "Mondj valamit magadról", @@ -965,8 +943,6 @@ "OneChannel": "Egy csatorna", "OnlyImageFormats": "Csak képformátumok (VOBSUB, PGS, SUB)", "Option3D": "3D", - "OptionAlbum": "Album", - "OptionAlbumArtist": "Album előadó", "OptionAllowAudioPlaybackTranscoding": "Engedélyezze az átkódolást igénylő audió lejátszást", "OptionAllowContentDownloading": "Média letöltésének és szinkronizálásának engedélyezése", "OptionAllowLinkSharingHelp": "Csak a médiaadatokat tartalmazó weboldalak oszthatók meg. A médiafájlok soha nem oszthatók meg nyilvánosan. A megosztás időlimithez van kötve, és lejár {0} nap elteltével.", @@ -976,17 +952,12 @@ "OptionAllowSyncTranscoding": "Engedélyezze a média letöltését és szinkronizálását, amely átkódolást igényel", "OptionAllowVideoPlaybackRemuxing": "Olyan videólejátszás engedélyezése, amely átalakítást igényel újrakódolás nélkül", "OptionAllowVideoPlaybackTranscoding": "Engedélyezze az átkódolást igénylő videó lejátszást", - "OptionArtist": "Előadó", - "OptionAuto": "Auto", "OptionAutomaticallyGroupSeries": "A több mappában elosztott sorozat automatikus összevonása", "OptionAutomaticallyGroupSeriesHelp": "A több mappában elosztott sorozat automatikusan egyesül egy sorozatba.", - "OptionBlockBooks": "Könyvek", "OptionBlockLiveTvChannels": "Élő TV csatornák", - "OptionBlockMusic": "Zene", "OptionBlockTvShows": "TV műsorok", "OptionBluray": "Blu-ray", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", - "OptionContinuing": "Folytatva", "OptionDateAddedImportTime": "Használja a könyvtárba beolvasási dátumot", "OptionDisableUserHelp": "A szerver nem engedélyezi a felhasználó csatlakozását. A meglévő kapcsolatok azonnal megszűnnek.", "OptionDisplayFolderView": "Az egyszerű média mappák mappanézetének megjelenítése", @@ -1008,7 +979,6 @@ "MessageNoTrailersFound": "Telepítsd a Trailer csatornát, hogy javítsd a filmélményt az internetes előzetesek könyvtárának hozzáadásával.", "OptionEnableM2tsMode": "M2ts mód engedélyezése", "OptionEnableM2tsModeHelp": "Engedélyezze az m2ts módot amikor mpegts kódolás történik.", - "OptionEnded": "Befejezett", "OptionEstimateContentLength": "Az átkódolás során becsülje meg a tartalom hosszát", "OptionEveryday": "Minden nap", "OptionHideUserFromLoginHelp": "Hasznos a privát vagy a rejtett rendszergazdák számára. A felhasználónak kézzel kell bejelentkeznie a felhasználónevének és jelszavának megadásával.", @@ -1170,7 +1140,6 @@ "AuthProviderHelp": "Válaszd ki az azonosítási szolgáltatást amely ezen felhasználó jelszavának ellenőrzését valósítja meg.", "BurnSubtitlesHelp": "Meghatározza, hogy a szervernek be kell-e égetnie a feliratot videó átkódolás esetén a felirat típusának függvényében. Ennek elkerülésével a szerver teljesítménye javul. Válaszd az Auto lehetőséget a kép alapú feliratok (pl. VOBSUB, PGS, SUB/IDX, stb.) és bizonyos ASS/SSA feliratok beégetéséhez.", "ButtonAddScheduledTaskTrigger": "Vezérlő Hozzáadása", - "ButtonGuide": "Műsorújság", "ButtonRefreshGuideData": "Műsorújság Frissítése", "ColorPrimaries": "Alapszínek", "DefaultSubtitlesHelp": "A feliratok a beágyazott metaadatok alapértelmezett és forced jelölői által meghatározottak alapján kerülnek betöltésre. A nyelvi beállítások akkor kerülnek figyelembe vételre, ha több lehetőség is rendelkezésre áll.", @@ -1268,8 +1237,6 @@ "OptionLoginAttemptsBeforeLockoutHelp": "A 0 érték beállítással az alapértelmezett beállítások lesznek bekapcsolva. A sima felhasználóknak 3, az adminisztrátoroknak 5 lehetőségük lesz. A -1 érték kikapcsolja ezt a funkciót.", "OptionList": "Lista", "OptionDownloadThumbImage": "Miniatűr", - "OptionDownloadBannerImage": "Banner", - "OptionDownloadArtImage": "Grafika", "OptionCustomUsers": "Egyéni", "OptionBlockChannelContent": "Internetes csatornatartalmak", "OptionBanner": "Banner", diff --git a/src/strings/id.json b/src/strings/id.json index fed8694ca2..9c7283c93d 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -20,7 +20,6 @@ "OptionEnableAccessToAllLibraries": "Aktifkan akses ke semua pustaka", "ParentalRating": "Parental Rating", "TabAccess": "Akses", - "TabProfile": "Profil", "TellUsAboutYourself": "Beritahu kami tentang anda", "ThisWizardWillGuideYou": "Panduan ini akan memandu Anda melalui proses setup. Untuk memulai, silahkan pilih bahasa yang Anda gunakan.", "UserProfilesIntro": "Jellyfin mendukung profil pengguna, memungkinkan setiap pengguna memiliki tampilan mereka sendiri, kondisi pemutaran dan pengawasan orang tua.", @@ -79,19 +78,15 @@ "ButtonStart": "Mulai", "ButtonSignIn": "Masuk", "ButtonShutdown": "Matikan", - "ButtonSettings": "Pengaturan", "ButtonSend": "Kirim", "ButtonSelectView": "Pilih tampilan", - "ButtonSelectServer": "Pilih Server", "ButtonSelectDirectory": "Pilih Direktori", "ButtonScanAllLibraries": "Pindai Semua Pustaka", "ButtonResume": "Lanjutkan", - "ButtonResetPassword": "Atur ulang Kata sandi", "ButtonResetEasyPassword": "Atur ulang kode pin mudah", "ButtonRename": "Ubah nama", "ButtonRemove": "Hapus", "ButtonRefreshGuideData": "Muat ulang Data Panduan", - "ButtonProfile": "Profil", "ButtonPause": "Jeda", "ButtonParentalControl": "Kendali orang tua", "ButtonOpen": "Buka", @@ -100,7 +95,6 @@ "ButtonMore": "Lebih banyak", "ButtonLibraryAccess": "Akses pustaka", "ButtonInfo": "Info", - "ButtonGuide": "Panduan", "ButtonGotIt": "Paham", "ButtonFullscreen": "Layar penuh", "ButtonForgotPassword": "Lupa Kata Sandi", @@ -231,7 +225,6 @@ "ButtonTogglePlaylist": "Daftar Putar", "ButtonSubtitles": "Subtitle", "ButtonSplit": "Membagi", - "ButtonRestart": "Muat ulang", "ButtonPreviousTrack": "Lagu sebelumnya", "ButtonNextTrack": "Lagu berikutnya", "ButtonManualLogin": "Login Manual", diff --git a/src/strings/is-is.json b/src/strings/is-is.json index 4b48774a2b..b0919f6c7e 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -33,10 +33,7 @@ "ButtonAddUser": "Bæta við notenda", "ButtonArrowLeft": "Vinstri", "ButtonArrowRight": "Hægri", - "OptionBlockBooks": "Bækur", - "OptionContinuing": "Heldur áfram", "OptionBlockTvShows": "Sjónvarpsþættir", - "OptionBlockMusic": "Tónlist", "OptionBlockTrailers": "Sýnishorn", "AllowOnTheFlySubtitleExtractionHelp": "Hægt er að sækja texta sem eru innbyggðir í myndaskrá og senda þá beint til notanda á textaformi til þess að sleppa við að umbreyta (transcode) myndaskránni. Í sumum tölvum getur þetta tekið langan tíma og valdið hikstum á meðan verið er að sækja textan. Afvirkjaðu þetta til þess að láta alla texta vera brennda inn í myndaskránna ef tæki notenda styður ekki að spila skránna beint.", "AccessRestrictedTryAgainLater": "Aðgangur bannaður í augnablikinu. Vinsamlegast reynið síðar.", @@ -107,7 +104,6 @@ "Channels": "Stöðvar", "Collections": "Söfn", "OptionUnairedEpisode": "Ófrumsýndir þættir", - "OptionUnplayed": "Óspilað", "OptionWeekdays": "Vikudagar", "OptionWeekends": "Helgar", "PackageInstallFailed": "{0} tókst ekki að setja upp.", @@ -190,15 +186,10 @@ "ButtonUninstall": "Fjarlægja", "ButtonTrailer": "Sýnishorn", "ButtonSignIn": "Innskráning", - "ButtonSettings": "Stillingar", "ButtonSend": "Senda", - "ButtonSelectServer": "Velja netþjón", "ButtonSelectDirectory": "Velja möppu", - "ButtonRestart": "Endurræsa", - "ButtonResetPassword": "Endurstilla lykilorð", "ButtonOpen": "Opna", "Songs": "Lög", - "ButtonProfile": "Prófíll", "ButtonPreviousTrack": "Fyrra lag", "ButtonPause": "Pása", "ButtonRemove": "Fjarlægja", @@ -216,7 +207,6 @@ "ButtonManualLogin": "Handvirkt Auðkenni", "ButtonLibraryAccess": "Aðgangur að safni", "ButtonInfo": "Upplýsingar", - "ButtonGuide": "Sjónvarpsvísir", "ButtonGotIt": "Skilið", "ButtonFullscreen": "Fylla upp í skjá", "ButtonForgotPassword": "Gleymt Lykilorð", @@ -363,7 +353,6 @@ "Saturday": "Laugardagur", "Rewind": "Spóla til baka", "AlbumArtist": "Höfundur plötu", - "OptionHasTrailer": "Sýnishorn", "ValueSongCount": "{0} lög", "ValueSeriesCount": "{0} Þáttaraðir", "ValueSeconds": "{0} sekúndur", @@ -384,7 +373,6 @@ "ThemeSongs": "Þemu lög", "TellUsAboutYourself": "Segðu okkur frá sjálfum þér", "TabUpcoming": "Væntanlegt", - "TabProfile": "Prófíll", "TabPlugins": "Viðbætur", "TabOther": "Annað", "TabNetworks": "Netkerfi", diff --git a/src/strings/it.json b/src/strings/it.json index 536437773c..b259f57a2f 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -57,7 +57,6 @@ "ButtonForgotPassword": "Password Dimenticata", "ButtonFullscreen": "Schermo Intero", "ButtonGotIt": "Ho capito", - "ButtonGuide": "Guida", "ButtonLibraryAccess": "Accesso biblioteca", "ButtonManualLogin": "Accesso Manuale", "ButtonMore": "Altro", @@ -67,22 +66,17 @@ "ButtonParentalControl": "Controllo parentale", "ButtonPause": "Pausa", "ButtonPreviousTrack": "Traccia Precedente", - "ButtonProfile": "Profilo", "ButtonQuickStartGuide": "Guida rapida", "ButtonRefreshGuideData": "Aggiorna la guida", "ButtonRemove": "Rimuovi", "ButtonRename": "Rinomina", "ButtonResetEasyPassword": "Resetta codice PIN", - "ButtonResetPassword": "Reset Password", - "ButtonRestart": "Riavvia", "ButtonResume": "Riprendi", "ButtonRevoke": "Revocare", "ButtonScanAllLibraries": "Scansiona Tutte le Librerie", "ButtonSelectDirectory": "Seleziona cartella", - "ButtonSelectServer": "Scegli Server", "ButtonSelectView": "Seleziona vista", "ButtonSend": "Invia", - "ButtonSettings": "Impostazioni", "ButtonShutdown": "Arresta Server", "ButtonSignIn": "Accedi", "ButtonSignOut": "Esci", @@ -361,7 +355,6 @@ "HeaderSeriesOptions": "Impostazioni Serie TV", "HeaderSeriesStatus": "Stato Serie TV", "HeaderServerSettings": "Impostazioni server", - "HeaderSettings": "Impostazioni", "HeaderSetupLibrary": "Imposta le tue librerie multimediali", "HeaderSortBy": "Ordina per", "HeaderSortOrder": "Ordinamento", @@ -834,7 +827,6 @@ "OnlyForcedSubtitlesHelp": "Solo i sottotitoli contrassegnati come forzati saranno caricati.", "OnlyImageFormats": "Solo formati immagine (VOBSUB, PGS, SUB)", "OptionAdminUsers": "Amministratori", - "OptionAlbumArtist": "Artista Album", "OptionAllUsers": "Tutti gli utenti", "OptionAllowAudioPlaybackTranscoding": "Abilita la riproduzione di audio che necessita di transcodifica", "OptionAllowBrowsingLiveTv": "Consenti accesso alla TV in Diretta", @@ -851,20 +843,13 @@ "OptionAllowUserToManageServer": "Consenti a questo utente di accedere alle impostazioni del server", "OptionAllowVideoPlaybackRemuxing": "Consenti la riproduzione di video che necessitano di conversione ma non di ricodifica", "OptionAllowVideoPlaybackTranscoding": "Abilita la riproduzione di video che necessita di transcodifica", - "OptionArtist": "Artista", - "OptionAscending": "Crescente", - "OptionAuto": "Automatico", "OptionAutomaticallyGroupSeries": "Fondi automaticamente le serie sparse su più cartelle", "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", - "OptionBlockMovies": "Film", - "OptionBlockMusic": "Musica", "OptionBlockTrailers": "Trailer", "OptionBlockTvShows": "Serie TV", "OptionCommunityRating": "Voto del pubblico", - "OptionContinuing": "In corso", "OptionCriticRating": "Voto della critica", "OptionCustomUsers": "Personalizza", "OptionDaily": "Giornaliero", @@ -872,14 +857,11 @@ "OptionDateAddedFileTime": "Utilizzare la data di creazione del file", "OptionDateAddedImportTime": "Utilizza la data di scansione nella libreria", "OptionDatePlayed": "Visto il", - "OptionDescending": "Decrescente", "OptionDisableUser": "Disabilita questo utente", "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.", - "OptionDownloadBackImage": "Indietro", - "OptionDownloadDiscImage": "Disco", "OptionDownloadImagesInAdvance": "Scarica preventivamente le immagini", "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ù", @@ -894,21 +876,17 @@ "OptionEnableForAllTuners": "Abilita per tutti i sintonizzatori", "OptionEnableM2tsMode": "Attiva modalità M2TS", "OptionEnableM2tsModeHelp": "Attivare la modalità m2ts durante la codifica di mpegts.", - "OptionEnded": "Finito", "OptionEquals": "Uguale", "OptionEstimateContentLength": "Stimare la lunghezza contenuto durante la transcodifica", "OptionEveryday": "Tutti i giorni", "OptionExternallyDownloaded": "Download Esterno", "OptionExtractChapterImage": "Abilita estrazione dell'immagine dei capitoli", - "OptionFavorite": "Preferiti", "OptionHasSpecialFeatures": "Contenuti speciali", - "OptionHasSubtitles": "Sottotitoli", "OptionHasThemeSong": "Sigla", "OptionHasThemeVideo": "Video Sigla", "OptionHideUser": "Nascondi questo utente dalla schermata di accesso", "OptionHideUserFromLoginHelp": "Utile per account nascosti o amministratore. L'utente avrà bisogno di accedere manualmente utilizzando la propria username e password.", "OptionHlsSegmentedSubtitles": "HLS sottotitoli segmentati", - "OptionHomeVideos": "Foto", "OptionIgnoreTranscodeByteRangeRequests": "Ignorare le richieste di intervallo di byte di trascodifica", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Queste richieste saranno onorate, ma ignoreranno l'intervallo di byte.", "OptionImdbRating": "Voto IMDB", @@ -924,7 +902,6 @@ "OptionPlainVideoItems": "Mostra tutti i video come normali file video", "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", "OptionProfilePhoto": "Foto", "OptionReleaseDate": "Data di Uscita", @@ -934,7 +911,6 @@ "OptionRequirePerfectSubtitleMatchHelp": "La richiesta di una corrispondenza perfetta filtrerà i sottotitoli per includere solo quelli che sono stati testati e verificati con il file video esatto. Deselezionando questo aumenterà la probabilità che i sottotitoli vengono scaricati, ma aumenteranno le probabilità di testo sottotitolato impreciso o errato.", "OptionResElement": "res element", "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 verranno salvati dal server.", "OptionSpecialEpisode": "Speciali", @@ -942,7 +918,6 @@ "OptionTrackName": "Titolo Traccia", "OptionTvdbRating": "Voto TVDB", "OptionUnairedEpisode": "Episodi mai andati in onda", - "OptionUnplayed": "Non visto", "OptionWakeFromSleep": "Risveglio", "OptionWeekdays": "Feriali", "OptionWeekends": "Il Weekend", @@ -1090,11 +1065,9 @@ "TabNotifications": "Notifiche", "TabOther": "Altro", "TabParentalControl": "Controllo Genitore", - "TabProfile": "Profilo", "TabProfiles": "Profili", "TabResponses": "Risposte", "TabScheduledTasks": "Operazioni Pianificate", - "TabSettings": "Impostazioni", "TabUpcoming": "In Arrivo", "Tags": "Tag", "TellUsAboutYourself": "Parlaci di te", @@ -1217,7 +1190,6 @@ "MessageNoCollectionsAvailable": "Le collezioni ti consentono di fruire di raggruppamenti personalizzati di Film, Serie e Album. Clicca il tasto + per iniziare a creare collezioni.", "MessageNoServersAvailable": "Nessun server è stato trovato usando la ricerca automatica di server.", "LabelBaseUrlHelp": "Aggiunge una cartella personalizzata all'URL del server, ad esempio http://example.com/<baseurl>", - "OptionAlbum": "Album", "LabelPasswordResetProvider": "Provider per il Reset della Password:", "LabelServerName": "Nome del Server:", "LabelSonyAggregationFlags": "Flag di aggregazione Sony:", @@ -1225,9 +1197,7 @@ "DashboardOperatingSystem": "Sistema Operativo: {0}", "LabelXDlnaCap": "X-DLNA cap:", "MessageImageTypeNotSelected": "Per favore seleziona un'immagine dal menù a tendina.", - "OptionDownloadBannerImage": "Banner", "OptionProtocolHls": "Streaming in Diretta HTTP", - "OptionDownloadArtImage": "Art", "OptionMax": "Massimo", "PasswordResetProviderHelp": "Scegli un provider di reset password da utilizzare quando questo utente ne richiederà il reset.", "PlaybackData": "Dati di Riproduzione", @@ -1287,17 +1257,14 @@ "Option3D": "3D", "OptionBanner": "Banner", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", - "OptionDownloadBoxImage": "Box", "OptionDownloadLogoImage": "Logo", "OptionDvd": "DVD", - "OptionHasTrailer": "Trailer", "OptionIsSD": "SD", "OptionList": "Lista", "OptionLoginAttemptsBeforeLockout": "Determina quanti tentativi di accesso errati possono essere fatti prima che avvenga il blocco.", "OptionLoginAttemptsBeforeLockoutHelp": "Se imposti qui zero verranno considerati i valori di default, ossia tre tentativi per gli utenti normali e cinque per gli amministratori. Impostare questo a -1 disabiliterà la funzione.", "OptionPoster": "Locandina", "OptionPosterCard": "Carte/locandina", - "OptionProfileAudio": "Audio", "OptionRegex": "Espressioni Regolari", "OptionThumb": "Icona", "OptionThumbCard": "Carte/icone", diff --git a/src/strings/ja.json b/src/strings/ja.json index 9652e85a18..66382a168d 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -67,7 +67,6 @@ "ButtonForgotPassword": "パスワードを忘れた", "ButtonFullscreen": "フルスクリーン", "ButtonGotIt": "了解", - "ButtonGuide": "ガイド", "ButtonInfo": "情報", "ButtonLibraryAccess": "ライブラリへアクセス", "ButtonManualLogin": "マニュアルログイン", @@ -79,22 +78,17 @@ "ButtonParentalControl": "ペアレンタルコントロール", "ButtonPause": "一時停止", "ButtonPreviousTrack": "前のトラック", - "ButtonProfile": "プロフィール", "ButtonQuickStartGuide": "クイックスタートガイド", "ButtonRefreshGuideData": "ガイドデータの更新", "ButtonRemove": "削除", "ButtonRename": "名前の変更", "ButtonResetEasyPassword": "easy pin code をリセット", - "ButtonResetPassword": "パスワードをリセット", - "ButtonRestart": "再起動", "ButtonResume": "レジューム", "ButtonRevoke": "取り消す", "ButtonScanAllLibraries": "すべてのライブラリをスキャン", "ButtonSelectDirectory": "ディレクトリの選択", - "ButtonSelectServer": "サーバーの選択", "ButtonSelectView": "ビューを選択", "ButtonSend": "送る", - "ButtonSettings": "設定", "ButtonShutdown": "シャットダウン", "ButtonSignIn": "サインイン", "ButtonSignOut": "サインアウト", @@ -398,7 +392,6 @@ "HeaderSeriesOptions": "シリーズオプション", "HeaderSeriesStatus": "シリーズの状態", "HeaderServerSettings": "サーバー設定", - "HeaderSettings": "設定", "HeaderSetupLibrary": "メディアライブラリを設定する", "HeaderSortBy": "ソート", "HeaderSortOrder": "ソート順", @@ -508,21 +501,15 @@ "MessageReenableUser": "最有効するためには以下を参照してください", "Name": "名前", "NewCollection": "新しいコレクション", - "OptionAscending": "昇順", - "OptionAuto": "自動", - "OptionBlockBooks": "ブック", "OptionDatePlayed": "再生日", "OptionMissingEpisode": "所有してないエピソード", "OptionPoster": "ポスター", - "OptionProfileAudio": "オーディオ", "OptionProfilePhoto": "フォト", "OptionProfileVideo": "ビデオ", "OptionProfileVideoAudio": "ビデオオーディオ", "OptionProtocolHttp": "HTTP", "OptionRegex": "正規表現", "OptionReleaseDate": "公開日", - "OptionRuntime": "実行時間", - "OptionUnplayed": "未再生", "OptionUnairedEpisode": "未放送のエピソード", "OptionWakeFromSleep": "スリープから起動", "OptionWeekdays": "平日", @@ -549,7 +536,6 @@ "MediaInfoAspectRatio": "アスペクト比", "MediaInfoBitDepth": "ビット深度", "Menu": "メニュー", - "OptionBlockMovies": "ムービー", "OptionImdbRating": "IMDb評価", "ReplaceAllMetadata": "すべてのメタデータを置き換える", "ResumeAt": "{0} から再生", @@ -917,40 +903,26 @@ "NumLocationsValue": "{0} フォルダー", "Option3D": "3D", "OptionAdminUsers": "管理者", - "OptionAlbum": "アルバム", - "OptionAlbumArtist": "アルバムアーティスト", "OptionAllowBrowsingLiveTv": "ライブTVアクセスを許可", "OptionAllowLinkSharing": "SNSシェアを許可", "OptionAllowRemoteControlOthers": "他のユーザーのリモートコントロールを許可", "OptionAllowUserToManageServer": "このユーザーにサーバーの管理を許可", - "OptionArtist": "アーティスト", "OptionBlockLiveTvChannels": "ライブTVチャンネル", - "OptionBlockMusic": "ミュージック", "OptionBlockTrailers": "トレーラー", "OptionBlockTvShows": "テレビ番組", "OptionCommunityRating": "コミュニティ評価", "OptionCriticRating": "評論家の評価", "OptionCustomUsers": "カスタム", - "OptionDescending": "降順", "DashboardOperatingSystem": "オペレーションシステム: {0}", "OptionDisableUser": "このユーザーを無効化", "OptionDislikes": "いいね取り消し", - "OptionDownloadArtImage": "アート", - "OptionDownloadBackImage": "前へ", - "OptionDownloadBannerImage": "バナー", - "OptionDownloadBoxImage": "ボックス", - "OptionDownloadDiscImage": "ディスク", "OptionDownloadMenuImage": "メニュー", "OptionEnableExternalContentInSuggestions": "おすすめの欄に外部のコンテンツを使う", "OptionEnableM2tsMode": "M2TSモードを有効化", - "OptionFavorite": "お気に入り", "OptionHasSpecialFeatures": "特別な機能", - "OptionHasSubtitles": "字幕", "OptionHasThemeSong": "テーマ曲", "OptionHasThemeVideo": "テーマ映像", - "OptionHasTrailer": "トレーラー", "OptionHideUser": "ログインスクリーンからこのユーザーを隠す", - "OptionHomeVideos": "フォト", "OptionIsHD": "HD", "OptionProtocolHls": "HTTPライブストリーミング", "MediaInfoDefault": "デフォルト", @@ -966,11 +938,9 @@ "TabOther": "その他", "TabParentalControl": "ペアレンタルコントロール", "TabPlugins": "プラグイン", - "TabProfile": "プロフィール", "TabProfiles": "プロフィール", "TabResponses": "レスポンス", "TabServer": "サーバー", - "TabSettings": "設定", "TabStreaming": "ストリーミング", "MessageContactAdminToResetPassword": "パスワードをリセットするためにシステムの管理者に連絡してください。", "TagsValue": "タグ: {0}", diff --git a/src/strings/kk.json b/src/strings/kk.json index 90176b0335..2ddc55c867 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -66,7 +66,6 @@ "ButtonForgotPassword": "Paróldi eske salý", "ButtonFullscreen": "Tolyq ekran", "ButtonGotIt": "Túsinikti", - "ButtonGuide": "Telegıd", "ButtonInfo": "Aqparatqa", "ButtonLibraryAccess": "Tasyǵyshhanǵa qatynaý", "ButtonManualLogin": "Qolmen kirý", @@ -78,22 +77,17 @@ "ButtonParentalControl": "Mazmundy basqarý", "ButtonPause": "Úzý", "ButtonPreviousTrack": "Aldyńǵy jolshyqqa", - "ButtonProfile": "Profaıl", "ButtonQuickStartGuide": "Tez bastaý nusqaýlyǵy", "ButtonRefreshGuideData": "Telegıd derekterin jańǵyrtý", "ButtonRemove": "Alastaý", "ButtonRename": "Qaıta ataý", "ButtonResetEasyPassword": "Ońaıtylǵan PIN-kodty ysyrý", - "ButtonResetPassword": "Paróldi ysyrý", - "ButtonRestart": "Qaıta iske qosý", "ButtonResume": "Jalǵastyrý", "ButtonRevoke": "Bas tartý", "ButtonScanAllLibraries": "Barlyq tasyǵyshhanalardy skanerleý", "ButtonSelectDirectory": "Qatalogty tańdaý", - "ButtonSelectServer": "Serverdi tańdaý", "ButtonSelectView": "Kórinisti tańdaý", "ButtonSend": "Jiberý", - "ButtonSettings": "Parametrlerge", "ButtonShutdown": "Jumysty aıaqtaý", "ButtonSignIn": "Kirý", "ButtonSignOut": "Shyǵý", @@ -387,7 +381,6 @@ "HeaderSeriesOptions": "Telehıkaıa opsıalary", "HeaderSeriesStatus": "Telehıkaıa kúıi", "HeaderServerSettings": "Server parametrleri", - "HeaderSettings": "Parametrler", "HeaderSetupLibrary": "Tasyǵyshhanalardy ornatý jáne teńsheý", "HeaderSortBy": "Suryptaý tásili", "HeaderSortOrder": "Suryptaý reti", @@ -887,8 +880,6 @@ "OnlyForcedSubtitlesHelp": "Tek qana májbúrli dep belgilengen sýbtıtrler júkteledi.", "OnlyImageFormats": "Tek keskin pishimder (VOBSUB, PGS jáne SUB)", "OptionAdminUsers": "Ákimshiler", - "OptionAlbum": "Álbom", - "OptionAlbumArtist": "Álbom oryndaýshysy", "OptionAllUsers": "Barlyq paıdalanýshylar", "OptionAllowAudioPlaybackTranscoding": "Qaıta kodtaýǵa talaby bar dybys oınatý úshin ruqsat etý", "OptionAllowBrowsingLiveTv": "Efırlik TD qatynaýǵa ruqsat etý", @@ -905,21 +896,14 @@ "OptionAllowUserToManageServer": "Býl paıdalanýshyǵa serverdi basqarý úshin ruqsat etý", "OptionAllowVideoPlaybackRemuxing": "Qaıta kodtaýsyz túrlendirý talaby bar beıne oınatý úshin ruqsat etý", "OptionAllowVideoPlaybackTranscoding": "Qaıta kodtaýǵa talaby bar beıne oınatý úshin ruqsat etý", - "OptionArtist": "Oryndaýshy", - "OptionAscending": "Artýy boıynsha", - "OptionAuto": "Avtomatty", "OptionAutomaticallyGroupSeries": "Birneshe qaltalar arasynda taralǵan telehıkaıany avtomatty bir telehıkaıaǵa biriktirý", "OptionAutomaticallyGroupSeriesHelp": "Qosylǵanda, osy tasyǵyshhana ishindegi birneshe qaltalar arasynda taralǵan telehıkaıasy avtomatty bir telehıkaıaǵa biriktiriletin bolady.", - "OptionBlockBooks": "Kitaptar", "OptionBlockChannelContent": "Internet arna mazmuny", "OptionBlockLiveTvChannels": "Efırlik TD arnalary", - "OptionBlockMovies": "Fılmder", - "OptionBlockMusic": "Mýzyka", "OptionBlockTrailers": "Treılerler", "OptionBlockTvShows": "TD-kórsetimder", "OptionBluray": "BluRay", "OptionCommunityRating": "Qaýym baǵalaýy", - "OptionContinuing": "Jalǵasýda", "OptionCriticRating": "Synshylar baǵalaýy", "OptionCustomUsers": "Teńsheýli", "OptionDaily": "Kún saıyn", @@ -927,17 +911,11 @@ "OptionDateAddedFileTime": "Faıldyń jasalǵan kúnin paıdalaný", "OptionDateAddedImportTime": "Tasyǵyshhana ishine skanerleý kúnin paıdalaný", "OptionDatePlayed": "Oınatylǵan kúni", - "OptionDescending": "Kemýi boıynsha", "OptionDisableUser": "Bul paıdalanýshyǵa tyıym salý", "OptionDisableUserHelp": "Eger tyıym salynsa, server bul paıdalanýshydan eshqandaı baılanystarǵa ruqsat etpeıdi. Bar qosylymdar kenet úziledi.", "OptionDislikes": "Unatpaýlar", "OptionDisplayFolderView": "Kádimgi tasyǵysh qaltalaryn kórsetý úshin Qalta aspektin beıneleý", "OptionDisplayFolderViewHelp": "Basqa tasyǵyshhanalaryńyzben birge Qaltalar kórsetiledi. Bul qarapaıym qalta kórinisin alǵyńyz kelse paıdaly bolýy múmkin.", - "OptionDownloadArtImage": "Oıý sýret", - "OptionDownloadBackImage": "Artqy muqaba", - "OptionDownloadBannerImage": "Baner", - "OptionDownloadBoxImage": "Qorap", - "OptionDownloadDiscImage": "Dıski", "OptionDownloadImagesInAdvance": "Sýretterdi aldyn ala júktep alý", "OptionDownloadImagesInAdvanceHelp": "Ádepkide, sýretterdiń kóbi tek qana Jellyfin-qoldanbasy surasa júkteledi. Jańa tasyǵyshderekter ımporttalǵan kezde aldyn ala barlyq sýretterdi júktep alý úshin, osy opsıany qosyńyz. Tasyǵyshhana skanerleýde bul aıtarlyqtaı uzaq ýaqyt alýy múmkin.", "OptionDownloadLogoImage": "Logotıp", @@ -954,22 +932,17 @@ "OptionEnableForAllTuners": "Barlyq túner qurylǵylary úshin qosý", "OptionEnableM2tsMode": "M2ts rejimin qosý", "OptionEnableM2tsModeHelp": "Mpegts úshin kodtaý kezinde m2ts rejimin qosý.", - "OptionEnded": "Aıaqtaldy", "OptionEquals": "Teń", "OptionEstimateContentLength": "Qaıta kodtaý kezinde mazmun uzyndyǵyn baǵalaý", "OptionEveryday": "Kún saıyn", "OptionExternallyDownloaded": "Syrttan júktelgen", "OptionExtractChapterImage": "Sahna sýretin bólip alýdy qosý", - "OptionFavorite": "Tańdaýlylar", "OptionHasSpecialFeatures": "Arnaıy múmkindikter", - "OptionHasSubtitles": "Sýbtıtrler", "OptionHasThemeSong": "Taqyryptyq áýen", "OptionHasThemeVideo": "Taqyryptyq beıne", - "OptionHasTrailer": "Treıler", "OptionHideUser": "Bul paıdalanýshyny kirý ekrandarynan jasyrý", "OptionHideUserFromLoginHelp": "Jeke nemese jasyryn ákimshi tirkelgileri úshin paıdaly. Paıdalanýshy aty men paróldi engizý arqyly paıdalanýshyǵa qolmen kirý qajet bolady.", "OptionHlsSegmentedSubtitles": "HLS bólshektelgen sýbtıtrler", - "OptionHomeVideos": "Fotosýretter", "OptionIgnoreTranscodeByteRangeRequests": "Qaıta kodtaý baıt aýqymy suranystaryn elemeý", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Qosylǵanda, osy suranystarmen sanasý bolady, biraq baıt aýqymynyń bas derektemesi elep eskerilmeıdi.", "OptionImdbRating": "IMDb baǵalaýy", @@ -986,9 +959,7 @@ "OptionPlainVideoItems": "Barlyq beınelerdi kádimgi beıne tarmaqtary retinde beıneleý", "OptionPlainVideoItemsHelp": "Qosylǵanda, barlyq qaltalar DIDL ishinde \"object.item.videoItem.movie\" sıaqty naqtylaý túriniń ornyna \"object.item.videoItem\" bolyp beınelenedi.", "OptionPlayCount": "Oınatý esebi", - "OptionPlayed": "Oınatylǵan", "OptionPremiereDate": "Tusaýkeser kún-aıy", - "OptionProfileAudio": "Dybys", "OptionProfilePhoto": "Foto", "OptionProfileVideo": "Beıne", "OptionProfileVideoAudio": "Beıne Dybys", @@ -1001,7 +972,6 @@ "OptionRequirePerfectSubtitleMatch": "Beıne faıldarym úshin tek qana kemeldi sáıkes kelgen sýbtıtrlerdi júktep alý", "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", "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", @@ -1009,7 +979,6 @@ "OptionTrackName": "Jolshyq aty", "OptionTvdbRating": "TVDB baǵalaýy", "OptionUnairedEpisode": "Kórsetilmegen bólimder", - "OptionUnplayed": "Oınatylmaǵan", "OptionWakeFromSleep": "Uıqydan oıatýda", "OptionWeekdays": "Jumys kúnderi", "OptionWeekends": "Demalys kúnderi", @@ -1164,12 +1133,10 @@ "TabOther": "Basqalar", "TabParentalControl": "Mazmundy basqarý", "TabPlugins": "Plagınder", - "TabProfile": "Profaıl", "TabProfiles": "Profaıldar", "TabResponses": "Ún qatýlar", "TabScheduledTasks": "Josparlaýshy", "TabServer": "Server", - "TabSettings": "Parametrler", "TabStreaming": "Tasymaldaný", "TabUpcoming": "Kútilgen", "Tags": "Tegter", diff --git a/src/strings/ko.json b/src/strings/ko.json index cdb2711a48..c310737fd1 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -24,7 +24,6 @@ "ButtonEditOtherUserPreferences": "이 사용자의 프로필, 이미지, 개인 설정을 수정합니다.", "ButtonForgotPassword": "비밀번호 분실", "ButtonGotIt": "알겠습니다", - "ButtonGuide": "가이드", "ButtonInfo": "정보", "ButtonManualLogin": "수동 로그인", "ButtonMore": "더 보기", @@ -34,20 +33,15 @@ "ButtonOpen": "열기", "ButtonPause": "일시 중지", "ButtonPreviousTrack": "이전 트랙", - "ButtonProfile": "프로필", "ButtonQuickStartGuide": "빠른 시작 가이드", "ButtonRefreshGuideData": "가이드 데이터 새로 고침", "ButtonRemove": "제거", "ButtonRename": "이름 변경", "ButtonResetEasyPassword": "간편 PIN 코드 재설정", - "ButtonResetPassword": "비밀번호 재설정", - "ButtonRestart": "다시 시작", "ButtonResume": "이어서 재생", "ButtonSelectDirectory": "디렉터리 선택", - "ButtonSelectServer": "서버 선택", "ButtonSelectView": "보기 선택", "ButtonSend": "전송", - "ButtonSettings": "설정", "ButtonShutdown": "종료", "ButtonSignIn": "로그인", "ButtonSignOut": "로그아웃", @@ -185,7 +179,6 @@ "HeaderSelectTranscodingPathHelp": "트랜스코딩 임시 파일에 사용할 경로를 탐색 또는 입력하세요. 쓰기 가능한 폴더여야 합니다.", "HeaderSendMessage": "메시지 전송", "HeaderServerSettings": "서버 설정", - "HeaderSettings": "설정", "HeaderSetupLibrary": "미디어 라이브러리 설정", "HeaderSpecialEpisodeInfo": "스페셜 에피소드 정보", "HeaderSpecialFeatures": "특별 배역", @@ -469,8 +462,6 @@ "NewCollection": "새 컬렉션", "MessageNoNextUpItems": "아무도 찾지 못했어요. 여러분의 쇼를 보기 시작하세요!", "OptionAdminUsers": "관리자", - "OptionAlbum": "앨범", - "OptionAlbumArtist": "앨범 아티스트", "OptionAllUsers": "모든 사용자", "OptionAllowAudioPlaybackTranscoding": "트랜스코딩이 필요한 오디오 재생 허용", "OptionAllowBrowsingLiveTv": "TV 방송 접속 허용", @@ -484,20 +475,13 @@ "OptionAllowRemoteSharedDevicesHelp": "사용자가 제어를 시작할 때까지 DLNA 기기가 공유된 것으로 간주됩니다.", "OptionAllowUserToManageServer": "이 사용자에게 이 서버의 관리를 허용합니다", "OptionAllowVideoPlaybackTranscoding": "트랜스코딩이 필요한 비디오 재생 허용", - "OptionArtist": "아티스트", - "OptionAscending": "오름차순", - "OptionAuto": "자동", - "OptionBlockBooks": "도서", "OptionBlockChannelContent": "인터넷 채널 콘텐츠", "OptionBlockLiveTvChannels": "실시간 TV 방송 채널", - "OptionBlockMovies": "영화", - "OptionBlockMusic": "음악", "OptionBlockTrailers": "예고편", "OptionBlockTvShows": "TV 쇼", "OptionBluray": "블루레이", "OptionCaptionInfoExSamsung": "CaptionInfoEx (삼성)", "OptionCommunityRating": "커뮤니티 평점", - "OptionContinuing": "계속하기", "OptionCriticRating": "Critic 평점", "OptionCustomUsers": "사용자 정의", "OptionDaily": "매일", @@ -505,16 +489,10 @@ "OptionDateAddedFileTime": "파일 생성 날짜 사용", "OptionDateAddedImportTime": "라이브러리에 추가된 날짜 사용", "OptionDatePlayed": "재생한 날짜", - "OptionDescending": "내림차순", "OptionDisableUser": "이 사용자 사용 안 함", "OptionDisableUserHelp": "서버가 이 사용자의 연결을 허용하지 않습니다. 현재 연결이 예고없이 종료됩니다.", "OptionDislikes": "싫어함", "OptionDisplayFolderViewHelp": "미디어 라이브러리 옆에 폴더를 표시합니다. 이는 일반적인 폴더 보기를 원하는 경우에 유용합니다.", - "OptionDownloadArtImage": "아트", - "OptionDownloadBackImage": "배경", - "OptionDownloadBannerImage": "배너", - "OptionDownloadBoxImage": "박스", - "OptionDownloadDiscImage": "디스크", "OptionDownloadLogoImage": "로고", "OptionDownloadMenuImage": "메뉴", "OptionDownloadPrimaryImage": "기본적인", @@ -525,15 +503,11 @@ "OptionEnableAccessToAllChannels": "모든 채널에 접속 허용", "OptionEnableAccessToAllLibraries": "모든 라이브러리에 접속 허용", "OptionEnableM2tsMode": "M2ts 모드 활성화", - "OptionEnded": "종료됨", "OptionEveryday": "매일", "OptionExternallyDownloaded": "외부 다운로드", - "OptionFavorite": "즐겨찾기", "OptionHasSpecialFeatures": "특별한 기능", - "OptionHasSubtitles": "자막", "OptionHasThemeSong": "테마송", "OptionHasThemeVideo": "테마 비디오", - "OptionHasTrailer": "예고편", "OptionHideUser": "로그인 화면에서 이 사용자 숨김", "OptionHideUserFromLoginHelp": "비공개 또는 숨겨진 관리자 계정에 유용합니다. 사용자는 수동으로 사용자 이름과 비밀번호를 입력하여 로그인해야 합니다.", "OptionHlsSegmentedSubtitles": "HLS 분할된 자막", @@ -552,9 +526,7 @@ "OptionPlainVideoItems": "모든 비디오를 일반 비디오 항목으로 표시", "OptionPlainVideoItemsHelp": "활성화 된 경우 모든 비디오는 \"object.item.videoItem.movie\"와 같이보다 구체적인 유형 대신 \"object.item.videoItem\"로 DIDL에 표시됩니다.", "OptionPlayCount": "재생 횟수", - "OptionPlayed": "재생함", "OptionPremiereDate": "Premiere 일자", - "OptionProfileAudio": "오디오", "OptionProfilePhoto": "사진", "OptionProfileVideo": "비디오", "OptionProfileVideoAudio": "비디오 오디오", @@ -562,13 +534,11 @@ "OptionReleaseDate": "개봉일", "OptionResElement": "res 요소", "OptionResumable": "이어보기", - "OptionRuntime": "상영 시간", "OptionSaveMetadataAsHidden": "메타데이터와 이미지를 숨김 파일로 저장", "OptionSpecialEpisode": "스페셜", "OptionTrackName": "트랙 이름", "OptionTvdbRating": "TVDb 평점", "OptionUnairedEpisode": "방송하지 않은 에피소드", - "OptionUnplayed": "재생되지 않음", "OptionWakeFromSleep": "슬립모드에서 깨우기", "OptionWeekdays": "주중", "OptionWeekends": "주말", @@ -637,12 +607,10 @@ "TabOther": "기타", "TabParentalControl": "자녀 보호", "TabPlugins": "플러그인", - "TabProfile": "프로필", "TabProfiles": "프로필", "TabResponses": "반응", "TabScheduledTasks": "예약 작업", "TabServer": "서버", - "TabSettings": "설정", "TabStreaming": "스트리밍", "TabUpcoming": "방송 예정", "Tags": "태그", @@ -862,7 +830,6 @@ "OptionList": "목록", "OptionIsSD": "SD", "OptionIsHD": "HD", - "OptionHomeVideos": "사진", "OptionEnableForAllTuners": "모든 튜너 장치 활성화", "OptionBanner": "배너", "Option3D": "3D", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index 2d890a4fca..1f2940ba35 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -26,10 +26,7 @@ "ButtonQuickStartGuide": "Greitos pradžios gidas", "ButtonRefreshGuideData": "Atnaujinti gido duomenis", "ButtonRemove": "Pašalinti", - "ButtonResetPassword": "Atstatyti slaptažodį", - "ButtonRestart": "Iš naujo", "ButtonSelectDirectory": "Rinktis direktoriją", - "ButtonSettings": "Nustatymai", "ButtonSignIn": "Prisijungti", "ButtonSignOut": "Atsijungti", "ButtonStop": "Stabdyti", @@ -293,8 +290,6 @@ "MessageNoNextUpItems": "Nieko neradau. Pradėkite žiūrėti laidas!", "NoSubtitleSearchResultsFound": "Nieko neradau.", "OptionAdminUsers": "Administratoriai", - "OptionAlbum": "Albumas", - "OptionAlbumArtist": "Albumo atlikėjas", "OptionAllUsers": "Visi vartotojai", "OptionAllowBrowsingLiveTv": "Leisti žiūrėti tiesioginę TV", "OptionAllowLinkSharing": "Leisti dalintis socialinėse aplinkose", @@ -305,24 +300,15 @@ "OptionAllowRemoteSharedDevices": "Leisti nuotoliniu būdu valdyti bendrus įrenginius", "OptionAllowRemoteSharedDevicesHelp": "Dlna įrenginiai yra laikomi bendrais kol vartotojas nepradeda jų kontroliuoti.", "OptionAllowUserToManageServer": "Leisti šiam vartotojui valdyti serverį", - "OptionArtist": "Atlikėjas", - "OptionAscending": "Didėjančia tvarka", "OptionCommunityRating": "Bendruomenės vertinimas", - "OptionContinuing": "Tęsiamas", "OptionCriticRating": "Kritikų vertinimas", "OptionCustomUsers": "Kita", "OptionDaily": "Kasdienis", "OptionDateAdded": "Pridėjimo data", "OptionDatePlayed": "Žiūrėjimo data", - "OptionDescending": "Mažėjančia tvarka", "OptionDisableUser": "Išjungti šį vartotoją", "OptionDisableUserHelp": "Išjungus serveris neleis prisijungti šiam vartotojui. Esami prisijungimai bus nutraukti.", "OptionDislikes": "Nepatinka", - "OptionDownloadArtImage": "Menas", - "OptionDownloadBackImage": "Nugarėlė", - "OptionDownloadBannerImage": "Juosta", - "OptionDownloadBoxImage": "Viršelis", - "OptionDownloadDiscImage": "Diskas", "OptionDownloadLogoImage": "Logotipas", "OptionDownloadMenuImage": "Meniu", "OptionDownloadPrimaryImage": "Pirminis", @@ -331,13 +317,9 @@ "OptionEnableAccessFromAllDevices": "Leisti prieigą iš visų įrenginių", "OptionEnableAccessToAllChannels": "Leisti prieigą prie visų kanalų", "OptionEnableAccessToAllLibraries": "Leisti prieigą prie visų bibliotekos", - "OptionEnded": "Pasibaigė", - "OptionFavorite": "Mėgstami", "OptionHasSpecialFeatures": "Ypatingos serijos", - "OptionHasSubtitles": "Subtitrai", "OptionHasThemeSong": "Teminė daina", "OptionHasThemeVideo": "Teminis video", - "OptionHasTrailer": "Anonsas", "OptionHideUser": "Paslėpti šį vartotoją iš prisijungimo ekrano", "OptionHideUserFromLoginHelp": "Naudinga privačioms ar slaptoms administratorių paskyroms. Vartotojui reikės rankiniu būdu įvesti vartotoją vardą ir slaptažodį.", "OptionIgnoreTranscodeByteRangeRequests": "Ignoruot transkodavimo baitų ruožo užklausas", @@ -351,16 +333,13 @@ "OptionOnInterval": "Pasikartojantis", "OptionParentalRating": "Tėvų reitingas", "OptionPlayCount": "Rodymų kiekis", - "OptionPlayed": "Rodyta", "OptionPremiereDate": "Premjeros data", "OptionReleaseDate": "Išleidimo data", "OptionResumable": "Pratęsiamas", - "OptionRuntime": "Trukmė", "OptionSpecialEpisode": "Ypatingos", "OptionTrackName": "Dainos pavadinimas", "OptionTvdbRating": "Tvdb vertinimas", "OptionUnairedEpisode": "Nerodytos serijos", - "OptionUnplayed": "Nerodyta", "OptionWakeFromSleep": "Žadinti iš miego", "OptionWeekly": "Savaitinis", "OriginalAirDateValue": "Pirmo eterio data: {0}", @@ -435,10 +414,8 @@ "TabNetworks": "Tinklai", "TabNotifications": "Pranešimai", "TabOther": "Kita", - "TabProfile": "Profilis", "TabProfiles": "Profiliai", "TabServer": "Serveris", - "TabSettings": "Nustatymai", "TabUpcoming": "Būsimi", "Tags": "Žymės", "TellUsAboutYourself": "Papasakokite apie save", @@ -493,19 +470,16 @@ "ButtonChangeServer": "Keisti serverį", "ButtonForgotPassword": "Pamiršau slaptažodį", "ButtonFullscreen": "Per visą ekraną", - "ButtonGuide": "Gidas", "ButtonInfo": "Info", "ButtonLibraryAccess": "Mediatekos prieiga", "ButtonMore": "Daugiau", "ButtonNetwork": "Tinklas", "ButtonOpen": "Atidaryti", "ButtonParentalControl": "Tėvų kontrolė", - "ButtonProfile": "Profilis", "ButtonRename": "Pervadinti", "ButtonResume": "Tęsti", "ButtonRevoke": "Panaikinti", "ButtonScanAllLibraries": "Nuskaityti Visas Bibliotekas", - "ButtonSelectServer": "Rinktis Serverį", "ButtonSelectView": "Pasirinkti rodinį", "ButtonSend": "Siųsti", "ButtonShutdown": "Išjungti", @@ -585,7 +559,6 @@ "CopyStreamURL": "Kopijuoti srauto nuorodą", "HeaderConfirmPluginInstallation": "Patvirtinti įskiepio diegimą", "HeaderError": "Klaida", - "OptionBlockMovies": "Filmai", "Songs": "Kūriniai", "Art": "Menas", "ButtonAddImage": "Pridėti vaizdą", @@ -615,10 +588,8 @@ "HeaderDeleteTaskTrigger": "Ištrinti užduoties trigerį", "HeaderFavoriteVideos": "Mėgstami video įrašai", "Absolute": "Visiškas", - "OptionBlockBooks": "Knygos", "OptionBlockChannelContent": "Internetinio kanalo turinys", "OptionBlockLiveTvChannels": "TV kanalai gyvai", - "OptionBlockMusic": "Muzika", "OptionBlockTrailers": "Anonsai", "OptionBlockTvShows": "TV Serialai", "HeaderCastAndCrew": "Aktoriai", @@ -650,7 +621,6 @@ "HeaderIdentification": "Identifikacija", "HeaderIdentificationHeader": "Identifikavimo antraštė", "HeaderHttpHeaders": "HTTP-antraštės", - "OptionAuto": "Auto", "OptionAutomaticallyGroupSeriesHelp": "Jei įjungta - serijos skirtinguose bibliotekos aplankaluose bus apjungtos į vieną serialą.", "OptionBanner": "Juosta", "Playlists": "Grojaraštis", @@ -702,7 +672,6 @@ "FolderTypeUnset": "Įvairus turinys", "HeaderAddUpdateImage": "Pridėti/Įkelti atvaizdą", "LabelAlbumArtPN": "Albumo iliustracijos PN:", - "HeaderSettings": "Nustatymai", "LabelMatchType": "Atitikties tipas:", "LabelMaxChromecastBitrate": "„Chromecast“ transliacijos kokybė:", "ExitFullscreen": "Išeiti iš viso ekrano režimo", diff --git a/src/strings/lv.json b/src/strings/lv.json index de3b8475d3..1c92b24710 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -241,7 +241,6 @@ "HeaderSortOrder": "Kārtošanas Secība", "HeaderSortBy": "Kārtot Pēc", "HeaderSetupLibrary": "Uzstādīt multvides bibliotēkas", - "HeaderSettings": "Iestatījumi", "HeaderServerSettings": "Servera Iestatījumi", "HeaderSeriesStatus": "Sēriju Status", "HeaderSeriesOptions": "Sēriju Opcijas", @@ -459,21 +458,16 @@ "ButtonSignOut": "Iziet", "ButtonSignIn": "Ieiet", "ButtonShutdown": "Izslēgt", - "ButtonSettings": "Iestatījumi", "ButtonSend": "Nosūtīt", "ButtonSelectView": "Izvēlies Skatu", - "ButtonSelectServer": "Izvēlies Serveri", "ButtonSelectDirectory": "Izvēlies Mapi", "ButtonScanAllLibraries": "Skanēt Visas Bibliotēkas", "ButtonRevoke": "Atsaukt", "ButtonResume": "Turpināt", - "ButtonRestart": "Restartēt", - "ButtonResetPassword": "Nomainīt Paroli", "ButtonResetEasyPassword": "Nomainīt vieglo pin kodu", "ButtonRename": "Pārsaukt", "ButtonRemove": "Noņemt", "ButtonRefreshGuideData": "Atjaunot Gida Datus", - "ButtonProfile": "Profils", "ButtonPreviousTrack": "Iepriekšējais celiņš", "ButtonPause": "Pauzēt", "ButtonParentalControl": "Vecāku Pārvaldība", @@ -484,7 +478,6 @@ "ButtonMore": "Vairāk", "ButtonLibraryAccess": "Bibliotēku piekļuve", "ButtonInfo": "Info", - "ButtonGuide": "Gids", "ButtonGotIt": "Sapratu", "ButtonFullscreen": "Pilnekrāna", "ButtonForgotPassword": "Aizmirsu Paroli", @@ -567,8 +560,6 @@ "MySubtitles": "Mani subtitri", "MusicVideo": "Mūzikas Video", "OptionAllUsers": "Visi lietotāji", - "OptionAlbumArtist": "Albuma Izpildītājs", - "OptionAlbum": "Albums", "OptionAdminUsers": "Administratori", "OnlyImageFormats": "Tikai attēlu formāti (VOBSUB, PGS, SUB, utt.)", "Option3D": "3D", @@ -642,11 +633,9 @@ "TagsValue": "Tagi: {0}", "Tags": "Tagi", "TabStreaming": "Straumēšana", - "TabSettings": "Iestatījumi", "TabServer": "Serveris", "TabResponses": "Atbildes", "TabProfiles": "Profili", - "TabProfile": "Profils", "TabPlugins": "Paplašinājumi", "TabParentalControl": "Vecāku Pārvaldība", "TabOther": "Cits", @@ -702,8 +691,6 @@ "OptionProtocolHttp": "HTTP", "OptionProfileVideoAudio": "Video Audio", "OptionProfileVideo": "Video", - "OptionProfileAudio": "Audio", - "OptionPlayed": "Atskaņots", "OptionParentalRating": "Vecāku Reitings", "OptionOnInterval": "Pēc intervāla", "OptionNone": "Neviens", @@ -712,27 +699,15 @@ "OptionLikes": "Patīk", "OptionIsSD": "SD", "OptionIsHD": "HD", - "OptionHasTrailer": "Treileris", - "OptionHasSubtitles": "Subtitri", - "OptionFavorite": "Favorīti", "OptionEveryday": "Katru dienu", - "OptionEnded": "Beidzies", "OptionEnableAccessToAllLibraries": "Iespējot piekļuvi visām bibliotēkām", "OptionDvd": "DVD", "OptionDownloadMenuImage": "Izvēlne", "OptionDownloadLogoImage": "Logo", - "OptionDownloadDiscImage": "Disks", - "OptionDownloadBoxImage": "Kaste", "OptionDaily": "Ikdienas", - "OptionContinuing": "Turpina", "OptionBluray": "Blu-ray", "OptionBlockTvShows": "TV Raidījumi", "OptionBlockTrailers": "Treileri", - "OptionBlockMusic": "Mūzika", - "OptionBlockMovies": "Filmas", - "OptionBlockBooks": "Grāmatas", - "OptionAuto": "Auto", - "OptionArtist": "Izpildītājs", "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", @@ -1037,7 +1012,6 @@ "OptionWeekends": "Nedēļas nogalēs", "OptionWeekdays": "Darba dienās", "OptionWakeFromSleep": "Modināt no miega", - "OptionUnplayed": "Neatskaņots", "OptionTrackName": "Celiņa Nosaukums", "OptionThumb": "Sīktēls", "OptionSaveMetadataAsHidden": "Saglabāt metadatus un attēlus kā paslēptas datnes", @@ -1056,7 +1030,6 @@ "OptionImdbRating": "IMDb Vērtējums", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Ja iespējots, šie pieprasījumi tiks veikti bet ignorēs baitu diapazona hederu.", "OptionIgnoreTranscodeByteRangeRequests": "Ignorēt trans-kodēšanas baitu diapazona pieprasījumus", - "OptionHomeVideos": "Attēli", "OptionHlsSegmentedSubtitles": "HLS segmentēti subtitri", "OptionHideUserFromLoginHelp": "Noderīgs lai paslēptu privātus vai paslēptus administratora kontus. Šim lietotājam būs jāieiet manuāli, ievadot savu lietotājvārdu un paroli.", "OptionHideUser": "Paslēpt šo lietotāju no piekļuves ekrāniem", @@ -1076,8 +1049,6 @@ "OptionDownloadPrimaryImage": "Galvenais", "OptionDownloadImagesInAdvanceHelp": "Noklusējumā, lielākā daļa attēlu tiek lejupielādēti kad tie ir pieprasīti Jellyfin lietotnē. Iespējo šo opciju lai iepriekšēji lejupielādētu visus attēlus, kad jauns saturs tiek importēts. Tas var radīt ievērojami ilgākus bibliotēkas skenējumus.", "OptionDownloadImagesInAdvance": "Lejupielādēt attēlus iepriekš", - "OptionDownloadBackImage": "Aizmugure", - "OptionDownloadArtImage": "Māksla", "OptionDisableUserHelp": "Ja atspējots, serveris neatļaus nekādus savienojumus no šī lietotāja. Esošie savienojumi tiks pēkšņi apturēti.", "OptionDisableUser": "Atspējot šo lietotāju", "OptionDatePlayed": "Atskaņošanas Datums", diff --git a/src/strings/mr.json b/src/strings/mr.json index 88a0a9cfe5..051a671abb 100644 --- a/src/strings/mr.json +++ b/src/strings/mr.json @@ -5,7 +5,6 @@ "ButtonNetwork": "नेटवर्क", "ButtonMore": "अजून", "ButtonInfo": "माहिती", - "ButtonGuide": "गाईड", "ButtonGotIt": "समजले", "ButtonForgotPassword": "पासवर्ड विसरलो", "ButtonChangeServer": "सर्व्हर बदला", @@ -68,10 +67,8 @@ "ButtonTrailer": "ट्रेलर", "ButtonStop": "थांबा", "ButtonStart": "सुरू करा", - "ButtonSettings": "सेटिंग्झ", "ButtonSend": "पाठवा", "ButtonSelectView": "दृष्य निवडा", - "ButtonSelectServer": "सर्व्हर निवडा", "ButtonSelectDirectory": "डिरेक्टरी निवडा", "ButtonScanAllLibraries": "सर्व संग्रहालय स्कॅन करा", "ButtonRename": "नाव बदला", diff --git a/src/strings/ms.json b/src/strings/ms.json index e9d03a73f0..d2364510ce 100644 --- a/src/strings/ms.json +++ b/src/strings/ms.json @@ -64,7 +64,6 @@ "ButtonChangeServer": "Tukar pelayan", "ButtonLibraryAccess": "Akses pustaka", "ButtonInfo": "Info", - "ButtonGuide": "Panduan", "ButtonGotIt": "Terima", "ButtonFullscreen": "Paparan skrin penuh", "ButtonForgotPassword": "Lupa Kata Laluan", diff --git a/src/strings/nb.json b/src/strings/nb.json index 591af23502..7a3de4f4a6 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -55,21 +55,16 @@ "ButtonOpen": "Åpne", "ButtonParentalControl": "Foreldrekontroll", "ButtonPreviousTrack": "Forrige spor", - "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Hurtigveiledning", "ButtonRefreshGuideData": "Oppdater TV-guidedata", "ButtonRemove": "Fjern", "ButtonRename": "Endre navn", "ButtonResetEasyPassword": "Tilbakestill PIN-kode", - "ButtonResetPassword": "Tilbakestill passord", - "ButtonRestart": "Omstart", "ButtonResume": "Fortsett", "ButtonRevoke": "Kall tilbake", "ButtonScanAllLibraries": "Skann alle biblioteker", "ButtonSelectDirectory": "Velg katalog", - "ButtonSelectServer": "Velg server", "ButtonSelectView": "Velg visning", - "ButtonSettings": "Innstillinger", "ButtonShutdown": "Slå av", "ButtonSignIn": "Logg inn", "ButtonSignOut": "Logg ut", @@ -297,7 +292,6 @@ "HeaderSendMessage": "Send melding", "HeaderSeriesOptions": "Serievalg", "HeaderServerSettings": "Serverinnstillinger", - "HeaderSettings": "Innstillinger", "HeaderSetupLibrary": "Konfigurer dine mediebibliotek", "HeaderSortBy": "Sorter etter", "HeaderSortOrder": "Sorteringsrekkefølge", @@ -719,18 +713,13 @@ "OptionAllowUserToManageServer": "Tillatt denne brukeren å administrere serveren", "OptionAllowVideoPlaybackRemuxing": "Tillat avspilling av video som krever konvertering uten omkoding", "OptionAllowVideoPlaybackTranscoding": "Tillat filmavspilling som krever omkoding", - "OptionAscending": "Økende", "OptionAutomaticallyGroupSeries": "Slå sammen serier som er spredt over flere mapper automatisk", "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", - "OptionBlockMovies": "Filmer", - "OptionBlockMusic": "Musikk", "OptionBlockTrailers": "Trailere", "OptionBlockTvShows": "TV-serier", "OptionCommunityRating": "Fellesskapets vurdering", - "OptionContinuing": "Fortsetter", "OptionCriticRating": "Kritikervurdering", "OptionCustomUsers": "Tilpasset", "OptionDaily": "Daglig", @@ -738,15 +727,11 @@ "OptionDateAddedFileTime": "Bruk filopprettelsesdato", "OptionDateAddedImportTime": "Bruk datoen som samsvarer med skanningen inn i biblioteket", "OptionDatePlayed": "Dato avspilt", - "OptionDescending": "Fallende", "OptionDisableUser": "Deaktiver denne brukeren", "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.", - "OptionDownloadBackImage": "Bakside", - "OptionDownloadBoxImage": "Boks", - "OptionDownloadDiscImage": "Plate", "OptionDownloadImagesInAdvance": "Last ned bilder på forhånd", "OptionDownloadMenuImage": "Meny", "OptionDownloadPrimaryImage": "Primær", @@ -760,15 +745,12 @@ "OptionEnableForAllTuners": "Aktiver for alle mottakerenheter", "OptionEnableM2tsMode": "Aktiver M2ts-modus", "OptionEnableM2tsModeHelp": "Aktiver m2ts-modus for koding til mpegts.", - "OptionEnded": "Avsluttet", "OptionEquals": "Lik", "OptionEstimateContentLength": "Estimer innholdslengde ved omkoding", "OptionEveryday": "Hver dag", "OptionExternallyDownloaded": "Ekstern nedlasting", "OptionExtractChapterImage": "Aktiver uthenting av kapittelbilder", - "OptionFavorite": "Favoritter", "OptionHasSpecialFeatures": "Spesialfunksjoner", - "OptionHasSubtitles": "Undertekster", "OptionHasThemeSong": "Temasang", "OptionHasThemeVideo": "Temavideo", "OptionHideUser": "Skjul denne brukeren fra innloggingsskjermene", @@ -790,9 +772,7 @@ "OptionPlainVideoItems": "Vis alle videoer som enkle videoelementer", "OptionPlainVideoItemsHelp": "Alle videoer representerer i DIDL som \"object.item.videoItem\" i stedet for en mer bestemt type, for eksempel \"object.item.videoItem.movie\".", "OptionPlayCount": "Antall avspillinger", - "OptionPlayed": "Avspilt", "OptionPremiereDate": "Premieredato", - "OptionProfileAudio": "Lyd", "OptionProfilePhoto": "Bilde", "OptionProfileVideoAudio": "Videolyd", "OptionReleaseDate": "Utgivelsesdato", @@ -801,7 +781,6 @@ "OptionRequirePerfectSubtitleMatch": "Last kun ned undertekster som er en perfekt match for mine filer", "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", "OptionSaveMetadataAsHidden": "Lagre metadata og bilder som skjulte filer", "OptionSaveMetadataAsHiddenHelp": "Endring av denne innstillingen vil gjelde ny metadata som lagres fra nå av. Eksisterende metadata vil bli oppdatert neste gang de lagres av serveren.", "OptionSpecialEpisode": "Spesialepisoder", @@ -809,7 +788,6 @@ "OptionTrackName": "Låtnavn", "OptionTvdbRating": "TVDB-vurdering", "OptionUnairedEpisode": "Kommende episoder", - "OptionUnplayed": "Ikke sett", "OptionWakeFromSleep": "Våkne fra dvale", "OptionWeekdays": "Ukedager", "OptionWeekends": "Helger", @@ -936,11 +914,9 @@ "TabOther": "Annet", "TabParentalControl": "Foreldrekontroll", "TabPlugins": "Programtillegg", - "TabProfile": "Profil", "TabProfiles": "Profiler", "TabResponses": "Svar", "TabScheduledTasks": "Planlagte oppgaver", - "TabSettings": "Innstillinger", "TabUpcoming": "Kommende", "Tags": "Tagger", "TellUsAboutYourself": "Fortell oss litt om deg selv", @@ -1006,7 +982,6 @@ "ButtonSend": "Send", "ButtonPause": "Pause", "ButtonInfo": "Informasjon", - "ButtonGuide": "Guide", "AirDate": "Sendedato", "Browse": "Bla", "BoxRear": "Eske (bakside)", @@ -1050,7 +1025,6 @@ "MediaInfoStreamTypeEmbeddedImage": "Integrert bilde", "MediaInfoStreamTypeSubtitle": "Undertekst", "MediaInfoStreamTypeVideo": "Video", - "OptionDownloadBannerImage": "Banner", "CopyStreamURLSuccess": "URLen ble kopiert.", "OptionThumb": "Miniatyrbilde", "LabelInternetQuality": "Internettkvalitet:", @@ -1073,8 +1047,6 @@ "MediaInfoStreamTypeData": "Data", "Option3D": "3D", "LabelVideo": "Video", - "OptionAlbum": "Album", - "OptionAlbumArtist": "Albumartist", "Filters": "Filtre", "HeaderExternalIds": "Eksterne IDer:", "HeaderFavoriteVideos": "Favorittvideoer", @@ -1111,22 +1083,18 @@ "ExtractChapterImagesHelp": "Uthenting av kapittelbilder vil gjøre det mulig for klienter å vise bilder i menyer for å velge kapitel. Denne prosessen kan være treg, ressurskrevende, og kan kreve flere gigabyte med lagringsplass. Prosessen kjører når videoer oppdages, samt som en daglig planlagt hendelse. Tidsplanen kan endres i innstillinger for planlagte hendelser. Det anbefales ikke at denne prosessen kjøres når det er mange aktive brukere innlogget.", "Extras": "Ekstramateriale", "HeaderKodiMetadataHelp": "For å aktivere eller deaktivere NFO-metadata, endre biblioteket og finn valgene for lagring av metadata.", - "OptionArtist": "Artist", "HeaderPhotoAlbums": "Fotoalbum", "HeaderSecondsValue": "{0} sekunder", "LabelAllowedRemoteAddresses": "Filter for eksterne IP-adresser:", "LabelAllowedRemoteAddressesMode": "Modus for filter for eksterne IP-adresser:", "LabelDiscNumber": "Platenummer:", "LabelDisplayLanguage": "Visningsspråk:", - "OptionAuto": "Automatisk", - "OptionHomeVideos": "Fotografier", "Photos": "Bilder", "Thumb": "Miniatyrbilde", "OptionBluray": "Blu-Ray", "HeaderAlbumArtists": "Albumartister", "HeaderFavoriteShows": "Favorittserier", "MusicLibraryHelp": "Se igjennom {0}veiledningen for navngivelse av musikk{1}.", - "OptionDownloadArtImage": "Omslagsbilde", "LabelAudioBitDepth": "Bitdybde for lyd:", "LabelAudioBitrate": "Bithastighet for lyd:", "LabelAudioChannels": "Lydkanaler:", @@ -1263,7 +1231,6 @@ "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", "OptionIsSD": "SD", "OptionList": "Liste", "OptionLoginAttemptsBeforeLockout": "Bestemmer hvor mange mislykkede innloggingsførsøk som kan finne sted før brukeren blir utestengt.", diff --git a/src/strings/nl.json b/src/strings/nl.json index 6258f7c216..dadd77d4e1 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -61,7 +61,6 @@ "ButtonForgotPassword": "Wachtwoord Vergeten", "ButtonFullscreen": "Volledig scherm", "ButtonGotIt": "Begrepen", - "ButtonGuide": "Gids", "ButtonLibraryAccess": "Bibliotheek toegang", "ButtonManualLogin": "Handmatige Aanmelding", "ButtonMore": "Meer", @@ -71,22 +70,17 @@ "ButtonParentalControl": "Ouderlijk toezicht", "ButtonPause": "Pauze", "ButtonPreviousTrack": "Vorige track", - "ButtonProfile": "Profiel", "ButtonQuickStartGuide": "Snelstart gids", "ButtonRefreshGuideData": "Gidsgegevens Vernieuwen", "ButtonRemove": "Verwijderen", "ButtonRename": "Naam wijzigen", "ButtonResetEasyPassword": "Reset eenvoudige pincode", - "ButtonResetPassword": "Wachtwoord resetten", - "ButtonRestart": "Herstart", "ButtonResume": "Hervatten", "ButtonRevoke": "Herroepen", "ButtonScanAllLibraries": "Scan alle bibliotheken", "ButtonSelectDirectory": "Selecteer map", - "ButtonSelectServer": "Server Selecteren", "ButtonSelectView": "Selecteer weergave", "ButtonSend": "Stuur", - "ButtonSettings": "Instellingen", "ButtonShutdown": "Afsluiten", "ButtonSignIn": "Aanmelden", "ButtonSignOut": "Afmelden", @@ -367,7 +361,6 @@ "HeaderSeriesOptions": "Series Opties", "HeaderSeriesStatus": "Seriestatus", "HeaderServerSettings": "Server Instellingen", - "HeaderSettings": "Instellingen", "HeaderSetupLibrary": "Stel uw mediabibliotheken in", "HeaderSortBy": "Sorteren op", "HeaderSortOrder": "Sorteer volgorde", @@ -827,7 +820,6 @@ "OnlyForcedSubtitlesHelp": "Alleen als geforceerd gemarkeerde ondertitels worden geladen.", "OnlyImageFormats": "Alleen beeld formaten (VOBSUP, PGS, SUB, etc.)", "OptionAdminUsers": "Beheerders", - "OptionAlbumArtist": "Albumartiest", "OptionAllUsers": "Alle gebruikers", "OptionAllowAudioPlaybackTranscoding": "Afspelen van geluid via transcoding toestaan", "OptionAllowBrowsingLiveTv": "Live TV toegang toestaan", @@ -844,19 +836,13 @@ "OptionAllowUserToManageServer": "Deze gebruiker kan de server beheren", "OptionAllowVideoPlaybackRemuxing": "Sta afspelen toe van video die conversie vereist zonder re-encoding", "OptionAllowVideoPlaybackTranscoding": "Afspelen van video die transcoderen vereisen toestaan", - "OptionArtist": "Artiest", - "OptionAscending": "Oplopend", "OptionAutomaticallyGroupSeries": "Automatisch samenvoegen serie die zijn verspreid over meerdere mappen", "OptionAutomaticallyGroupSeriesHelp": "Serie die verspreid zijn over meerdere mappen binnen deze bibliotheek worden automatisch samengevoegd tot één serie.", - "OptionBlockBooks": "Boeken", "OptionBlockChannelContent": "Internet kanaal Inhoud", "OptionBlockLiveTvChannels": "Live TV Kanalen", - "OptionBlockMovies": "Films", - "OptionBlockMusic": "Muziek", "OptionBlockTvShows": "TV Series", "OptionBluray": "Blu-ray", "OptionCommunityRating": "Algemene Waardering", - "OptionContinuing": "Wordt vervolgd", "OptionCriticRating": "Kritieken", "OptionCustomUsers": "Aangepast", "OptionDaily": "Dagelijks", @@ -864,14 +850,11 @@ "OptionDateAddedFileTime": "Gebruik aanmaak datum bestand", "OptionDateAddedImportTime": "Gebruik scan datum", "OptionDatePlayed": "Datum afgespeeld", - "OptionDescending": "Aflopend", "OptionDisableUser": "Deze gebruiker uitschakelen", "OptionDisableUserHelp": "De server staat geen verbindingen van deze gebruiker toe. Bestaande verbindingen zullen abrupt worden beëindigd.", "OptionDislikes": "Niet leuk", "OptionDisplayFolderView": "Toon een mappenweergave als u gewoon Mediamappen wilt weergeven", "OptionDisplayFolderViewHelp": "Geef folders weer naast uw andere media bibliotheken. Dit kan handig zijn als u een oppervlakkig folder aanzicht wilt hebben.", - "OptionDownloadBackImage": "Terug", - "OptionDownloadDiscImage": "Schijf", "OptionDownloadImagesInAdvance": "Download afbeeldingen van tevoren", "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", @@ -885,21 +868,17 @@ "OptionEnableForAllTuners": "Inschakelen voor alle tuners", "OptionEnableM2tsMode": "M2ts-modus inschakelen", "OptionEnableM2tsModeHelp": "M2ts-modus bij het encoderen naar mpegts inschakelen.", - "OptionEnded": "Gestopt", "OptionEquals": "Is gelijk aan", "OptionEstimateContentLength": "Lengte inschatten van de inhoud bij het transcoderen", "OptionEveryday": "Elke dag", "OptionExternallyDownloaded": "Externe download", "OptionExtractChapterImage": "Inschakelen uitpakken van hoofdstuk afbeeldingen", - "OptionFavorite": "Favorieten", "OptionHasSpecialFeatures": "Extra's", - "OptionHasSubtitles": "Ondertiteling", "OptionHasThemeSong": "Thema Lied", "OptionHasThemeVideo": "Thema Video", "OptionHideUser": "Verberg deze gebruiker op de aanmeldschermen", "OptionHideUserFromLoginHelp": "Handig voor pivé of verborgen beheer accounts. De gebruiker zal handmatig moeten inloggen met een gebruikersnaam en wachtwoord.", "OptionHlsSegmentedSubtitles": "HLS gesegmenteerde ondertiteling", - "OptionHomeVideos": "Foto's", "OptionIgnoreTranscodeByteRangeRequests": "Transcodeer byte range-aanvragen negeren", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Indien ingeschakeld, zullen deze verzoeken worden gehonoreerd, maar zal de byte bereik header worden genegeerd.", "OptionImdbRating": "IMDb Waardering", @@ -915,9 +894,7 @@ "OptionPlainVideoItems": "Alle video's weergeven als gewone video items", "OptionPlainVideoItemsHelp": "Indien ingeschakeld worden alle video's in DIDL weergegeven als 'object.item.videoItem' in plaats van een meer specifiek type, zoals 'object.item.videoItem.movie'.", "OptionPlayCount": "Afspeel telling", - "OptionPlayed": "Afgespeeld", "OptionPremiereDate": "Première Datum", - "OptionProfileAudio": "Geluid", "OptionProfilePhoto": "Foto", "OptionProfileVideoAudio": "Video geluid", "OptionReleaseDate": "Uitgave datum", @@ -926,14 +903,12 @@ "OptionRequirePerfectSubtitleMatch": "Alleen ondertitels downloaden die een perfecte match geven voor mijn video bestanden", "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", "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", "OptionTrackName": "Naam van Nummer", "OptionTvdbRating": "TVDB Waardering", "OptionUnairedEpisode": "Toekomstige Afleveringen", - "OptionUnplayed": "Niet afgespeeld", "OptionWakeFromSleep": "Uit slaapstand halen", "OptionWeekdays": "Week dagen", "OptionWeekends": "Weekend", @@ -1080,11 +1055,9 @@ "TabNotifications": "Meldingen", "TabOther": "Overig", "TabParentalControl": "Ouderlijk toezicht", - "TabProfile": "Profiel", "TabProfiles": "Profielen", "TabResponses": "Reacties", "TabScheduledTasks": "Geplande taken", - "TabSettings": "Instellingen", "TabUpcoming": "Binnenkort op TV", "Tags": "Labels", "TagsValue": "Labels: {0}", @@ -1199,7 +1172,6 @@ "FetchingData": "Meer data op aan het halen", "HeaderFavoriteBooks": "Favoriete Boeken", "LabelUserLoginAttemptsBeforeLockout": "Mislukte aanmeld pogingen voordat de gebruiker buitengesloten wordt:", - "OptionHasTrailer": "Trailer", "OptionMax": "Max", "LabelBaseUrl": "Basis URL:", "LabelTranscodingProgress": "Transcoderen voortgang:", @@ -1211,9 +1183,6 @@ "MusicArtist": "Muziek Artiest", "MusicVideo": "Muziek Video", "Option3D": "3D", - "OptionAlbum": "Album", - "OptionDownloadArtImage": "Kunst", - "OptionDownloadBannerImage": "Banner", "OptionDownloadLogoImage": "Logo", "OptionDownloadMenuImage": "Menu", "OptionPosterCard": "Poster kaart", @@ -1307,14 +1276,12 @@ "OptionBanner": "Banner", "OptionBlockTrailers": "Trailers", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", - "OptionDownloadBoxImage": "Hoes", "OptionLoginAttemptsBeforeLockoutHelp": "Een waarde van nul betekent dat de standaard waarden van drie pogingen voor normale gebruikers en vijf voor administratoren gebruikt zullen worden. Een waarde van -1 zal deze functionaliteit uit zetten.", "OptionPoster": "Poster", "OptionProtocolHls": "HTTP Live Streaming", "OptionRegex": "Regex", "TabServer": "Server", "TabStreaming": "Streamen", - "OptionAuto": "Auto", "OptionProfileVideo": "Video", "AlbumArtist": "Album Artiest", "Album": "Album", diff --git a/src/strings/pl.json b/src/strings/pl.json index 7337edae72..eaf4a60fc3 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -66,7 +66,6 @@ "ButtonForgotPassword": "Zapomniałem hasła", "ButtonFullscreen": "Pełny ekran", "ButtonGotIt": "Rozumiem", - "ButtonGuide": "Przewodnik", "ButtonInfo": "Informacje", "ButtonLibraryAccess": "Dostęp do biblioteki", "ButtonManualLogin": "Logowanie manualne", @@ -77,22 +76,17 @@ "ButtonParentalControl": "Kontrola rodzicielska", "ButtonPause": "Pauza", "ButtonPreviousTrack": "Poprzedni utwór", - "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Skrócona Instrukcja Obsługi", "ButtonRefreshGuideData": "Odśwież dane przewodnika", "ButtonRemove": "Usuń", "ButtonRename": "Zmień nazwę", "ButtonResetEasyPassword": "Wyczyść kod PIN", - "ButtonResetPassword": "Wyczyść hasło", - "ButtonRestart": "Uruchom ponownie", "ButtonResume": "Wznów", "ButtonRevoke": "Odwołaj", "ButtonScanAllLibraries": "Skanuj biblioteki", "ButtonSelectDirectory": "Wybierz folder", - "ButtonSelectServer": "Serwery", "ButtonSelectView": "Wybierz widok", "ButtonSend": "Wyślij", - "ButtonSettings": "Ustawienia", "ButtonShutdown": "Zamknij", "ButtonSignIn": "Zaloguj się", "ButtonSignOut": "Wyloguj", @@ -385,7 +379,6 @@ "HeaderSeriesOptions": "Opcje nagrywania serialu", "HeaderSeriesStatus": "Stan serialu", "HeaderServerSettings": "Ustawienia serwera", - "HeaderSettings": "Ustawienia", "HeaderSetupLibrary": "Skonfiguruj swoje biblioteki mediów", "HeaderSortBy": "Sortuj według", "HeaderSortOrder": "Porządek sortowania", @@ -880,7 +873,6 @@ "OnlyForcedSubtitlesHelp": "Tylko napisy oznaczone jako wymuszone będą wczytywane.", "OnlyImageFormats": "Tylko Formaty Graficzne (VOBSUB, PGS, SUB)", "OptionAdminUsers": "Administratorzy", - "OptionAlbumArtist": "Wykonawca albumu", "OptionAllUsers": "Wszyscy użytkownicy", "OptionAllowAudioPlaybackTranscoding": "Zezwalaj na odtwarzanie dźwięku, które wymaga transkodowania", "OptionAllowBrowsingLiveTv": "Udostępniaj telewizję", @@ -897,21 +889,14 @@ "OptionAllowUserToManageServer": "Zezwalaj temu użytkownikowi na zarządzanie serwerem", "OptionAllowVideoPlaybackRemuxing": "Zezwalaj na odtwarzanie video, które wymaga konwersji, bez ponownego kodowania", "OptionAllowVideoPlaybackTranscoding": "Zezwalaj na odtwarzanie wideo, które wymaga transkodowania", - "OptionArtist": "Wykonawca", - "OptionAscending": "Rosnąco", - "OptionAuto": "Automatycznie", "OptionAutomaticallyGroupSeries": "Scalaj seriale znajdujące się w wielu folderach", "OptionAutomaticallyGroupSeriesHelp": "Serie rozmieszczone w wielu folderach w tej bibliotece zostaną automatycznie połączone w jedną serię.", - "OptionBlockBooks": "Książki", "OptionBlockChannelContent": "Kanały internetowe", "OptionBlockLiveTvChannels": "Kanały telewizyjne", - "OptionBlockMovies": "Filmy", - "OptionBlockMusic": "Muzyka", "OptionBlockTrailers": "Zwiastuny", "OptionBlockTvShows": "Seriale", "OptionBluray": "Płyta Blu-ray", "OptionCommunityRating": "Ocena społeczności", - "OptionContinuing": "Kontynuuj", "OptionCriticRating": "Ocena krytyków", "OptionCustomUsers": "Własne", "OptionDaily": "Codziennie", @@ -919,17 +904,11 @@ "OptionDateAddedFileTime": "Używaj daty utworzenia pliku", "OptionDateAddedImportTime": "Używaj daty dodania do biblioteki", "OptionDatePlayed": "Data odtwarzania", - "OptionDescending": "Malejąco", "OptionDisableUser": "Deaktywuj tego użytkownika", "OptionDisableUserHelp": "Serwer nie zezwoli na żadne połączenia od tego użytkownika. Istniejące połączenia zostaną nagle przerwane.", "OptionDislikes": "Nie Lubie", "OptionDisplayFolderView": "Wyświetlaj widok folderów z listą foldery mediów", "OptionDisplayFolderViewHelp": "Wyświetl foldery obok innych bibliotek multimediów. Może to być przydatne, jeśli chcesz mieć prosty widok folderu.", - "OptionDownloadArtImage": "Przezrocze", - "OptionDownloadBackImage": "Wstecz", - "OptionDownloadBannerImage": "Baner", - "OptionDownloadBoxImage": "Pudełko", - "OptionDownloadDiscImage": "Dysk", "OptionDownloadImagesInAdvance": "Pobieraj obrazy z wyprzedzeniem", "OptionDownloadImagesInAdvanceHelp": "Domyślnie większość obrazów jest pobierana tylko na żądanie klienta. Włącz tę opcję, aby pobierać wszystkie obrazy z wyprzedzeniem podczas importowania nowych multimediów. Może to spowodować znacznie dłuższe skanowanie biblioteki.", "OptionDownloadPrimaryImage": "Podstawowy", @@ -944,22 +923,17 @@ "OptionEnableForAllTuners": "Aktywuj dla wszystkich tunerów", "OptionEnableM2tsMode": "Aktywuj tryb M2ts", "OptionEnableM2tsModeHelp": "Aktywuj tryb m2ts podczas kodowania do mpegts.", - "OptionEnded": "Zakończony", "OptionEquals": "Równy", "OptionEstimateContentLength": "Określa długość zawartości podczas transkodowania", "OptionEveryday": "Każdego dnia", "OptionExternallyDownloaded": "Pobieranie zewnętrzne", "OptionExtractChapterImage": "Wydobywaj obrazy rozdziałów", - "OptionFavorite": "Ulubione", "OptionHasSpecialFeatures": "Funkcje Specjalne", - "OptionHasSubtitles": "Napisy", "OptionHasThemeSong": "Piosenka Przewodnia", "OptionHasThemeVideo": "Wideo Przewodnie", - "OptionHasTrailer": "Zwiastun", "OptionHideUser": "Ukrywaj tego użytkownika na ekranie logowania", "OptionHideUserFromLoginHelp": "Przydatne dla prywatności lub ukrycia kont administratorów. Użytkownik będzie musiał wprowadzić nazwę użytkownika i hasło manualnie.", "OptionHlsSegmentedSubtitles": "Napisy dostosowane do HLS", - "OptionHomeVideos": "Zdjęcia", "OptionIgnoreTranscodeByteRangeRequests": "Ignoruj żądanie zakresu byte transkodowania", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Te żądania będą uznane ale będzie ignorowany nagłówek zakresu byte.", "OptionImdbRating": "Ocena IMDb", @@ -976,9 +950,7 @@ "OptionPlainVideoItems": "Wyświetlaj wszystkie wideo jako zwyczajne pozycje", "OptionPlainVideoItemsHelp": "Wszystkie wideo są reprezentowane w DIDL jako \"object.item.videoitem\" zamiast bardziej dokładnych typów takich jak \"object.item.videoitem.movie\".", "OptionPlayCount": "Liczba odtworzeń", - "OptionPlayed": "Obejrzany", "OptionPremiereDate": "Data premiery", - "OptionProfileAudio": "Dźwięk", "OptionProfilePhoto": "Fotografia", "OptionProfileVideo": "Wideo", "OptionProfileVideoAudio": "Wideo Audio", @@ -992,7 +964,6 @@ "OptionRequirePerfectSubtitleMatchHelp": "Wymaganie perfekcyjnego dopasowania ograniczy listę napisów tylko do tych, które zostały przetestowane i zweryfikowane jako dokładnie pasujące. Odznaczenie tej opcji zwiększy szansę pobrania napisów, ale zwiększy także szansę na pobranie napisów błędnych lub o błędnej sygnaturze czasowej.", "OptionResElement": "Element res", "OptionResumable": "Do wznowienia", - "OptionRuntime": "Długość filmu", "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", @@ -1000,7 +971,6 @@ "OptionTrackName": "Nazwa utworu", "OptionTvdbRating": "Ocena TVDB", "OptionUnairedEpisode": "Odcinki o planowanej emisji", - "OptionUnplayed": "Nieobejrzany", "OptionWakeFromSleep": "Wybudź z uspienia", "OptionWeekdays": "Dni Tygodnia", "OptionWeekends": "Weekendy", @@ -1155,12 +1125,10 @@ "TabOther": "Inne", "TabParentalControl": "Kontrola rodzicielska", "TabPlugins": "Wtyczki", - "TabProfile": "Profil", "TabProfiles": "Profile", "TabResponses": "Odpowiedzi", "TabScheduledTasks": "Harmonogram zadań", "TabServer": "Serwer", - "TabSettings": "Ustawienia", "TabStreaming": "Transmitowanie", "TabUpcoming": "Wkrótce", "Tags": "Znaczniki", @@ -1270,7 +1238,6 @@ "MusicArtist": "Artysta Muzyczny", "MusicVideo": "Teledysk", "Option3D": "3D", - "OptionAlbum": "Album", "OptionBanner": "Baner", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionDownloadLogoImage": "Logo", diff --git a/src/strings/pr.json b/src/strings/pr.json index 4c99a4556c..e5a0cfbbbb 100644 --- a/src/strings/pr.json +++ b/src/strings/pr.json @@ -8,7 +8,6 @@ "HeaderMusicQuality": "Sea Shanty Strength", "HeaderLatestMusic": "Latest Sea Shanties", "FolderTypeMusic": "Sea Shanties", - "OptionBlockBooks": "Tall Tales", "HeaderFavoriteBooks": "Fav'rit Tales", "HeaderAudioBooks": "Spoken Tales", "FolderTypeBooks": "Tall Tales", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 8019cf9eeb..fa0b290762 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -62,7 +62,6 @@ "ButtonForgotPassword": "Esqueci a Senha", "ButtonFullscreen": "Tela Cheia", "ButtonGotIt": "Feito", - "ButtonGuide": "Guia", "ButtonLibraryAccess": "Acesso à biblioteca", "ButtonManualLogin": "Login Manual", "ButtonMore": "Mais", @@ -73,22 +72,17 @@ "ButtonParentalControl": "Controle dos pais", "ButtonPause": "Pausar", "ButtonPreviousTrack": "Faixa anterior", - "ButtonProfile": "Perfil", "ButtonQuickStartGuide": "Guia Rápido", "ButtonRefreshGuideData": "Atualizar Dados do Guia", "ButtonRemove": "Remover", "ButtonRename": "Renomear", "ButtonResetEasyPassword": "Redefinir código pin fácil", - "ButtonResetPassword": "Redefinir Senha", - "ButtonRestart": "Reiniciar", "ButtonResume": "Retomar", "ButtonRevoke": "Revogar", "ButtonScanAllLibraries": "Rastrear Todas as Bibliotecas", "ButtonSelectDirectory": "Selecionar Diretório", - "ButtonSelectServer": "Selecionar Servidor", "ButtonSelectView": "Selecionar visualização", "ButtonSend": "Enviar", - "ButtonSettings": "Configurações", "ButtonShutdown": "Desligar", "ButtonSignIn": "Entrar", "ButtonSignOut": "Sair", @@ -373,7 +367,6 @@ "HeaderSeriesOptions": "Opções da Série", "HeaderSeriesStatus": "Status da Série", "HeaderServerSettings": "Configurações de Servidor", - "HeaderSettings": "Configurações", "HeaderSetupLibrary": "Configurar suas bibliotecas de mídias", "HeaderSortBy": "Ordenar Por", "HeaderSortOrder": "Ordem", @@ -857,8 +850,6 @@ "OnlyForcedSubtitlesHelp": "Apenas legendas marcadas como forçadas serão carregadas.", "OnlyImageFormats": "Apenas formatos de imagens (VOBSUB, PGS, SUB, etc.)", "OptionAdminUsers": "Administradores", - "OptionAlbum": "Álbum", - "OptionAlbumArtist": "Artista do Álbum", "OptionAllUsers": "Todos os usuários", "OptionAllowAudioPlaybackTranscoding": "Permitir reprodução de áudio que necessite de transcodificação", "OptionAllowBrowsingLiveTv": "Permitir acesso à TV ao Vivo", @@ -875,18 +866,12 @@ "OptionAllowUserToManageServer": "Permitir este usuário administrar o servidor", "OptionAllowVideoPlaybackRemuxing": "Permitir reprodução de vídeos que requerem conversão sem recodificar", "OptionAllowVideoPlaybackTranscoding": "Permitir reprodução de vídeo que necessite de transcodificação", - "OptionArtist": "Artista", - "OptionAscending": "Crescente", "OptionAutomaticallyGroupSeries": "Mesclar automaticamente séries que estão em várias pastas", "OptionAutomaticallyGroupSeriesHelp": "Se ativado, séries que estiverem em várias pastas dentro desta biblioteca serão automaticamente mescladas em uma única série.", - "OptionBlockBooks": "Livros", "OptionBlockChannelContent": "Conteúdo do Canal de Internet", "OptionBlockLiveTvChannels": "Canais de TV ao Vivo", - "OptionBlockMovies": "Filmes", - "OptionBlockMusic": "Música", "OptionBlockTvShows": "Séries", "OptionCommunityRating": "Avaliação da Comunidade", - "OptionContinuing": "Continuando", "OptionCriticRating": "Avaliação da Crítica", "OptionCustomUsers": "Personalizado", "OptionDaily": "Diário", @@ -894,16 +879,11 @@ "OptionDateAddedFileTime": "Usar a data de criação do arquivo", "OptionDateAddedImportTime": "Usar a data obtida na biblioteca", "OptionDatePlayed": "Data de Reprodução", - "OptionDescending": "Decrescente", "OptionDisableUser": "Desativar este usuário", "OptionDisableUserHelp": "Se desativado, o servidor não permitirá nenhuma conexão deste usuário. Conexões existentes serão encerradas imediatamente.", "OptionDislikes": "Não gostei", "OptionDisplayFolderView": "Exibe visualização em pastas para exibir pastas de mídias", "OptionDisplayFolderViewHelp": "Exibição em pastas ao lado das biblioteca de mídia. Isto pode ser útil para visualizar por pastas.", - "OptionDownloadArtImage": "Arte", - "OptionDownloadBackImage": "Traseira", - "OptionDownloadBoxImage": "Caixa", - "OptionDownloadDiscImage": "Disco", "OptionDownloadImagesInAdvance": "Fazer download de imagens antecipadamente", "OptionDownloadImagesInAdvanceHelp": "Por padrão, a maioria das imagens são baixadas somente quando um app Jellyfin solicita. Ativar esta opção, baixará todas as imagens antecipadamente, ao importar novas mídias. Isto pode ocasionar um tempo maior para escanear a biblioteca.", "OptionDownloadPrimaryImage": "Principal", @@ -918,21 +898,17 @@ "OptionEnableForAllTuners": "Ativar para todos os sintonizadores", "OptionEnableM2tsMode": "Ativar modo M2ts", "OptionEnableM2tsModeHelp": "Ative o modo m2ts quando codificar para mpegts.", - "OptionEnded": "Finalizada", "OptionEquals": "Igual", "OptionEstimateContentLength": "Estimar o tamanho do conteúdo quando transcodificar", "OptionEveryday": "Todos os dias", "OptionExternallyDownloaded": "Download externo", "OptionExtractChapterImage": "Ativar extração de imagens de capítulos", - "OptionFavorite": "Favoritos", "OptionHasSpecialFeatures": "Recursos Especiais", - "OptionHasSubtitles": "Legendas", "OptionHasThemeSong": "Música-Tema", "OptionHasThemeVideo": "Vídeo-Tema", "OptionHideUser": "Ocultar este usuário das telas de login", "OptionHideUserFromLoginHelp": "Útil para contas de administrador privadas ou ocultas. O usuário necessitará entrar manualmente, digitando seu usuário e senha.", "OptionHlsSegmentedSubtitles": "Legendas segmentadas HLS", - "OptionHomeVideos": "Fotos", "OptionIgnoreTranscodeByteRangeRequests": "Ignorar requisições de extensão do byte de transcodificação", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Se ativado, estas requisições serão honradas mas irão ignorar o cabeçalho da extensão do byte.", "OptionImdbRating": "Avaliação IMDb", @@ -949,9 +925,7 @@ "OptionPlainVideoItems": "Exibir todos os vídeos como itens de vídeo", "OptionPlainVideoItemsHelp": "Se ativado, todos os vídeos são representados no DIDL como \"object.item.videoItem\" ao invés de um tipo mais específico como, por exemplo, \"object.item.videoItem.movie\".", "OptionPlayCount": "Contagem de Reproduções", - "OptionPlayed": "Reproduzido", "OptionPremiereDate": "Data da Estréia", - "OptionProfileAudio": "Áudio", "OptionProfilePhoto": "Foto", "OptionProfileVideo": "Vídeo", "OptionProfileVideoAudio": "Áudio do Vídeo", @@ -962,14 +936,12 @@ "OptionRequirePerfectSubtitleMatchHelp": "Ao solicitar uma combinação perfeita, filtrará as legendas para incluir somente aquelas que foram testadas e verificadas com o arquivo de vídeo. Ao desmarcar isto, aumentará a quantidade de legendas baixadas, mas aumentará as chances de ter legendas que não estejam sincronizadas.", "OptionResElement": "elemento res", "OptionResumable": "Retomável", - "OptionRuntime": "Duração", "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", "OptionTrackName": "Nome da Faixa", "OptionTvdbRating": "Avaliação TVDB", "OptionUnairedEpisode": "Episódios a Estrear", - "OptionUnplayed": "Não reproduzido", "OptionWakeFromSleep": "Despertar da hibernação", "OptionWeekdays": "Dias da semana", "OptionWeekends": "Fins de semana", @@ -1116,12 +1088,10 @@ "TabNotifications": "Notificações", "TabOther": "Outros", "TabParentalControl": "Controle dos Pais", - "TabProfile": "Perfil", "TabProfiles": "Perfis", "TabResponses": "Respostas", "TabScheduledTasks": "Tarefas Agendadas", "TabServer": "Servidor", - "TabSettings": "Configurações", "TabUpcoming": "A Seguir", "TellUsAboutYourself": "Conte-nos sobre você", "ThemeSongs": "Músicas-tema", @@ -1215,7 +1185,6 @@ "MessageImageTypeNotSelected": "Por favor, selecione um tipo de imagem do menu.", "Normal": "Normal", "Option3D": "3D", - "OptionAuto": "Automático", "AuthProviderHelp": "Selecione um provedor de autenticação que será usado para autenticar a senha do usuário.", "HeaderFavoriteMovies": "Filmes Favoritos", "HeaderFavoriteShows": "Séries favoritas", @@ -1252,10 +1221,8 @@ "OptionBanner": "Banner", "OptionBlockTrailers": "Trailers", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", - "OptionDownloadBannerImage": "Banner", "OptionDownloadLogoImage": "Logo", "OptionDownloadMenuImage": "Menu", - "OptionHasTrailer": "Trailer", "OptionIsHD": "HD", "OptionIsSD": "SD", "OptionList": "Lista", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index d421efa30d..b86359921b 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -27,20 +27,16 @@ "ButtonOpen": "Abrir", "ButtonPause": "Pausar", "ButtonPreviousTrack": "Faixa anterior", - "ButtonProfile": "Perfil", "ButtonQuickStartGuide": "Guia de Início Rápido", "ButtonRefreshGuideData": "Atualizar Programação de TV", "ButtonRemove": "Remover", "ButtonResetEasyPassword": "Redefinir código PIN", - "ButtonResetPassword": "Redefinir palavra-passe", - "ButtonRestart": "Reiniciar", "ButtonResume": "Retomar", "ButtonRevoke": "Revogar", "ButtonScanAllLibraries": "Analisar todas as Bibliotecas", "ButtonSelectDirectory": "Selecione a Pasta", "ButtonSelectView": "Selecionar visualização", "ButtonSend": "Enviar", - "ButtonSettings": "Configurações", "ButtonShutdown": "Encerrar", "ButtonSignIn": "Iniciar Sessão", "ButtonSignOut": "Sair", @@ -186,7 +182,6 @@ "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", "HeaderServerSettings": "Configurações do Servidor", - "HeaderSettings": "Configurações", "HeaderSetupLibrary": "Configurar Bibliotecas Multimédia", "HeaderSpecialEpisodeInfo": "Informação do Episódio Especial", "HeaderSpecialFeatures": "Extras", @@ -475,8 +470,6 @@ "NewCollectionNameExample": "Exemplo: Coleção Guerra das Estrelas", "MessageNoNextUpItems": "Nenhum encontrado. Comece a ver os seus programas!", "OptionAdminUsers": "Administradores", - "OptionAlbum": "Álbum", - "OptionAlbumArtist": "Artista do Álbum", "OptionAllUsers": "Todos os utilizadores", "OptionAllowAudioPlaybackTranscoding": "Permitir reprodução de áudio que necessite de transcodificação", "OptionAllowBrowsingLiveTv": "Permitir acesso a TV em Direto", @@ -490,16 +483,10 @@ "OptionAllowRemoteSharedDevicesHelp": "Dispositivos DLNA são considerados como partilhados até que um utilizador comece a controlá-lo.", "OptionAllowUserToManageServer": "Permitir a este utilizador gerir o servidor", "OptionAllowVideoPlaybackTranscoding": "Permitir reprodução de vídeo que necessite de transcodificação", - "OptionArtist": "Artista", - "OptionAscending": "Ascendente", - "OptionBlockBooks": "Livros", "OptionBlockChannelContent": "Conteúdo do Canal de Internet", "OptionBlockLiveTvChannels": "Canais de TV em Direto", - "OptionBlockMovies": "Filmes", - "OptionBlockMusic": "Música", "OptionBlockTvShows": "Programas de TV", "OptionCommunityRating": "Classificação da Comunidade", - "OptionContinuing": "A Continuar", "OptionCriticRating": "Classificação dos críticos", "OptionCustomUsers": "Personalizado", "OptionDaily": "Diariamente", @@ -507,14 +494,9 @@ "OptionDateAddedFileTime": "Usar a data de criação do ficheiro", "OptionDateAddedImportTime": "Usar a data de importação para a biblioteca", "OptionDatePlayed": "Data de reprodução", - "OptionDescending": "Descendente", "OptionDisableUser": "Desativar este utilizador", "OptionDisableUserHelp": "Se desativado, o servidor não permite nenhuma ligação com este nome de utilizador. Ligações existentes serão terminadas.", "OptionDislikes": "Não gostos", - "OptionDownloadArtImage": "Arte", - "OptionDownloadBackImage": "Traseira", - "OptionDownloadBoxImage": "Caixa", - "OptionDownloadDiscImage": "Disco", "OptionDownloadImagesInAdvanceHelp": "Por defeito, a maioria das imagens são transferidas só quando uma aplicação do Jellyfin as solicita. Ative esta opção para descarregar todas as imagens antencipadamente, assim que os novos ficheiros multimédia são importados. Isto pode aumentar significativamente a duração da análise da biblioteca.", "OptionDownloadPrimaryImage": "Principal", "OptionDownloadThumbImage": "Miniatura", @@ -525,14 +507,11 @@ "OptionEnableAccessToAllLibraries": "Permitir acesso a todas as bibliotecas", "OptionEnableM2tsMode": "Ativar modo M2ts", "OptionEnableM2tsModeHelp": "Ativar o modo m2ts durante a transcodificação para mpegts.", - "OptionEnded": "Terminado", "OptionEquals": "Iguais", "OptionEstimateContentLength": "Estimar o tamanho do conteúdo ao transcodificar", "OptionEveryday": "Todos os dias", "OptionExternallyDownloaded": "Download Externo", - "OptionFavorite": "Favoritos", "OptionHasSpecialFeatures": "Extras", - "OptionHasSubtitles": "Legendas", "OptionHasThemeSong": "Música de Tema", "OptionHasThemeVideo": "Vídeo de Tema", "OptionHideUser": "Ocultar este utilizador nos formulários de início de sessão", @@ -554,9 +533,7 @@ "OptionPlainVideoItems": "Mostrar todos os vídeos como itens de vídeo simples", "OptionPlainVideoItemsHelp": "Se ativado, todos os vídeos são representados no DIDL como \"object.item.videoItem\" ao invés de um tipo mais específico como, por exemplo, \"object.item.videoItem.movie\".", "OptionPlayCount": "N.º de Visualizações", - "OptionPlayed": "Reproduzido", "OptionPremiereDate": "Data de Estreia", - "OptionProfileAudio": "Áudio", "OptionProfilePhoto": "Fotografia", "OptionProfileVideo": "Vídeo", "OptionProfileVideoAudio": "Áudio do Vídeo", @@ -565,13 +542,11 @@ "OptionReportByteRangeSeekingWhenTranscodingHelp": "Isto é necessário para alguns dispositivos que não procuram o tempo muito bem.", "OptionResElement": "elemento res", "OptionResumable": "Retomável", - "OptionRuntime": "Duração", "OptionSaveMetadataAsHidden": "Guardar metadados e imagens como ficheiros ocultos", "OptionSpecialEpisode": "Especiais", "OptionTrackName": "Nome da pista", "OptionTvdbRating": "Classificação no TVDB", "OptionUnairedEpisode": "Episódios por Estrear", - "OptionUnplayed": "Por reproduzir", "OptionWakeFromSleep": "Retomar da suspensão", "OptionWeekdays": "Dias da semana", "OptionWeekends": "Fins-de-semana", @@ -631,12 +606,10 @@ "TabOther": "Outro", "TabParentalControl": "Controlo Parental", "TabPlugins": "Extensões", - "TabProfile": "Perfil", "TabProfiles": "Perfis", "TabResponses": "Respostas", "TabScheduledTasks": "Tarefas Agendadas", "TabServer": "Servidor", - "TabSettings": "Configurações", "TabUpcoming": "Próximos", "TellUsAboutYourself": "Fale-nos sobre si", "ThisWizardWillGuideYou": "Este assistente irá ajudá-lo durante o processo de configuração. Para começar, selecione o idioma.", @@ -724,12 +697,10 @@ "CancelRecording": "Cancelar gravação", "ButtonWebsite": "Website", "ButtonTrailer": "Trailer", - "ButtonSelectServer": "Selecionar servidor", "ButtonRename": "Alterar o nome", "ButtonParentalControl": "Controlo parental", "ButtonOk": "OK", "ButtonLibraryAccess": "Acesso à biblioteca", - "ButtonGuide": "Programação", "ButtonGotIt": "Entendido", "ButtonAudioTracks": "Faixas de Áudio", "Browse": "Procurar", @@ -1100,8 +1071,6 @@ "OptionList": "Lista", "OptionIsSD": "SD", "OptionIsHD": "HD", - "OptionHomeVideos": "Fotografias", - "OptionHasTrailer": "Trailer", "OptionExtractChapterImage": "Ativar extração de imagens do capítulo", "OptionEnableForAllTuners": "Ativar para todos os sintonizadores", "OptionEnableExternalContentInSuggestions": "Ativar conteúdo externo nas sugestões", @@ -1111,7 +1080,6 @@ "OptionBlockTrailers": "Trailers", "OptionAutomaticallyGroupSeriesHelp": "Se ativado, sérias que estejam espalhadas por várias pastas nesta biblioteca, serão automaticamente combinadas numa única série.", "OptionAutomaticallyGroupSeries": "Combinar automaticamente séries que estejam espalhadas por várias pastas", - "OptionAuto": "Auto", "OptionAllowVideoPlaybackRemuxing": "Permitir a reprodução de vídeo que requeira conversão sem transcodificação", "OptionAllowSyncTranscoding": "Permitir a transferência e sincronização de conteúdos que requeiram transcodificação", "OptionAllowLinkSharingHelp": "Apenas serão partilhadas páginas que contenham informação sobre os conteúdos. Os conteúdos nunca serão partilhados. As partilhas são limitadas no tempo e expiram após {0} dias.", @@ -1278,7 +1246,6 @@ "OptionThumb": "Miniatura", "OptionPosterCard": "Poster cartão", "OptionPoster": "Poster", - "OptionDownloadBannerImage": "Cartaz", "OptionDisplayFolderView": "Mostre em vista de pasta para ver pastas de mídia", "OptionBanner": "Cartaz", "NewCollectionHelp": "Coleções permitem criar grupos personalizados de filmes e outros tipos de conteúdo.", diff --git a/src/strings/pt.json b/src/strings/pt.json index 733044c2bf..750dd61c70 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -35,12 +35,10 @@ "TellUsAboutYourself": "Fale-nos sobre si", "TabUpcoming": "Próximos", "TabStreaming": "Transmissão", - "TabSettings": "Configurações", "TabServer": "Servidor", "TabScheduledTasks": "Tarefas Agendadas", "TabResponses": "Respostas", "TabProfiles": "Perfis", - "TabProfile": "Perfil", "TabPlugins": "Extensões", "TabParentalControl": "Controlo Parental", "TabOther": "Outro", @@ -148,14 +146,12 @@ "OptionWeekends": "Fins-de-semana", "OptionWeekdays": "Dias da semana", "OptionWakeFromSleep": "Retomar da suspensão", - "OptionUnplayed": "Por reproduzir", "OptionUnairedEpisode": "Episódios por Estrear", "OptionTvdbRating": "Classificação no TVDB", "OptionTrackName": "Nome da pista", "OptionSubstring": "Subcadeia", "OptionSpecialEpisode": "Especiais", "OptionSaveMetadataAsHidden": "Guardar metadados e imagens como ficheiros ocultos", - "OptionRuntime": "Duração", "OptionResumable": "Retomável", "OptionResElement": "elemento res", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Isto é necessário para alguns dispositivos que não pesquisam o tempo muito bem.", @@ -166,9 +162,7 @@ "OptionProfileVideoAudio": "Áudio do Vídeo", "OptionProfileVideo": "Vídeo", "OptionProfilePhoto": "Fotografia", - "OptionProfileAudio": "Áudio", "OptionPremiereDate": "Data de Estreia", - "OptionPlayed": "Reproduzido", "OptionPlayCount": "N.º de Visualizações", "OptionPlainVideoItemsHelp": "Quando activado, todos os vídeos são representados no DIDL como \"object.item.videoItem\" ao invés de um tipo mais específico como, por exemplo, \"object.item.videoItem.movie\".", "OptionPlainVideoItems": "Mostrar todos os vídeos como itens de vídeo simples", @@ -478,7 +472,6 @@ "HeaderSortOrder": "Direcção de Ordenação", "HeaderSortBy": "Ordenar Por", "HeaderSetupLibrary": "Configurar Bibliotecas Multimédia", - "HeaderSettings": "Configurações", "HeaderServerSettings": "Configurações do Servidor", "HeaderSeriesStatus": "Estado da Série", "HeaderSeriesOptions": "Opções da Série", @@ -569,13 +562,9 @@ "OptionDownloadPrimaryImage": "Principal", "OptionDownloadImagesInAdvanceHelp": "Por omissão, a maioria das imagens são transferidas apenas quando uma aplicação do Jellyfin as solicita. Active esta opção para descarregar todas as imagens antecipadamente, assim que novos ficheiros multimédia sejam importados. Isto pode aumentar significativamente a duração da análise da biblioteca.", "OptionDownloadImagesInAdvance": "Transferir imagens antecipadamente", - "OptionDownloadBoxImage": "Caixa", - "OptionDownloadBackImage": "Traseira", - "OptionDownloadArtImage": "Arte", "OptionDislikes": "Não gostos", "OptionDisableUserHelp": "Se desactivado, o servidor não permite nenhuma ligação a este utilizador. Ligações existentes serão imediatamente terminadas.", "OptionDisableUser": "Desactivar este utilizador", - "OptionDescending": "Descendente", "OptionDatePlayed": "Data de reprodução", "OptionDateAddedImportTime": "Usar a data de importação para a biblioteca", "OptionDateAddedFileTime": "Usar a data de criação do ficheiro", @@ -583,16 +572,10 @@ "OptionDaily": "Diariamente", "OptionCustomUsers": "Personalizado", "OptionCriticRating": "Classificação dos críticos", - "OptionContinuing": "A Continuar", "OptionCommunityRating": "Classificação da Comunidade", "OptionBlockTvShows": "Programas de TV", - "OptionBlockMusic": "Música", - "OptionBlockMovies": "Filmes", "OptionBlockLiveTvChannels": "Canais de TV em Directo", "OptionBlockChannelContent": "Conteúdo do Canal de Internet", - "OptionBlockBooks": "Livros", - "OptionAscending": "Ascendente", - "OptionArtist": "Artista", "OptionAllowVideoPlaybackTranscoding": "Permitir reprodução de vídeo que necessite de transcodificação", "OptionAllowUserToManageServer": "Permitir a este utilizador gerir o servidor", "OptionAllowRemoteSharedDevicesHelp": "Dispositivos DLNA são considerados partilhados até que um utilizador comece a controlá-lo.", @@ -613,8 +596,6 @@ "OptionAllowBrowsingLiveTv": "Permitir acesso a TV em Directo", "OptionAllowAudioPlaybackTranscoding": "Permitir reprodução de áudio que necessite transcodificação", "OptionAllUsers": "Todos os utilizadores", - "OptionAlbumArtist": "Artista do Álbum", - "OptionAlbum": "Álbum", "OptionAdminUsers": "Administradores", "OneChannel": "Um canal", "MessageNoPluginConfiguration": "Esta extensão não é configurável.", @@ -890,21 +871,16 @@ "ButtonSignIn": "Iniciar Sessão", "ButtonShutdown": "Encerrar", "ButtonSend": "Enviar", - "ButtonSettings": "Configurações", "ButtonSelectView": "Seleccionar visualização", - "ButtonSelectServer": "Seleccionar servidor", "ButtonSelectDirectory": "Seleccione a Pasta", "ButtonScanAllLibraries": "Analisar todas as Bibliotecas", "ButtonRevoke": "Revogar", "ButtonResume": "Retomar", - "ButtonRestart": "Reiniciar", - "ButtonResetPassword": "Redefinir palavra-passe", "ButtonResetEasyPassword": "Redefinir código PIN", "ButtonRename": "Alterar o nome", "ButtonRemove": "Remover", "ButtonRefreshGuideData": "Actualizar Programação de TV", "ButtonQuickStartGuide": "Guia de Início Rápido", - "ButtonProfile": "Perfil", "ButtonPreviousTrack": "Faixa anterior", "ButtonPause": "Pausar", "ButtonParentalControl": "Controlo parental", @@ -923,7 +899,6 @@ "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", "ButtonChangeServer": "Alterar Servidor", "ButtonCancel": "Cancelar", @@ -938,14 +913,11 @@ "OptionHideUser": "Ocultar este utilizador nos formulários de início de sessão", "OptionHasThemeVideo": "Vídeo de Tema", "OptionHasThemeSong": "Música de Tema", - "OptionHasSubtitles": "Legendas", "OptionHasSpecialFeatures": "Extras", - "OptionFavorite": "Favoritos", "OptionExternallyDownloaded": "Download Externo", "OptionEveryday": "Todos os dias", "OptionEstimateContentLength": "Estimar o tamanho do conteúdo ao transcodificar", "OptionEquals": "Igual a", - "OptionEnded": "Terminado", "OptionEnableM2tsModeHelp": "Activar o modo m2ts ao codificar para mpegts.", "OptionEnableM2tsMode": "Activar modo M2ts", "OptionEnableExternalContentInSuggestionsHelp": "Permitir que trailers da Internet e programas de TV em Directo sejam incluídos no conteúdo sugerido.", @@ -1085,7 +1057,6 @@ "FolderTypeMovies": "Filmes", "OptionIgnoreTranscodeByteRangeRequests": "Ignorar requisições de extensão do byte de transcodificação", "OptionEnableAccessToAllChannels": "Permitir acesso a todos os canais", - "OptionDownloadDiscImage": "Disco", "FetchingData": "Buscando Dados Adicionais", "EnableStreamLooping": "Habilitar loop do streaming", "Down": "Baixar", @@ -1214,17 +1185,13 @@ "OptionList": "Listar", "OptionIsSD": "Definição padrão", "OptionIsHD": "Alta definição", - "OptionHomeVideos": "Fotos", - "OptionHasTrailer": "Trailer", "OptionEnableExternalContentInSuggestions": "Habilitar sugestão de conteúdo externo", "OptionDownloadMenuImage": "Menu", "OptionDownloadLogoImage": "Logotipo", - "OptionDownloadBannerImage": "Encarte", "OptionDisplayFolderViewHelp": "Exiba pastas ao lado de outras bibliotecas de mídia. Isso pode ser útil se você quiser ter uma visualização simples de pastas.", "OptionDisplayFolderView": "Exibir uma exibição de pasta para mostrar pastas de mídia simples", "OptionBluray": "Bluray", "OptionBanner": "Poster", - "OptionAuto": "Automático", "OptionAllowVideoPlaybackRemuxing": "Permitir execução de vídeo que requer conversão sem recodificar", "OptionAllowLinkSharingHelp": "Somente páginas da web que contêm informações sobre mídia são compartilhadas. Os arquivos de mídia nunca são compartilhados publicamente. O tempo de compartilhamento é limitado e expira após {0} dias.", "Option3D": "3D", diff --git a/src/strings/ro.json b/src/strings/ro.json index 962862324d..8bd26fb4dd 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -7,7 +7,6 @@ "ButtonQuickStartGuide": "Ghid rapid de Start", "ButtonRefreshGuideData": "Reîmprospătează Ghidul", "ButtonRemove": "Elimină", - "ButtonResetPassword": "Resetează parola", "ButtonSelectDirectory": "Selectați Director", "ButtonSignIn": "Autentificare", "ButtonSignOut": "Delogare", @@ -103,21 +102,14 @@ "OptionAllowRemoteSharedDevices": "Permite controlul la distanță a dispozitivelor partajate", "OptionAllowRemoteSharedDevicesHelp": "Dispozitivele DLNA sunt considerate partajate până ce un utilizator începe să le controleze.", "OptionAllowUserToManageServer": "Permite acestui utilizator să administreze serverul", - "OptionAscending": "Ascendent", "OptionCommunityRating": "Rating Comunitate", - "OptionContinuing": "Continuă", "OptionCriticRating": "Rating Critic", "OptionDaily": "Zilnic", "OptionDateAdded": "Dată Adăugare", "OptionDatePlayed": "Dată Rulare", - "OptionDescending": "Descrescător", "OptionDisableUser": "Dezactivați acest utilizator", "OptionDisableUserHelp": "Serverul nu va permite nici o conexiune de la acest utilizator. Conexiunile existente vor fi terminate brusc.", "OptionDislikes": "Dislike-uri", - "OptionDownloadArtImage": "Fundal", - "OptionDownloadBackImage": "Înapoi", - "OptionDownloadBannerImage": "Baner", - "OptionDownloadBoxImage": "Casetă", "OptionDownloadMenuImage": "Meniu", "OptionDownloadPrimaryImage": "Primar", "OptionDownloadThumbImage": "Miniatură", @@ -125,10 +117,7 @@ "OptionEnableAccessFromAllDevices": "Activează accesul de la toate dispozitivele", "OptionEnableAccessToAllChannels": "Activează accesul la toate canalele", "OptionEnableAccessToAllLibraries": "Activează accesul la toate bibliotecile", - "OptionEnded": "Anulat", - "OptionFavorite": "Favorite", "OptionHasSpecialFeatures": "Caracteristici Speciale", - "OptionHasSubtitles": "Subtitrări", "OptionHasThemeSong": "Audio de Fundal", "OptionHasThemeVideo": "Video de Fundal", "OptionHideUser": "Ascunde acest utilizator din pagina de autentificare", @@ -138,13 +127,10 @@ "OptionNameSort": "Nume", "OptionParentalRating": "Limită de vârstă", "OptionPlayCount": "Contorizare rulări", - "OptionPlayed": "Rulat", "OptionPremiereDate": "Data Premierei", "OptionReleaseDate": "Dată Lansare", "OptionResumable": "Poate fi continuat", - "OptionRuntime": "Timp Rulare", "OptionTrackName": "Nume melodie", - "OptionUnplayed": "Nerulat", "ParentalRating": "Parental Rating", "Saturday": "Sâmbătă", "Save": "Salveaza", @@ -158,9 +144,7 @@ "TabNetworks": "Rețele TV", "TabNotifications": "Notificări", "TabOther": "Altele", - "TabProfile": "Profil", "TabProfiles": "Profile", - "TabSettings": "Setări", "TabUpcoming": "Urmează să apară", "TellUsAboutYourself": "Spune-ne despre tine", "ThisWizardWillGuideYou": "Acest asistent vă va ghida prin procesul de configurare. Pentru a începe, vă rugăm să selectați limba preferată.", @@ -235,7 +219,6 @@ "BurnSubtitlesHelp": "Determină dacă serverul ar trebui să includă subtitrări când face transcodarea video. Evitând acest lucru va îmbunătăți performanța serverului. Selectează Auto pentru includerea formaturilor bazate pe imagini (VOBSUB, PGS, SUB, IDX, ...) și anumitor subtitrări ASS sau SSA.", "ButtonPreviousTrack": "Calea anterioară", "ButtonRevoke": "Revocă", - "ButtonSettings": "Setări", "ChangingMetadataImageSettingsNewContent": "Modificări ale metadatelor sau ale setărilor de descărcare a operelor de artă se va aplica doar conținutului nou adăugat în librăriile tale. Pentru a aplica modificările titlurilor deja existente va trebui reîmprospătată manual metadata lor.", "CinemaModeConfigurationHelp": "Mod cinema aduce experiența cinematografică în sufrageria dumneavoastră prin abilitatea de a rula trailere sau introuri personalizate înaintea titlului principal.", "ConfigureDateAdded": "Configurează cum este determinată data adaugării în tabloul de bord din setările librariei", @@ -263,7 +246,6 @@ "ButtonForgotPassword": "Parolă uitată", "ButtonFullscreen": "Umple ecranul", "ButtonGotIt": "Am înțeles", - "ButtonGuide": "Ghid", "ButtonInfo": "Info", "ButtonLibraryAccess": "Acces Librarie", "ButtonMore": "Mai mult", @@ -273,7 +255,6 @@ "ButtonOpen": "Deschide", "ButtonParentalControl": "Control parental", "ButtonPause": "Pauză", - "ButtonProfile": "Profil", "ConfirmEndPlayerSession": "Dorești să oprești serverul Jellyfin pe {0}?", "Connect": "Conectare", "ContinueWatching": "Continuă vizionarea", @@ -284,10 +265,8 @@ "DeleteImageConfirmation": "Sigur doriți să ștergeți această imagine?", "ButtonRename": "Redenumește", "ButtonResetEasyPassword": "Resetează codul Easy PIN", - "ButtonRestart": "Redemarează", "ButtonResume": "Continuă", "ButtonScanAllLibraries": "Scanează Toate Librariile", - "ButtonSelectServer": "Selectați Server", "ButtonSelectView": "Selectați perspectivă", "ButtonSend": "Trimite", "ButtonShutdown": "Oprește", @@ -539,7 +518,6 @@ "HeaderSeriesOptions": "Opțiuni Seriale", "HeaderSeriesStatus": "Starea Serialelor", "HeaderServerSettings": "Setările Serverului", - "HeaderSettings": "Setări", "HeaderSortBy": "Sortează după", "HeaderSortOrder": "Ordinea de sortare", "LabelTranscodingThreadCount": "Numărul de threaduri ale transcodării:", @@ -872,16 +850,11 @@ "OptionBluray": "BluRay", "OptionBlockTvShows": "Seriale TV", "OptionBlockTrailers": "Trailere", - "OptionBlockMusic": "Muzică", - "OptionBlockMovies": "Filme", "OptionBlockLiveTvChannels": "Canale Live TV", "OptionBlockChannelContent": "Conținut canal Internet", - "OptionBlockBooks": "Cărți", "OptionBanner": "Steag", "OptionAutomaticallyGroupSeriesHelp": "Seriile distribuite pe mai multe foldere din această bibliotecă vor fi comasate automat într-o singură serie.", "OptionAutomaticallyGroupSeries": "Fuzionează automat seriile care sunt răspândite pe mai multe foldere", - "OptionAuto": "Auto", - "OptionArtist": "Artist", "OptionAllowVideoPlaybackTranscoding": "Permiteți redarea video care necesită transcodare", "OptionAllowVideoPlaybackRemuxing": "Permiteți redarea video care necesită conversie fără re-codificare", "OptionAllowSyncTranscoding": "Permiteți descărcarea și sincronizarea media care necesită transcodare", @@ -889,8 +862,6 @@ "OptionAllowContentDownloading": "Permiteți descărcarea și sincronizarea media", "OptionAllowAudioPlaybackTranscoding": "Permiteți redarea audio care necesită transcodare", "OptionAllUsers": "Toți utilizatorii", - "OptionAlbumArtist": "Artistul albumului", - "OptionAlbum": "Album", "OptionAdminUsers": "Administratorii", "Option3D": "3D", "OnlyImageFormats": "Numai formate de imagine (VOBSUB, PGS, SUB)", @@ -1203,7 +1174,6 @@ "OptionProfileVideoAudio": "Audioul videoclipului", "OptionProfileVideo": "Video", "OptionProfilePhoto": "Fotografie", - "OptionProfileAudio": "Audio", "OptionPosterCard": "Carte de afiș", "OptionPoster": "Afiș", "OptionPlainVideoItemsHelp": "Toate videoclipurile sunt reprezentate în DIDL ca „object.item.videoItem” în loc de un tip mai specific, cum ar fi „object.item.videoItem.movie”.", @@ -1222,9 +1192,7 @@ "OptionIsHD": "HD", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Aceste solicitări vor fi respectate, dar vor ignora antetul intervalului de octeți.", "OptionIgnoreTranscodeByteRangeRequests": "Ignorați solicitările pentru transcodarea intervalului de octeți", - "OptionHomeVideos": "Fotografii", "OptionHlsSegmentedSubtitles": "Subtitrare segmentată HLS", - "OptionHasTrailer": "Trailer", "OptionExtractChapterImage": "Activați extragerea imaginii pentru capitole", "OptionExternallyDownloaded": "Descărcare externă", "OptionEveryday": "Zilnic", @@ -1239,7 +1207,6 @@ "OptionDownloadLogoImage": "Siglă", "OptionDownloadImagesInAdvanceHelp": "În mod implicit, majoritatea imaginilor sunt descărcate numai la cererea unei aplicații Jellyfin. Activați această opțiune pentru a descărca în avans toate imaginile, pe măsură ce fișiere media noi sunt importate. Acest lucru poate duce la mărirea semnificativă a timpilor de scanare a bibliotecii.", "OptionDownloadImagesInAdvance": "Descărcați imaginile în avans", - "OptionDownloadDiscImage": "Disc", "OptionDisplayFolderViewHelp": "Afișați dosarele alături de celelalte biblioteci media. Acest lucru poate fi util dacă doriți să aveți o vizualizare direct în dosar.", "OptionDisplayFolderView": "Afișați o vizualizare de dosar pentru a afișa dosarele media simple", "OptionDateAddedImportTime": "Utilizați data scanării în bibliotecă", diff --git a/src/strings/ru.json b/src/strings/ru.json index 74c054c99b..ed437496bb 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -66,7 +66,6 @@ "ButtonForgotPassword": "Напомнить пароль", "ButtonFullscreen": "Полный экран", "ButtonGotIt": "Понятно", - "ButtonGuide": "Телегид", "ButtonInfo": "Инфо", "ButtonLibraryAccess": "Доступ к медиатеке", "ButtonManualLogin": "Войти вручную", @@ -78,22 +77,17 @@ "ButtonParentalControl": "Родительский контроль", "ButtonPause": "Пауза", "ButtonPreviousTrack": "Предыдущая дорожка", - "ButtonProfile": "Профиль", "ButtonQuickStartGuide": "Руководство по запуску", "ButtonRefreshGuideData": "Обновить данные телегида", "ButtonRemove": "Изъять", "ButtonRename": "Переименовать", "ButtonResetEasyPassword": "Сбросить простой PIN-код", - "ButtonResetPassword": "Сбросить пароль", - "ButtonRestart": "Перезапустить", "ButtonResume": "Возобновить", "ButtonRevoke": "Отозвать", "ButtonScanAllLibraries": "Сканировать все медиатеки", "ButtonSelectDirectory": "Выбрать каталог", - "ButtonSelectServer": "Выбрать сервер", "ButtonSelectView": "Выбрать представление", "ButtonSend": "Передать", - "ButtonSettings": "Параметры", "ButtonShutdown": "Завершить работу", "ButtonSignIn": "Вход", "ButtonSignOut": "Выйти", @@ -388,7 +382,6 @@ "HeaderSeriesOptions": "Опции сериала", "HeaderSeriesStatus": "Статус сериала", "HeaderServerSettings": "Параметры сервера", - "HeaderSettings": "Параметры", "HeaderSetupLibrary": "Установка и настройка медиатеки", "HeaderSortBy": "Сортировка по", "HeaderSortOrder": "Порядок сортировки", @@ -889,8 +882,6 @@ "OnlyForcedSubtitlesHelp": "Загружены будут только форсированные субтитры.", "OnlyImageFormats": "Только графические форматы (VOBSUB, PGS и SUB)", "OptionAdminUsers": "Администраторы", - "OptionAlbum": "Альбом", - "OptionAlbumArtist": "Исп. альбома", "OptionAllUsers": "Все пользователи", "OptionAllowAudioPlaybackTranscoding": "Разрешить воспроизведение аудио, для которого потребуется перекодировка", "OptionAllowBrowsingLiveTv": "Разрешить доступ к эфиру", @@ -907,21 +898,14 @@ "OptionAllowUserToManageServer": "Разрешить этому пользователю управлять сервером", "OptionAllowVideoPlaybackRemuxing": "Разрешить воспроизведение видео, для которого потребуется преобразование без перекодировки", "OptionAllowVideoPlaybackTranscoding": "Разрешить воспроизведение видео, для которого потребуется перекодировка", - "OptionArtist": "Исполнитель", - "OptionAscending": "По возрастанию", - "OptionAuto": "Авто", "OptionAutomaticallyGroupSeries": "Автоматически сливать вместе сериалы, которые разбросаны по нескольким папкам", "OptionAutomaticallyGroupSeriesHelp": "Части сериала, которые разбросаны по нескольким папкам данной медиатеки, будут автоматически слиты в единый сериал.", - "OptionBlockBooks": "Книги", "OptionBlockChannelContent": "Содержание интернет-канала", "OptionBlockLiveTvChannels": "Эфирные каналы", - "OptionBlockMovies": "Фильмы", - "OptionBlockMusic": "Музыка", "OptionBlockTrailers": "Трейлеры", "OptionBlockTvShows": "ТВ-передачи", "OptionBluray": "Blu-ray", "OptionCommunityRating": "Пользовательский рейтинг", - "OptionContinuing": "Продолжающееся", "OptionCriticRating": "Оценка критиков", "OptionCustomUsers": "Настраиваемые", "OptionDaily": "Ежедневно", @@ -929,17 +913,11 @@ "OptionDateAddedFileTime": "Дата создания файла", "OptionDateAddedImportTime": "Дата сканирования внутрь медиатеки", "OptionDatePlayed": "Дата воспроизведения", - "OptionDescending": "По убыванию", "OptionDisableUser": "Заблокировать пользователя", "OptionDisableUserHelp": "Этому пользователю не разрешаются любые подключения к серверу. Имеющиеся соединения будут разорваны.", "OptionDislikes": "Не нравящиеся", "OptionDisplayFolderView": "Отображать аспект Папки для просмотра обычных медиапапок", "OptionDisplayFolderViewHelp": "Отображение аспекта \"Папки\" рядом с другими вашими медиатеками. Это может быть полезно, если вы хотите вид обычных папок.", - "OptionDownloadArtImage": "Виньетка", - "OptionDownloadBackImage": "Фон", - "OptionDownloadBannerImage": "Баннер", - "OptionDownloadBoxImage": "DVD-бокс", - "OptionDownloadDiscImage": "Диск", "OptionDownloadImagesInAdvance": "Загружать изображения заблаговременно", "OptionDownloadImagesInAdvanceHelp": "По умолчанию, большинство изображений загружаются только при запросе от клиента. Включите данную опцию, чтобы загружать все изображения заблаговременно, при импорте новых медиаданных. Это может привести к существенно длительным сканированиям медиатеки.", "OptionDownloadLogoImage": "Логотип", @@ -956,22 +934,17 @@ "OptionEnableForAllTuners": "Включить для всех тюнерных устройств", "OptionEnableM2tsMode": "Включить режим M2ts", "OptionEnableM2tsModeHelp": "Включайте режим M2ts при кодировании для mpegts.", - "OptionEnded": "Прекращённое", "OptionEquals": "Равно", "OptionEstimateContentLength": "Рассчитывать длину содержимого при перекодировке", "OptionEveryday": "Ежедневно", "OptionExternallyDownloaded": "Внешние загружаемые", "OptionExtractChapterImage": "Включить извлечение изображений сцен", - "OptionFavorite": "Избранное", "OptionHasSpecialFeatures": "Доп. материалы", - "OptionHasSubtitles": "Субтитры", "OptionHasThemeSong": "Тематическая мелодия", "OptionHasThemeVideo": "Тематическое видео", - "OptionHasTrailer": "Трейлер", "OptionHideUser": "Скрыть этого пользователя с экрана входа", "OptionHideUserFromLoginHelp": "Целесообразно для личных или скрытых администраторских учётных записей. Пользователю будет нужно входить в систему вручную, вводя своё имя пользователя и пароль.", "OptionHlsSegmentedSubtitles": "Сегмент. субтитры HLS", - "OptionHomeVideos": "Фотографии", "OptionIgnoreTranscodeByteRangeRequests": "Игнорировать запросы диапазона байтов перекодировки", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Эти запросы будут учтены, но заголовок диапазона байтов будет проигнорирован.", "OptionImdbRating": "Оценка IMDb", @@ -988,9 +961,7 @@ "OptionPlainVideoItems": "Отображать все видео, как обычные видео элементы", "OptionPlainVideoItemsHelp": "Все видео описываются в DIDL как «object.item.videoItem», вместо более специфичного типа, например, «object.item.videoItem.movie».", "OptionPlayCount": "Кол. воспроизведений", - "OptionPlayed": "Воспроизведённые", "OptionPremiereDate": "Дата премьеры", - "OptionProfileAudio": "Аудио", "OptionProfilePhoto": "Фото", "OptionProfileVideo": "Видео", "OptionProfileVideoAudio": "Видео Аудио", @@ -1003,7 +974,6 @@ "OptionRequirePerfectSubtitleMatch": "Загружать только субтитры, которые наиболее соответствуют моим видеофайлам", "OptionRequirePerfectSubtitleMatchHelp": "Требование полного соответствия, при котором будут отфильтровываться только те субтитры, которые были проверены и подтверждены на соответствие с вашим видеофайлом. Если снять данный флажок, повысится вероятность загрузки субтитров, но увеличатся шансы несовпадения по времени или неверного текста субтитров.", "OptionResumable": "Возможно возобновление", - "OptionRuntime": "Длительность", "OptionSaveMetadataAsHidden": "Сохранять метаданные и изображения в виде скрытых файлов", "OptionSaveMetadataAsHiddenHelp": "Это изменение будет применено к новым метаданным сохраняемым в будущем. Существующие файлы метаданных будут обновлены в следующий раз, когда они будут сохраняться на сервере.", "OptionSpecialEpisode": "Спецэпизоды", @@ -1011,7 +981,6 @@ "OptionTrackName": "Название трека", "OptionTvdbRating": "Оценка TVDB", "OptionUnairedEpisode": "Ожидаемые эпизоды", - "OptionUnplayed": "Невоспроизведённое", "OptionWakeFromSleep": "Выход из спящего режима", "OptionWeekdays": "В будни", "OptionWeekends": "Выходные", @@ -1168,12 +1137,10 @@ "TabOther": "Другое", "TabParentalControl": "Управление содержанием", "TabPlugins": "Плагины", - "TabProfile": "Профиль", "TabProfiles": "Профили", "TabResponses": "Отклики", "TabScheduledTasks": "Планировщик", "TabServer": "Сервер", - "TabSettings": "Параметры", "TabStreaming": "Трансляция", "TabUpcoming": "Ожидаемое", "Tags": "Теги", diff --git a/src/strings/sk.json b/src/strings/sk.json index 6a604e3e29..af22004944 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -47,20 +47,15 @@ "ButtonParentalControl": "Rodičovská kontrola", "ButtonPause": "Pozastaviť", "ButtonPreviousTrack": "Predchádzajúca stopa", - "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Príručka rýchleho štartu", "ButtonRefreshGuideData": "Obnoviť údaje sprievodcu", "ButtonRemove": "Odstrániť", "ButtonRename": "Premenovať", "ButtonResetEasyPassword": "Obnoviť jednoduchý PIN kód", - "ButtonResetPassword": "Obnoviť heslo", - "ButtonRestart": "Reštartovať", "ButtonResume": "Pokračovať", "ButtonScanAllLibraries": "Prehľadať všetky knižnice", "ButtonSelectDirectory": "Vybrať priečinok", - "ButtonSelectServer": "Vybrať server", "ButtonSend": "Odoslať", - "ButtonSettings": "Nastavenia", "ButtonShutdown": "Vypnúť", "ButtonSignIn": "Prihlásiť sa", "ButtonSignOut": "Odhlásiť sa", @@ -231,7 +226,6 @@ "HeaderSelectServer": "Vybrať server", "HeaderSendMessage": "Poslať správu", "HeaderServerSettings": "Nastavenia servera", - "HeaderSettings": "Nastavenia", "HeaderSetupLibrary": "Nastavte Vaše knižnice médií", "HeaderSortBy": "Zoradiť podľa", "HeaderStartNow": "Začať teraz", @@ -536,16 +530,9 @@ "OptionAllowRemoteSharedDevicesHelp": "DLNA zariadenia sa považujú za zdieľané, dokým ich nejaký používateľ nezačne ovládať.", "OptionAllowUserToManageServer": "Povoliť tomuto používateľovi spravovať server", "OptionAllowVideoPlaybackTranscoding": "Povoliť prehrávanie videa, ktoré vyžaduje prekódovanie", - "OptionArtist": "Umelec", - "OptionAscending": "Vzostupne", - "OptionAuto": "Automaticky", "OptionAutomaticallyGroupSeries": "Automaticky zlúčiť série, ktoré sú uložené v rôznych priečinkoch", - "OptionBlockBooks": "Knihy", - "OptionBlockMovies": "Filmy", - "OptionBlockMusic": "Hudba", "OptionBlockTrailers": "Trailery", "OptionCommunityRating": "Hodnotenie komunity", - "OptionContinuing": "Pokračuje", "OptionCriticRating": "Hodnotenie kritikov", "OptionCustomUsers": "Vlastné", "OptionDaily": "Denne", @@ -553,13 +540,9 @@ "OptionDateAddedFileTime": "Použiť dátum vytvorenia súboru", "OptionDateAddedImportTime": "Podľa dátumu pridania do knižnice", "OptionDatePlayed": "Dátum prehrania", - "OptionDescending": "Zostupne", "OptionDisableUser": "Zakázať tohto používateľa", "OptionDisableUserHelp": "Server nepovolí žiadne pripojenia od tohto používateľa. Aktívne pripojenia budú ihneď ukončené.", "OptionDislikes": "Nepáči sa", - "OptionDownloadArtImage": "Obal", - "OptionDownloadBackImage": "Späť", - "OptionDownloadDiscImage": "Disk", "OptionDownloadImagesInAdvance": "Sťahovať obrázky dopredu", "OptionDownloadThumbImage": "Miniatúra", "OptionEmbedSubtitles": "Vložené v kontajneri", @@ -568,16 +551,12 @@ "OptionEnableAccessToAllLibraries": "Povoliť prístup ku všetkým knižniciam", "OptionEnableM2tsMode": "Povoliť M2ts mód", "OptionEnableM2tsModeHelp": "Povoliť režim M2TS pri kódovaní do MPEGTS.", - "OptionEnded": "Ukončené", "OptionEquals": "Sa rovná", "OptionEveryday": "Každý deň", - "OptionFavorite": "Obľúbené", - "OptionHasSubtitles": "Titulky", "OptionHasThemeSong": "Tématická hudba", "OptionHasThemeVideo": "Tématické video", "OptionHideUser": "Nezobrazovať tohto používateľa v prihlasovacích obrazovkách", "OptionHideUserFromLoginHelp": "Užitočné pre súkromné alebo ukryté administrátorské účty. Používateľ sa bude musieť prihlásiť manuálne zadaním mena a hesla.", - "OptionHomeVideos": "Fotky", "OptionImdbRating": "Hodnotenie IMDb", "OptionLikes": "Páči sa", "OptionMissingEpisode": "Chýbajúce epizódy", @@ -587,18 +566,15 @@ "OptionParentalRating": "Rodičovské hodnotenie", "OptionPlainVideoItems": "Zobraziť všetky videá ako obyčajné video položky", "OptionPlayCount": "Počet prehraní", - "OptionPlayed": "Prehrané", "OptionPremiereDate": "Dátum premiéry", "OptionProfilePhoto": "Fotografie", "OptionProtocolHttp": "HTTP", "OptionReleaseDate": "Dátum vydania", "OptionResumable": "Pozastaviteľný", - "OptionRuntime": "Dĺžka", "OptionSaveMetadataAsHidden": "Uložiť metadáta a obrázky ako skryté súbory", "OptionTrackName": "Názov skladby", "OptionTvdbRating": "TVDB hodnotenie", "OptionUnairedEpisode": "Nevysielané epizódy", - "OptionUnplayed": "Neprehrané", "OptionWakeFromSleep": "Zobudiť zo spánku", "OptionWeekdays": "Pracovné dni", "OptionWeekends": "Víkendy", @@ -711,11 +687,9 @@ "TabOther": "Iné", "TabParentalControl": "Rodičovská kontrola", "TabPlugins": "Zásuvné moduly", - "TabProfile": "Profil", "TabProfiles": "Profily", "TabResponses": "Odpovede", "TabScheduledTasks": "Naplánované úlohy", - "TabSettings": "Nastavenia", "TabUpcoming": "Nadchádzajúce", "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.", @@ -765,7 +739,6 @@ "Anytime": "Kedykoľvek", "Audio": "Zvuk", "Backdrop": "Pozadie", - "ButtonGuide": "Sprievodca", "ButtonRevoke": "Odvolať", "ButtonSelectView": "Výber zobrazenia", "CancelRecording": "Zrušiť nahrávanie", @@ -856,7 +829,6 @@ "LabelDisplayMode": "Režim zobrazenia:", "LabelDisplaySpecialsWithinSeasons": "Zobraziť špeciálne epizódy v sérií, v ktorej boli odvysielané", "Option3D": "3D", - "OptionAlbum": "Album", "OptionBluray": "Blu-ray", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionDownloadLogoImage": "Logo", @@ -865,13 +837,11 @@ "OptionDvd": "DVD", "OptionExtractChapterImage": "Povoliť extrakciu obrázkov z videa", "OptionHasSpecialFeatures": "Bonusové materiály", - "OptionHasTrailer": "Trailer", "OptionIsHD": "HD", "OptionIsSD": "SD", "OptionList": "Zoznam", "OptionMax": "Max", "OptionPoster": "Plagát", - "OptionProfileAudio": "Zvuk", "OptionProfileVideo": "Video", "OptionProtocolHls": "Živý HTTP stream", "OptionRequirePerfectSubtitleMatch": "Sťahovať iba titulky, ktoré perfektne sedia k mojim video súborom", @@ -1130,8 +1100,6 @@ "OptionExternallyDownloaded": "Externé sťahovanie", "OptionEnableExternalContentInSuggestionsHelp": "Povoliť zahrnutie internetových trailerov a živých TV programov do navrhovaného obsahu.", "OptionDownloadImagesInAdvanceHelp": "Vo východzom stave sa väčšina obrázkov sťahuje až po vyžiadaní klientom. Povolením tejto možnosti sa budú všetky obrázky sťahovať popredu, keď sa budú importovať nové médiá. Toto môže spôsobiť výrazne dlhšie skenovanie knižnice.", - "OptionDownloadBoxImage": "Krabica", - "OptionDownloadBannerImage": "Banner", "OptionDisplayFolderViewHelp": "Zobraziť priečinky popri ostatných médiách v knižnici. Toto môže byť užitočné, pokiaľ chcete vidieť jednoduché zobrazenie priečinku.", "OptionDisplayFolderView": "Zobraziť priečinok s jednoduchým zobrazením priečinkov medií", "OptionBlockTvShows": "Seriál", @@ -1146,7 +1114,6 @@ "LabelUserAgent": "User agent:", "LabelEnableBlastAliveMessagesHelp": "Povolte v prípade, že server nie je viditeľný inými UPnP zariadeniami na vašej sieti.", "XmlTvSportsCategoriesHelp": "Programy s týmito kategóriami budú zobrazené ako športové programy. Viacej kategórií oddelte \"|\".", - "OptionAlbumArtist": "Umelec albumu", "NoSubtitlesHelp": "Vo východzom nastavení nebudú titulky načítané. Stále však môžu byť manuálne zapnuté počas prehrávania.", "MessageLeaveEmptyToInherit": "Zanechajte prázdne pre zdedenie nastavení z rodičovskej položky alebo z východzej globálnej hodnoty.", "NoNewDevicesFound": "Nebolo nájdené žiadne nové zariadenie. Pre pridanie nového tunera, zatvorte tento dialóg a zadajte informácie o zariadení manuálne.", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index e4cc58de6d..d3ea5381fc 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -1,7 +1,6 @@ { "ButtonAddUser": "Dodaj Uporabnika", "ButtonQuickStartGuide": "Vodnik za hiter zacetek", - "ButtonResetPassword": "Ponastavitev gesla", "ButtonSignOut": "Odjava", "FolderTypeTvShows": "TV", "HeaderAddToCollection": "Dodaj v Zbirko", @@ -9,7 +8,6 @@ "HeaderFrequentlyPlayed": "Pogosto Predvajano", "HeaderPaths": "Poti", "HeaderRecentlyPlayed": "Nazadnje Predvajano", - "HeaderSettings": "Nastavitve", "HeaderUser": "Uporabnik", "LabelArtists": "Izvajalci:", "LabelContentType": "Tip vsebine:", @@ -28,12 +26,8 @@ "OptionEnableAccessFromAllDevices": "Omogoči dostop iz vseh naprav", "OptionEnableAccessToAllChannels": "Omogoci dostop do vseh kanalov", "OptionEnableAccessToAllLibraries": "Omogoci dostop do vseh knjiznic", - "OptionFavorite": "Priljubljene", - "OptionHasSubtitles": "Podnapisi", "OptionLikes": "Všeč mi je", - "OptionPlayed": "Predvajano", "OptionReleaseDate": "Datum izida", - "OptionUnplayed": "Nepredvajano", "ParentalRating": "Ocena za starše", "Settings": "Nastavitve", "TabAccess": "Dostop", @@ -42,7 +36,6 @@ "TabMusic": "Glasba", "TabMyPlugins": "Moji dodatki", "TabNetworks": "Omrezja", - "TabProfile": "Profil", "TabProfiles": "Profili", "TabUpcoming": "Prihajajoče", "TellUsAboutYourself": "Povej nam nekaj o sebi", @@ -127,7 +120,6 @@ "ButtonForgotPassword": "Pozabljeno geslo", "ButtonFullscreen": "Polni zaslon", "ButtonGotIt": "Razumem", - "ButtonGuide": "Vodič", "ButtonInfo": "Info", "ButtonLibraryAccess": "Dostop do knjižnic", "ButtonManualLogin": "Ročna prijava", @@ -139,20 +131,16 @@ "ButtonParentalControl": "Starševski nadzor", "ButtonPause": "Premor", "ButtonPreviousTrack": "Prejšnja skladba", - "ButtonProfile": "Profil", "ButtonRefreshGuideData": "Osveži TV vodič", "ButtonRemove": "Odstrani", "ButtonRename": "Preimenuj", "ButtonResetEasyPassword": "Ponastavi preprosto PIN kodo", - "ButtonRestart": "Ponovno zaženi", "ButtonResume": "Nadaljuj", "ButtonRevoke": "Razveljavi", "ButtonScanAllLibraries": "Preišči vse knjižnice", "ButtonSelectDirectory": "Izberi mapo", - "ButtonSelectServer": "Izberi strežnik", "ButtonSelectView": "Izberi pogled", "ButtonSend": "Pošlji", - "ButtonSettings": "Nastavitve", "ButtonShutdown": "Ugasni", "ButtonSignIn": "Prijava", "ButtonStart": "Začetek", @@ -798,7 +786,6 @@ "Premieres": "Premiere", "Producer": "Producent", "Premiere": "Premiera", - "OptionRuntime": "Trajanje", "MediaInfoLayout": "Razporeditev", "Like": "Všeč mi je", "LabelPlayDefaultAudioTrack": "Predvajaj privzeti zvočni posnetek ne glede na jezik", @@ -837,7 +824,6 @@ "LabelPasswordConfirm": "Potrditev gesla:", "LabelPassword": "Geslo:", "OptionDisableUserHelp": "Strežnik ne bo dovolil nobenih povezav od tega uporabnika. Obstoječe povezave bodo prekinjene.", - "OptionDescending": "Padajoče", "OptionDatePlayed": "Datum predvajanja", "OptionDateAddedImportTime": "Uporabi datum dodajanja v knjižnico", "OptionDateAddedFileTime": "Uporabi datum nastanka datoteke", @@ -845,20 +831,14 @@ "OptionDaily": "Dnevno", "OptionCustomUsers": "Po meri", "OptionCriticRating": "Ocena kritikov", - "OptionContinuing": "Se nadaljuje", "OptionCommunityRating": "Ocena skupnosti", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionBluray": "Blu-ray", "OptionBlockTvShows": "TV serije", "OptionBlockTrailers": "Napovedniki", - "OptionBlockMusic": "Glasba", - "OptionBlockMovies": "Filmi", - "OptionBlockBooks": "Knjige", "OptionBanner": "Pasica", "OptionAutomaticallyGroupSeriesHelp": "Serije, ki so razdeljene v več mapah znotraj knjižnice bodo samodejno združene v eno serijo.", "OptionAutomaticallyGroupSeries": "Samodejno združi serije, ki so razdeljene po več mapah", - "OptionAscending": "Naraščajoče", - "OptionArtist": "Izvajalec", "OptionAllowUserToManageServer": "Dovoli temu uporabniku upravljanje strežnika", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Naslednja mesta predstavnosti bodo odstranjena iz vaše knjižnice:", "MessagePluginInstallDisclaimer": "Dodatki ustvarjeni s strani članov skupnosti so odličen način za izboljšanje vaše izkušnje z dodatnimi funkcijami in prednostmi. Preden namestite dodatke se zavedajte, da imajo lahko ti različne vplive na vaš strežnik, kot na primer počasnejše preiskovanje knjižnic, dodatna obdelava podatkov v ozadju in zmanjšana stabilnost sistema.", @@ -952,7 +932,6 @@ "OptionRandom": "Naključno", "OptionProtocolHttp": "HTTP", "OptionProfilePhoto": "Slika", - "OptionProfileAudio": "Zvok", "OptionPremiereDate": "Datum premiere", "OptionOnInterval": "V intervalu", "OptionNew": "Novo…", @@ -962,9 +941,7 @@ "OptionIsSD": "SD", "OptionIsHD": "HD", "OptionImdbRating": "IMDb ocena", - "OptionHomeVideos": "Slike", "OptionHideUser": "Skrij tega uporabnika z vstopne strani", - "OptionHasTrailer": "Napovednik", "OptionEveryday": "Vsak dan", "OptionDvd": "DVD", "OptionDownloadMenuImage": "Meni", @@ -977,8 +954,6 @@ "OptionAllowLinkSharing": "Dovoli deljenje na družbenih omrežjih", "OptionAllowContentDownloading": "Dovoli prenašanje in sinhronizacijo predstavnosti", "OptionAllUsers": "Vsi uporabniki", - "OptionAlbumArtist": "Izvajalec albuma", - "OptionAlbum": "Album", "OptionAdminUsers": "Skrbniki", "Option3D": "3D", "NumLocationsValue": "{0} mape", @@ -1227,11 +1202,6 @@ "OptionList": "Seznam", "OptionHasThemeSong": "Uvodna špica", "OptionDownloadPrimaryImage": "Primarno", - "OptionDownloadDiscImage": "Zgoščenka", - "OptionDownloadBoxImage": "Ovitek", - "OptionDownloadBannerImage": "Pasica", - "OptionDownloadBackImage": "Nazaj", - "OptionAuto": "Samodejno", "NextUp": "Sledi", "Next": "Naslednji", "MusicVideo": "Videospot", @@ -1263,7 +1233,6 @@ "OptionProfileVideoAudio": "Video zvok", "ThemeSongs": "Glavne pesmi", "TabStreaming": "Pretakanje", - "TabSettings": "Nastavitve", "TabServer": "Strežnik", "TabScheduledTasks": "Načrtovana opravila", "HeaderUninstallPlugin": "Odstrani dodatek", @@ -1321,7 +1290,6 @@ "OptionExtractChapterImage": "Omogoči ekstrakcijo slik poglavij", "OptionEstimateContentLength": "Oceni dolžino vsebine pri prekodiranju", "OptionEquals": "Je enako", - "OptionEnded": "Zaključeno", "OptionEnableM2tsModeHelp": "Omogoči m2ts način pri kodiranju v mpegts.", "OptionEnableM2tsMode": "Omogoči M2ts način", "OptionDisplayFolderViewHelp": "Prikaže mape poleg ostalih knjižnic predstavnosti. Uporabno za preprost ogled map.", diff --git a/src/strings/sr.json b/src/strings/sr.json index 90cbd0d9df..494b88401c 100644 --- a/src/strings/sr.json +++ b/src/strings/sr.json @@ -38,7 +38,6 @@ "ButtonManualLogin": "Ручни логин", "ButtonLibraryAccess": "Приступ библиотеци", "ButtonInfo": "Информације", - "ButtonGuide": "Водич", "ButtonGotIt": "У реду", "ButtonFullscreen": "Пун екран", "ButtonForgotPassword": "Заборављена шифра", @@ -119,22 +118,17 @@ "ButtonSignOut": "Одјавите се", "ButtonSignIn": "Пријавите се", "ButtonShutdown": "Искључи", - "ButtonSettings": "Подешавања", "ButtonSend": "Пошаљи", "ButtonSelectView": "Изаберите приказ", - "ButtonSelectServer": "Иѕаберите сервер", "ButtonSelectDirectory": "Изаберите Директоријум", "ButtonScanAllLibraries": "Скенирај све библиотеке", "ButtonRevoke": "Опозови", "ButtonResume": "Настави", - "ButtonRestart": "Покрени поново", - "ButtonResetPassword": "Ресетуј шифру", "ButtonResetEasyPassword": "Ресетујте једноставан ПИН код", "ButtonRename": "Преименуј", "ButtonRemove": "Уклони", "ButtonRefreshGuideData": "Освежи податке водича", "ButtonQuickStartGuide": "Кратки водич за почетак", - "ButtonProfile": "Профил", "ButtonPreviousTrack": "Претходна нумера", "ButtonEditOtherUserPreferences": "Уредите профил корисника, слику и личне поставке.", "BurnSubtitlesHelp": "Одређује да ли сервер треба да кодира титлове приликом транскодирања видео записа. Избегавање тога увелико ће побољшати перформансе. Изаберите Аутоматски да бисте снимили формате засноване на слици (VOBSUB, PGS, SUB, IDX) и одређене ASS или SSA титлове.", diff --git a/src/strings/sv.json b/src/strings/sv.json index c5f82a59d7..41c6862945 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -68,22 +68,17 @@ "ButtonParentalControl": "Föräldralås", "ButtonPause": "Paus", "ButtonPreviousTrack": "Föregående spår", - "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Snabbstartguide", "ButtonRefreshGuideData": "Uppdatera programguiden", "ButtonRemove": "Ta bort", "ButtonRename": "Ändra namn", "ButtonResetEasyPassword": "Återställ enkel pin-kod", - "ButtonResetPassword": "Återställ lösenord", - "ButtonRestart": "Starta om", "ButtonResume": "Återuppta", "ButtonRevoke": "Återkalla", "ButtonScanAllLibraries": "Scanna alla bibliotek", "ButtonSelectDirectory": "Välj mapp", - "ButtonSelectServer": "Välj server", "ButtonSelectView": "Välj vy", "ButtonSend": "Skicka", - "ButtonSettings": "Inställningar", "ButtonShutdown": "Stäng av", "ButtonSignIn": "Logga in", "ButtonSignOut": "Logga ut", @@ -350,7 +345,6 @@ "HeaderSeriesOptions": "Seriealternativ", "HeaderSeriesStatus": "Seriestatus", "HeaderServerSettings": "Serverinställningar", - "HeaderSettings": "Inställningar", "HeaderSetupLibrary": "Sätt upp dina mediabibliotek", "HeaderSortBy": "Sortera efter", "HeaderSortOrder": "Sortering", @@ -820,7 +814,6 @@ "OnlyForcedSubtitlesHelp": "Endast undertexter markerade som tvingande kommer att laddas.", "OnlyImageFormats": "Endast bildbaserade format (VOBSUB, PGS, SUB, etc)", "OptionAdminUsers": "Administratörer", - "OptionAlbumArtist": "Albumartist", "OptionAllUsers": "Alla användare", "OptionAllowAudioPlaybackTranscoding": "Tillåt ljuduppspelning som kräver omkodning", "OptionAllowBrowsingLiveTv": "Tillåt Live-TV åtkomst", @@ -837,18 +830,13 @@ "OptionAllowUserToManageServer": "Tillåt denna användare att administrera servern", "OptionAllowVideoPlaybackRemuxing": "Tillåt videouppspelning som kräver konvertering utan omkodning", "OptionAllowVideoPlaybackTranscoding": "Tillåt videouppspelning som kräver omkodning", - "OptionAscending": "Stigande", "OptionAutomaticallyGroupSeries": "Slå ihop serier automatiskt som ligger utspritt under flera kataloger", "OptionAutomaticallyGroupSeriesHelp": "Serier som är spridda över flera mappar i det här biblioteket kommer automatiskt att slås ihop till en enda serie.", - "OptionBlockBooks": "Böcker", "OptionBlockChannelContent": "Kanalinnehåll från Internet", "OptionBlockLiveTvChannels": "TV-kanaler", - "OptionBlockMovies": "Filmer", - "OptionBlockMusic": "Musik", "OptionBlockTvShows": "TV-serier", "OptionBluray": "Blu-ray", "OptionCommunityRating": "Allmänhetens betyg", - "OptionContinuing": "Pågående", "OptionCriticRating": "Kritikerbetyg", "OptionCustomUsers": "Anpassad", "OptionDaily": "Dagligen", @@ -856,17 +844,11 @@ "OptionDateAddedFileTime": "Använd datum då filen skapades", "OptionDateAddedImportTime": "Använd datum för inläsning i biblioteket", "OptionDatePlayed": "Senast visad", - "OptionDescending": "Sjunkande", "OptionDisableUser": "Spärra den här användaren", "OptionDisableUserHelp": "Spärrade användare tillåts ej kontakta servern. Eventuella pågående anslutningar avbryts omedelbart.", "OptionDislikes": "Ogillar", "OptionDisplayFolderView": "Visa en mappvy för att visa enkla mediamappar", "OptionDisplayFolderViewHelp": "Visa mappar jämsides med dina andra media bibliotek. Detta kan vara bra om du vill ha en enkel mapp visning.", - "OptionDownloadArtImage": "Grafik", - "OptionDownloadBackImage": "Baksida", - "OptionDownloadBannerImage": "Banderoll", - "OptionDownloadBoxImage": "Konvolut", - "OptionDownloadDiscImage": "Skiva", "OptionDownloadImagesInAdvance": "Hämta bilder i förväg", "OptionDownloadImagesInAdvanceHelp": "Som standard hämtas de flesta bilder endast när en Jellyfin-app begär det. Aktivera den här inställningen för att hämta alla bilder i förväg när nya filer importeras till biblioteket. Detta kan innebära längre bibliotekssökningar.", "OptionDownloadLogoImage": "Logotyp", @@ -883,21 +865,17 @@ "OptionEnableForAllTuners": "Aktivera för alla TV-mottagare", "OptionEnableM2tsMode": "Tillåt M2ts-läge", "OptionEnableM2tsModeHelp": "Aktivera m2ts-läge när omkodning sker till mpegts.", - "OptionEnded": "Avslutad", "OptionEquals": "Lika med", "OptionEstimateContentLength": "Upskattad innehållslängd vid omkodning", "OptionEveryday": "Varje dag", "OptionExternallyDownloaded": "Extern nerladdning", "OptionExtractChapterImage": "Aktivera extrahering av kapitelbilder", - "OptionFavorite": "Favoriter", "OptionHasSpecialFeatures": "Extramaterial", - "OptionHasSubtitles": "Undertexter", "OptionHasThemeSong": "Ledmotiv", "OptionHasThemeVideo": "Temavideo", "OptionHideUser": "Visa inte den här användaren på inloggningssidorna", "OptionHideUserFromLoginHelp": "Användbart för privata konton eller gömda administratörskonton. Användaren beöver logga in manuellt genom att skriva sitt användarnamn och lösenord.", "OptionHlsSegmentedSubtitles": "HLS-segmenterade undertexter", - "OptionHomeVideos": "Foton", "OptionIgnoreTranscodeByteRangeRequests": "Ignorera begäran om \"byte range\" vid omkodning", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Om aktiverad kommer begäran att uppfyllas, men \"byte range\"-rubriken ignoreras.", "OptionImdbRating": "Betyg på IMDB", @@ -913,9 +891,7 @@ "OptionPlainVideoItems": "Visa alla videor som objekt utan specifikt format", "OptionPlainVideoItemsHelp": "Om aktiverad representeras alla videor i DIDL som \"object.item.videoItem\" i stället för en mera specifik typ, t ex \"object.item.videoItem.movie\".", "OptionPlayCount": "Antal visningar", - "OptionPlayed": "Visad", "OptionPremiereDate": "Premiärdatum", - "OptionProfileAudio": "Ljud", "OptionProfilePhoto": "Foto", "OptionProfileVideoAudio": "Videoljudspår", "OptionProtocolHls": "Live-strömning via Http", @@ -925,14 +901,12 @@ "OptionRequirePerfectSubtitleMatch": "Ladda endast ner undertexter som matchar mina videofiler exakt", "OptionRequirePerfectSubtitleMatchHelp": "Att kräva en perfekt matchning filtrerar undertexter till att bara inkludera de som testats och verifierats med din exakta videofil. Stänger du av detta ökas chansen att undertexter laddas ned, men ökar chanserna att de är osynkade eller felaktiga.", "OptionResumable": "Kan återupptas", - "OptionRuntime": "Speltid", "OptionSaveMetadataAsHidden": "Spara metadata och bilder som dolda filer", "OptionSpecialEpisode": "Specialavsnitt", "OptionSubstring": "Delsträng", "OptionTrackName": "Spårnamn", "OptionTvdbRating": "TVDB-betyg", "OptionUnairedEpisode": "Ej sända avsnitt", - "OptionUnplayed": "Ej visad", "OptionWakeFromSleep": "Vakna ur energisparläge", "OptionWeekdays": "Veckodagar", "OptionWeekends": "Helger", @@ -1078,11 +1052,9 @@ "TabOther": "Övrigt", "TabParentalControl": "Föräldralås", "TabPlugins": "Tillägg", - "TabProfile": "Profil", "TabProfiles": "Profiler", "TabResponses": "Svar", "TabScheduledTasks": "Schemalagda aktiviteter", - "TabSettings": "Inställningar", "TabStreaming": "Strömning", "TabUpcoming": "Kommande", "Tags": "Etiketter", @@ -1168,7 +1140,6 @@ "ButtonTrailer": "Trailer", "ButtonStart": "Börja", "ButtonInfo": "Information", - "ButtonGuide": "Guide", "Blacklist": "Svartlista", "Auto": "Automatisk", "AuthProviderHelp": "Välj en autentiseringsleverantör som ska användas för att autentisera denna användarens lösenord.", @@ -1273,14 +1244,10 @@ "OptionList": "List", "OptionIsSD": "SD", "OptionIsHD": "HD", - "OptionHasTrailer": "Trailer", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionBlockTrailers": "Trailers", "OptionBanner": "Banner", - "OptionAuto": "Auto", - "OptionArtist": "Artist", "OptionForceRemoteSourceTranscoding": "Tvinga omkodning på fjärr media källor (som LiveTV)", - "OptionAlbum": "Album", "Option3D": "3D", "Normal": "Normal", "NoCreatedLibraries": "Ser ut som du inte har skapat några bibliotek än. {0}Vill du skapa ett nu?{1}", diff --git a/src/strings/ta.json b/src/strings/ta.json index 439231e2c7..09d9c1318f 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -118,22 +118,17 @@ "ButtonSignIn": "உள்நுழைக", "ButtonShutdown": "பணிநிறுத்தம்", "ButtonShuffle": "கலக்கு", - "ButtonSettings": "அமைப்புகள்", "ButtonSend": "அனுப்புக", "ButtonSelectView": "பார்வையைத் தேர்ந்தெடுக்கவும்", - "ButtonSelectServer": "சேவையகத்தைத் தேர்ந்தெடுக்கவும்", "ButtonSelectDirectory": "கோப்பகத்தைத் தேர்ந்தெடுக்கவும்", "ButtonScanAllLibraries": "அனைத்து நூலகங்களையும் ஸ்கேன் செய்யுங்கள்", "ButtonRevoke": "திரும்பப் பெறு", "ButtonResume": "மீண்டும் தொடர்", - "ButtonRestart": "மறுதொடக்கம்", - "ButtonResetPassword": "கடவுச்சொல்லை மீட்டமைக்க", "ButtonResetEasyPassword": "எளிதான முள் குறியீட்டை மீட்டமைக்கவும்", "ButtonRename": "மறுபெயரிடு", "ButtonRemove": "அகற்று", "ButtonRefreshGuideData": "வழிகாட்டி தரவைப் புதுப்பிக்கவும்", "ButtonQuickStartGuide": "விரைவு தொடக்க வழிகாட்டி", - "ButtonProfile": "சுயவிவரம்", "ButtonPreviousTrack": "முந்தைய பாடல்", "ButtonPause": "இடைநிறுத்தம்", "ButtonParentalControl": "பெற்றோர் கட்டுப்பாடு", @@ -146,7 +141,6 @@ "ButtonManualLogin": "கைமுறை புகுபதிகை", "ButtonLibraryAccess": "நூலக அனுமதி", "ButtonInfo": "தகவல்", - "ButtonGuide": "வழிகாட்டி", "Categories": "பிரிவுகள்", "CancelSeries": "தொடரை ரத்துசெய்", "CancelRecording": "பதிவை ரத்துசெய்", @@ -358,7 +352,6 @@ "HeaderConfirmProfileDeletion": "சுயவிவர நீக்குதலை உறுதிப்படுத்தவும்", "HeaderSortBy": "மூலம் வரிசைப்படுத்து", "HeaderSetupLibrary": "உங்கள் மீடியா நூலகங்களை அமைக்கவும்", - "HeaderSettings": "அமைப்புகள்", "HeaderServerSettings": "சேவையக அமைப்புகள்", "HeaderServerAddressSettings": "சேவையக முகவரி அமைப்புகள்", "HeaderSeriesStatus": "தொடர் நிலை", @@ -1015,7 +1008,6 @@ "OptionEveryday": "தினமும்", "OptionEstimateContentLength": "டிரான்ஸ்கோடிங் செய்யும் போது உள்ளடக்க நீளத்தை மதிப்பிடுங்கள்", "OptionEquals": "சமம்", - "OptionEnded": "முடிந்தது", "OptionEnableM2tsModeHelp": "Mpegts க்கு குறியாக்கம் செய்யும் போது m2ts பயன்முறையை இயக்கவும்.", "OptionEnableM2tsMode": "M2ts பயன்முறையை இயக்கு", "OptionEnableForAllTuners": "அனைத்து ட்யூனர் சாதனங்களுக்கும் இயக்கு", @@ -1032,17 +1024,11 @@ "OptionDownloadLogoImage": "லோகோ", "OptionDownloadImagesInAdvanceHelp": "இயல்பாக, பெரும்பாலான படங்கள் கிளையன்ட் கோரியபோது மட்டுமே பதிவிறக்கப்படும். புதிய மீடியா இறக்குமதி செய்யப்படுவதால், எல்லா படங்களையும் முன்கூட்டியே பதிவிறக்க இந்த விருப்பத்தை இயக்கவும். இது கணிசமாக நீண்ட நூலக ஸ்கேன்களை ஏற்படுத்தக்கூடும்.", "OptionDownloadImagesInAdvance": "படங்களை முன்கூட்டியே பதிவிறக்கவும்", - "OptionDownloadDiscImage": "வட்டு", - "OptionDownloadBoxImage": "பெட்டி", - "OptionDownloadBannerImage": "பதாகை", - "OptionDownloadBackImage": "பின்னால்", - "OptionDownloadArtImage": "கலை", "OptionDisplayFolderViewHelp": "உங்கள் பிற ஊடக நூலகங்களுடன் கோப்புறைகளைக் காண்பி. நீங்கள் ஒரு எளிய கோப்புறை காட்சியைப் பெற விரும்பினால் இது பயனுள்ளதாக இருக்கும்.", "OptionDisplayFolderView": "எளிய மீடியா கோப்புறைகளைக் காட்ட கோப்புறை காட்சியைக் காண்பி", "OptionDislikes": "வெறுப்புகள்", "OptionDisableUserHelp": "இந்த பயனரிடமிருந்து எந்த இணைப்பையும் சேவையகம் அனுமதிக்காது. தற்போதுள்ள இணைப்புகள் திடீரென நிறுத்தப்படும்.", "OptionDisableUser": "இந்த பயனரை முடக்கு", - "OptionDescending": "இறங்கு", "OptionDatePlayed": "உடன் தேதி", "OptionDateAddedImportTime": "நூலகத்தில் ஸ்கேன் செய்யப்பட்ட தேதியைப் பயன்படுத்தவும்", "OptionDateAddedFileTime": "கோப்பு உருவாக்கும் தேதியைப் பயன்படுத்தவும்", @@ -1050,23 +1036,16 @@ "OptionDaily": "தினசரி", "OptionCustomUsers": "தனிப்பயன்", "OptionCriticRating": "விமர்சன மதிப்பீடு", - "OptionContinuing": "தொடர்கிறது", "OptionCommunityRating": "சமூக மதிப்பீடு", "OptionCaptionInfoExSamsung": "CaptionInfoEx (சாம்சங்)", "OptionBluray": "ப்ளூ-ரே", "OptionBlockTvShows": "தொலைக்காட்சி நிகழ்ச்சிகள்", "OptionBlockTrailers": "டிரெய்லர்கள்", - "OptionBlockMusic": "இசை", - "OptionBlockMovies": "திரைப்படங்கள்", "OptionBlockLiveTvChannels": "நேரடி தொலைக்காட்சி சேனல்கள்", "OptionBlockChannelContent": "இணைய சேனல் உள்ளடக்கம்", - "OptionBlockBooks": "புத்தகங்கள்", "OptionBanner": "பதாகை", "OptionAutomaticallyGroupSeriesHelp": "இந்த நூலகத்திற்குள் பல கோப்புறைகளில் பரவியிருக்கும் தொடர்கள் தானாக ஒரு தொடராக ஒன்றிணைக்கப்படும்.", "OptionAutomaticallyGroupSeries": "பல கோப்புறைகளில் பரவியிருக்கும் தொடர்களை தானாக இணைக்கவும்", - "OptionAuto": "தானாக", - "OptionAscending": "ஏறுதல்", - "OptionArtist": "கலைஞர்", "OptionAllowVideoPlaybackTranscoding": "டிரான்ஸ்கோடிங் தேவைப்படும் வீடியோ பிளேபேக்கை அனுமதிக்கவும்", "OptionAllowVideoPlaybackRemuxing": "மறு குறியாக்கம் இல்லாமல் மாற்றம் தேவைப்படும் வீடியோ பிளேபேக்கை அனுமதிக்கவும்", "OptionAllowUserToManageServer": "சேவையகத்தை நிர்வகிக்க இந்த பயனரை அனுமதிக்கவும்", @@ -1084,8 +1063,6 @@ "OptionForceRemoteSourceTranscoding": "தொலைநிலை ஊடக மூலங்களின் டிரான்ஸ்கோடிங்கை கட்டாயப்படுத்தவும் (லைடிவி போன்றவை)", "OptionAllowAudioPlaybackTranscoding": "டிரான்ஸ்கோடிங் தேவைப்படும் ஆடியோ பிளேபேக்கை அனுமதிக்கவும்", "OptionAllUsers": "அனைத்து பயனாளர்கள்", - "OptionAlbumArtist": "ஆல்பம் கலைஞர்", - "OptionAlbum": "ஆல்பம்", "OptionAdminUsers": "நிர்வாகிகள்", "OnlyImageFormats": "பட வடிவங்கள் மட்டுமே (VOBSUB, PGS, SUB)", "Option3D": "3D", @@ -1148,7 +1125,6 @@ "OptionWeekends": "வார இறுதி நாட்கள்", "OptionWeekdays": "வார நாட்கள்", "OptionWakeFromSleep": "தூக்கத்திலிருந்து விழிப்பதற்கு", - "OptionUnplayed": "காட்டப்படாதது", "OptionUnairedEpisode": "ஒளிபரப்பப்படாத அத்தியாயங்கள்", "OptionTvdbRating": "TVDB மதிப்பீடு", "OptionTrackName": "ட்ராக் பெயர்", @@ -1158,7 +1134,6 @@ "OptionSpecialEpisode": "சிறப்பு", "OptionSaveMetadataAsHiddenHelp": "இதை மாற்றுவது முன்னோக்கிச் செல்லும் புதிய மெட்டாடேட்டாவுக்கு பொருந்தும். தற்போதுள்ள மெட்டாடேட்டா கோப்புகள் அடுத்த முறை சேவையகத்தால் சேமிக்கப்படும் போது அவை புதுப்பிக்கப்படும்.", "OptionSaveMetadataAsHidden": "மெட்டாடேட்டா மற்றும் படங்களை மறைக்கப்பட்ட கோப்புகளாக சேமிக்கவும்", - "OptionRuntime": "இயக்க நேரம்", "OptionResumable": "மீண்டும் தொடங்கக்கூடியது", "OptionResElement": "res கூறு", "OptionRequirePerfectSubtitleMatchHelp": "சரியான பொருத்தம் தேவைப்பட்டால், உங்கள் சரியான வீடியோ கோப்புடன் சோதிக்கப்பட்ட மற்றும் சரிபார்க்கப்பட்டவற்றை மட்டுமே சேர்க்க வசன வரிகள் வடிகட்டப்படும். இதைத் தேர்வுசெய்வது வசன வரிகள் பதிவிறக்கம் செய்யப்படுவதற்கான வாய்ப்பை அதிகரிக்கும், ஆனால் தவறான அல்லது தவறான வசன உரைக்கான வாய்ப்புகளை அதிகரிக்கும்.", @@ -1173,11 +1148,9 @@ "OptionProfileVideoAudio": "வீடியோ ஆடியோ", "OptionProfileVideo": "காணொளி", "OptionProfilePhoto": "புகைப்படம்", - "OptionProfileAudio": "ஆடியோ", "OptionPremiereDate": "பிரீமியர் தேதி", "OptionPosterCard": "சுவரொட்டி அட்டை", "OptionPoster": "சுவரொட்டி", - "OptionPlayed": "வாசிக்கப்பட்டது", "OptionPlayCount": "ப்ளே கவுண்ட்", "OptionPlainVideoItemsHelp": "எல்லா வீடியோக்களும் டிஐடிஎல்லில் \"object.item.videoItem\" என குறிப்பிடப்படுகின்றன, அதாவது \"object.item.videoItem.movie\" போன்ற ஒரு குறிப்பிட்ட வகைக்கு பதிலாக.", "OptionPlainVideoItems": "எல்லா வீடியோக்களையும் எளிய வீடியோ உருப்படிகளாகக் காண்பி", @@ -1199,16 +1172,12 @@ "OptionImdbRating": "IMDb மதிப்பீடு", "OptionIgnoreTranscodeByteRangeRequestsHelp": "இந்த கோரிக்கைகள் மதிக்கப்படும், ஆனால் பைட் வரம்பு தலைப்பை புறக்கணிக்கும்.", "OptionIgnoreTranscodeByteRangeRequests": "டிரான்ஸ்கோட் பைட் வரம்பு கோரிக்கைகளை புறக்கணிக்கவும்", - "OptionHomeVideos": "புகைப்படங்கள்", "OptionHlsSegmentedSubtitles": "HLS பிரிக்கப்பட்ட வசன வரிகள்", "OptionHideUserFromLoginHelp": "தனிப்பட்ட அல்லது மறைக்கப்பட்ட நிர்வாகி கணக்குகளுக்கு பயனுள்ளதாக இருக்கும். பயனர் தங்கள் பயனர்பெயர் மற்றும் கடவுச்சொல்லை உள்ளிட்டு கைமுறையாக உள்நுழைய வேண்டும்.", "OptionHideUser": "உள்நுழைவு திரைகளிலிருந்து இந்த பயனரை மறைக்கவும்", - "OptionHasTrailer": "டிரெய்லர்", "OptionHasThemeVideo": "தீம் வீடியோ", "OptionHasThemeSong": "தீம் பாடல்", - "OptionHasSubtitles": "வசன வரிகள்", "OptionHasSpecialFeatures": "சிறப்பு அம்சங்கள்", - "OptionFavorite": "பிடித்தவை", "OptionExtractChapterImage": "அத்தியாயம் படத்தை பிரித்தெடுப்பதை இயக்கு", "OptionExternallyDownloaded": "வெளிப்புற பதிவிறக்க", "PlaybackData": "பின்னணி தரவு", @@ -1398,12 +1367,10 @@ "Tags": "குறிச்சொற்கள்", "TabUpcoming": "வரவிருக்கும்", "TabStreaming": "ஸ்ட்ரீமிங்", - "TabSettings": "அமைப்புகள்", "TabServer": "சேவையகம்", "TabScheduledTasks": "திட்டமிடப்பட்ட பணிகள்", "TabResponses": "பதில்கள்", "TabProfiles": "சுயவிவரங்கள்", - "TabProfile": "சுயவிவரம்", "TabPlugins": "செருகுநிரல்கள்", "TabParentalControl": "பெற்றோர் கட்டுப்பாடு", "TabOther": "மற்றவை", diff --git a/src/strings/tr.json b/src/strings/tr.json index 053da36a5e..05f9b1ceb9 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -16,11 +16,8 @@ "ButtonQuickStartGuide": "Hızlı başlangıç rehberi", "ButtonRefreshGuideData": "Kılavuzu Yinele", "ButtonRemove": "Sil", - "ButtonResetPassword": "Şifre Sıfırla", - "ButtonRestart": "Tekrar Başlat", "ButtonSelectDirectory": "Dosyayı Seç", "ButtonSend": "Gönder", - "ButtonSettings": "Ayarlar", "ButtonSignIn": "Giriş Yapın", "ButtonSignOut": "Çıkış Yap", "ButtonStop": "Durdur", @@ -114,52 +111,34 @@ "MessagePleaseEnsureInternetMetadata": "Lütfen internetten metadata indirmenin aktif olduğundan emin olun.", "Monday": "Pazartesi", "NewCollection": "Yeni Koleksiyon", - "OptionAlbum": "Albüm", - "OptionAlbumArtist": "Albüm Sanatçısı", "OptionAllowUserToManageServer": "Bu kullanıcıya sunucuyu yönetme izni ver", - "OptionArtist": "Sanatçı", - "OptionAscending": "Yükselen", - "OptionContinuing": "Topluluk", "OptionCriticRating": "Yorumcu Puanı", "OptionDaily": "Günlük", "OptionDateAdded": "Eklenme Tarihi", "OptionDatePlayed": "Oynatma Tarihi", - "OptionDescending": "Düşen", "OptionDisableUser": "Kullanıcı Devre Dışı Bırak", "OptionDislikes": "Beğenilmeyenler", - "OptionDownloadArtImage": "Galeri", - "OptionDownloadBackImage": "Geri", - "OptionDownloadBoxImage": "Kutu", - "OptionDownloadDiscImage": "Disk", "OptionDownloadMenuImage": "Menü", "OptionDownloadPrimaryImage": "Birincil", "OptionDownloadThumbImage": "Küçük Resim", "OptionEnableAccessFromAllDevices": "Bütün cihazlardan erişime izin ver", "OptionEnableAccessToAllChannels": "Bütün kanallara erişim izni ver", "OptionEnableAccessToAllLibraries": "Bütün kütüphanelere erişim izni ver", - "OptionEnded": "Bitmiş", - "OptionFavorite": "Favoriler", - "OptionHasSubtitles": "Altyazı", "OptionHasThemeSong": "Tema Şarkısı", "OptionHasThemeVideo": "Tema Videosu", - "OptionHasTrailer": "Tanıtım Video", "OptionHideUser": "Bu kullanıcıyı giriş ekranında gösterme", "OptionImdbRating": "İMDb Reyting", "OptionLikes": "Beğenilenler", "OptionNameSort": "İsim", "OptionPlayCount": "Oynatma sayacı", - "OptionPlayed": "Çalındı", - "OptionProfileAudio": "Ses", "OptionProfilePhoto": "Fotoğraf", "OptionProfileVideo": "Vidyo", "OptionProfileVideoAudio": "Video Sesi", "OptionReleaseDate": "Yayınlanma Tarihi", "OptionResumable": "Başlatılabilir", - "OptionRuntime": "Süresi", "OptionSpecialEpisode": "Özel", "OptionTrackName": "Parça İsmi", "OptionTvdbRating": "TVDB Puanı", - "OptionUnplayed": "Çalınmayan", "OptionWeekly": "Haftalık", "ParentalRating": "Ebeveyn değeri", "PasswordMatchError": "Parola ve Sifre Eslesmelidir.", @@ -182,10 +161,8 @@ "TabMyPlugins": "Eklentilerim", "TabNetworks": "Ağlar", "TabNotifications": "Bildirimler", - "TabProfile": "Profil", "TabProfiles": "Profiller", "TabServer": "Sunucu", - "TabSettings": "Ayarlar", "TabUpcoming": "Gelecek", "TellUsAboutYourself": "Kendinizden bahsedin", "ThisWizardWillGuideYou": "Bu sihirbaz kurulum işlemi boyunca size yardımcı olacaktır. Başlamak için, tercih ettiğiniz dili seçiniz.", @@ -236,7 +213,6 @@ "ColorSpace": "Renk uzayı", "ColorTransfer": "Renk transferi", "ButtonPreviousTrack": "Önceki parça", - "ButtonProfile": "Profil", "ButtonRename": "Yeniden Adlandır", "ButtonResume": "Devam Et", "ButtonRevoke": "Geri al", @@ -269,7 +245,6 @@ "EnableBackdropsHelp": "Kütüphaneye göz atarken arka plandaki bazı sayfaların arka planında görüntüleyin.", "AllowMediaConversionHelp": "Dönüştürme özelliğine erişim izni verme veya reddetme.", "AllowOnTheFlySubtitleExtraction": "Anında altyazı çıkartmaya izin ver", - "ButtonSelectServer": "Sunucu Seç", "Disc": "Disk", "ButtonAddImage": "Resim ekle", "ButtonAddScheduledTaskTrigger": "Tetikleyici ekle", @@ -283,7 +258,6 @@ "ButtonNextTrack": "Sonraki parça", "ButtonParentalControl": "Ebeveyn Kontrolü", "ButtonArrowLeft": "Sol", - "ButtonGuide": "Rehber", "ButtonLibraryAccess": "Kütüphane erişimi", "ButtonScanAllLibraries": "Tüm Kütüphaneleri Tara", "ButtonSelectView": "Görünüm seç", @@ -594,7 +568,6 @@ "HeaderSpecialEpisodeInfo": "Özel Bölüm Bilgisi", "HeaderSortOrder": "Sıralama Düzeni", "HeaderSortBy": "Sırala", - "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.", "HeaderResponseProfileHelp": "Yanıt profilleri, belirli media türlerini oynatırken aygıta gönderilen bilgileri özelleştirmek için bir yol sağlar.", diff --git a/src/strings/uk.json b/src/strings/uk.json index 893311884c..22a1e986c0 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -4,7 +4,6 @@ "ButtonAddUser": "Додати користувача", "ButtonCancel": "Скасувати", "ButtonRename": "Перейменувати", - "ButtonResetPassword": "Скинути пароль", "ButtonSignOut": "Вийти", "DeathDateValue": "Помер: {0}", "Dislike": "Не подобається", @@ -19,7 +18,6 @@ "HeaderLatestMovies": "Нещодавні фільми", "HeaderLatestMusic": "Остання музика", "HeaderSeasons": "Сезони", - "HeaderSettings": "Налаштування", "HeaderTracks": "Доріжки", "HeaderUsers": "Користувачі", "LabelBirthDate": "Дата народження:", @@ -42,13 +40,8 @@ "MediaInfoProfile": "Профіль", "MediaInfoSize": "Розмір", "MessageContactAdminToResetPassword": "Будь ласка, зверніться до адміністратора для скидання вашого паролю.", - "OptionAlbum": "Альбом", - "OptionArtist": "Актор", - "OptionBlockMovies": "Фільми", "OptionBlockTrailers": "Трейлери", "OptionDislikes": "Не подобається", - "OptionFavorite": "Улюблене", - "OptionHasSubtitles": "Субтитри", "OptionLikes": "Подобається", "OptionNameSort": "Ім’я", "ParentalRating": "Parental Rating", @@ -57,7 +50,6 @@ "TabNetworks": "Мережі", "TabNotifications": "Повідомлення", "TabPlugins": "Додатки", - "TabProfile": "Профіль", "TabProfiles": "Профілі", "ValueAlbumCount": "{0} альбомів", "ValueDiscNumber": "Диск {0}", @@ -182,20 +174,16 @@ "ButtonStart": "Почати", "ButtonSignIn": "Вхід", "ButtonShutdown": "Завершити роботу", - "ButtonSettings": "Налаштування", "ButtonSend": "Надіслати", "ButtonSelectView": "Вибрати вигляд", - "ButtonSelectServer": "Вибрати сервер", "ButtonSelectDirectory": "Вибрати каталог", "ButtonScanAllLibraries": "Сканувати всі медіатеки", "ButtonRevoke": "Відмінити", "ButtonResume": "Відновити", - "ButtonRestart": "Перезапустити", "ButtonResetEasyPassword": "Скинути простий пін-код", "ButtonRemove": "Видалити", "ButtonRefreshGuideData": "Оновити дані телегіда", "ButtonQuickStartGuide": "Посібник по швидкому запуску", - "ButtonProfile": "Профіль", "ButtonPreviousTrack": "Попередня доріжка", "ButtonPause": "Пауза", "ButtonParentalControl": "Батьківський контроль", @@ -207,7 +195,6 @@ "ButtonManualLogin": "Ввести ім’я користувача вручну", "ButtonLibraryAccess": "Доступ до медіатеки", "ButtonInfo": "Інформація", - "ButtonGuide": "Телегід", "ButtonGotIt": "Зрозуміло", "ButtonFullscreen": "Повноекранний режим", "ButtonForgotPassword": "Забув(ла) пароль", diff --git a/src/strings/vi.json b/src/strings/vi.json index 68718d4c5d..233bb5f0e2 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -5,7 +5,6 @@ "ButtonAddUser": "Thêm người dùng", "ButtonCancel": "Thoát", "ButtonRemove": "Gỡ bỏ", - "ButtonResetPassword": "Reset mật khẩu", "ButtonSelectDirectory": "Lựa chọn trực tiếp", "ButtonSignOut": "Sign out", "Delete": "Xóa", @@ -43,20 +42,14 @@ "MaxParentalRatingHelp": "Nội dung với đánh giá cao hơn sẽ được ẩn đi từ người dùng này.", "MessageNothingHere": "Không có gì ở đây.", "Monday": "Thứ Hai", - "OptionAlbumArtist": "Album nghệ sỹ", "OptionAllowUserToManageServer": "Cho phép người dùng này quản lý máy chủ", - "OptionArtist": "Nghệ sỹ", "OptionCommunityRating": "Đánh giá của cộng đồng", "OptionDateAdded": "Ngày thêm", "OptionDatePlayed": "Ngày phát", "OptionDisableUser": "Vô hiệu hóa người dùng này", "OptionDislikes": "Không thích", - "OptionDownloadBackImage": "Trở lại", - "OptionDownloadDiscImage": "Đĩa", "OptionDvd": "DVD", - "OptionFavorite": "Yêu thích", "OptionHasSpecialFeatures": "Tính năng đặc biệt", - "OptionHasSubtitles": "Phụ đề", "OptionHasThemeSong": "Hình nền bài hát", "OptionHasThemeVideo": "Hình nền Video", "OptionHideUser": "Ẩn người dùng này từ màn hình đăng nhập", @@ -66,7 +59,6 @@ "OptionLikes": "Thích", "OptionNameSort": "Tên", "OptionPlayCount": "Số lần phát", - "OptionRuntime": "Thời gian phá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 .", @@ -81,7 +73,6 @@ "TabLatest": "Mới nhất", "TabMyPlugins": "Các plugin của tôi", "TabNetworks": "Các mạng", - "TabProfile": "Hồ sơ", "TabProfiles": "Hồ sơ", "TabServer": "Máy chủ", "TabUpcoming": "Sắp diễn ra", @@ -94,12 +85,10 @@ "Actor": "Diễn viên", "ButtonRevoke": "Thu hồi", "ButtonResume": "Tiếp tục", - "ButtonRestart": "Khởi động lại", "ButtonResetEasyPassword": "Đặt lại mã pin nhanh", "ButtonRename": "Đổi tên", "ButtonRefreshGuideData": "Làm mới dữ liệu hướng dẫn", "ButtonQuickStartGuide": "Hướng dẫn nhanh", - "ButtonProfile": "Hồ sơ", "ButtonPreviousTrack": "Bài trước", "ButtonPause": "Tạm dừng", "ButtonParentalControl": "Kiểm soát của cha mẹ", @@ -110,7 +99,6 @@ "ButtonManualLogin": "Đăng nhập thủ công", "ButtonLibraryAccess": "Truy cập thư viện", "ButtonInfo": "Thông tin", - "ButtonGuide": "Hướng dẫn", "ButtonGotIt": "Hiểu rồi", "ButtonFullscreen": "Toàn màn hình", "ButtonForgotPassword": "Quên mật khẩu", @@ -172,7 +160,6 @@ "Absolute": "Tuyệt đối", "ButtonSend": "Gửi", "ButtonSelectView": "Chọn chế độ xem", - "ButtonSelectServer": "Chọn máy chủ", "ButtonScanAllLibraries": "Quét tất cả các thư viện", "ButtonOk": "Đồng Ý", "Categories": "Phân loại", @@ -186,7 +173,6 @@ "ButtonStart": "Bắt đầu", "ButtonSignIn": "Đăng nhập", "ButtonShutdown": "Tắt", - "ButtonSettings": "Cài đặt", "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}", @@ -457,7 +443,6 @@ "HeaderDefaultRecordingSettings": "Thiết Lập Ghi Âm/Ghi Hình Mặc Định", "HeaderRecordingOptions": "Tuỳ Chọn Ghi Âm/Ghi Hình", "HeaderProfileServerSettingsHelp": "Những thông tin này về máy chủ Jellyfin sẽ hiển thị trên các thiết bị phát được kết nối.", - "HeaderSettings": "Cài Đặt", "HeaderServerSettings": "Cài Đặt Máy Chủ", "HeaderSeriesStatus": "Trạng Thái Series", "HeaderSeriesOptions": "Tuỳ Chọn Series", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index a44b9ab992..74c0745822 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -60,7 +60,6 @@ "ButtonForgotPassword": "忘记密码", "ButtonFullscreen": "全屏", "ButtonGotIt": "知道了", - "ButtonGuide": "指南", "ButtonInfo": "详情", "ButtonLibraryAccess": "媒体库访问", "ButtonManualLogin": "手动登录", @@ -72,22 +71,17 @@ "ButtonParentalControl": "家长控制", "ButtonPause": "暂停", "ButtonPreviousTrack": "上一音轨", - "ButtonProfile": "配置", "ButtonQuickStartGuide": "快速入门指南", "ButtonRefreshGuideData": "刷新指南数据", "ButtonRemove": "移除", "ButtonRename": "重命名", "ButtonResetEasyPassword": "复位简易PIN码", - "ButtonResetPassword": "重置密码", - "ButtonRestart": "重启", "ButtonResume": "恢复播放", "ButtonRevoke": "撤销", "ButtonScanAllLibraries": "扫描所有媒体库", "ButtonSelectDirectory": "选择目录", - "ButtonSelectServer": "选择服务器", "ButtonSelectView": "选择视图", "ButtonSend": "发送", - "ButtonSettings": "设置", "ButtonShutdown": "关机", "ButtonSignIn": "登录", "ButtonSignOut": "退出", @@ -352,7 +346,6 @@ "HeaderSendMessage": "发送消息", "HeaderSeriesOptions": "系列选项", "HeaderServerSettings": "服务器设置", - "HeaderSettings": "设置", "HeaderSetupLibrary": "设置你的媒体库", "HeaderSortBy": "排序方式", "HeaderSortOrder": "排序顺序", @@ -843,8 +836,6 @@ "OnlyForcedSubtitlesHelp": "只有被标记为“强制”的字幕会被加载。", "OnlyImageFormats": "仅图像格式(VOBSUB, PGS, SUB 等)", "OptionAdminUsers": "管理员", - "OptionAlbum": "专辑", - "OptionAlbumArtist": "专辑艺术家", "OptionAllUsers": "所有用户", "OptionAllowAudioPlaybackTranscoding": "允许播放需要转码的音频", "OptionAllowBrowsingLiveTv": "允许访问电视直播", @@ -861,22 +852,15 @@ "OptionAllowUserToManageServer": "运行此用户管理服务器", "OptionAllowVideoPlaybackRemuxing": "允许播放需转换但无需重新编码的视频", "OptionAllowVideoPlaybackTranscoding": "允许播放需要转码的视频", - "OptionArtist": "艺术家", - "OptionAscending": "升序", - "OptionAuto": "自动", "OptionAutomaticallyGroupSeries": "自动合并分布在不同文件夹的电视剧", "OptionAutomaticallyGroupSeriesHelp": "在这个媒体库的多个文件夹中的同一部电视剧将会自动整合成一部电视剧。", - "OptionBlockBooks": "书籍", "OptionBlockChannelContent": "互联网频道内容", "OptionBlockLiveTvChannels": "电视直播频道", - "OptionBlockMovies": "电影", - "OptionBlockMusic": "音乐", "OptionBlockTrailers": "预告片", "OptionBlockTvShows": "电视节目", "OptionBluray": "蓝光", "OptionCaptionInfoExSamsung": "CaptionInfoEx(三星)", "OptionCommunityRating": "公众评分", - "OptionContinuing": "继续", "OptionCriticRating": "影评人评分", "OptionCustomUsers": "自定义", "OptionDaily": "每日", @@ -884,17 +868,11 @@ "OptionDateAddedFileTime": "使用文件创建日期", "OptionDateAddedImportTime": "使用加入媒体库时的扫描日期", "OptionDatePlayed": "播放日期", - "OptionDescending": "降序", "OptionDisableUser": "禁用此用户", "OptionDisableUserHelp": "服务器将不允许来自该用户的任何连接。现有的连接将立即被终止。", "OptionDislikes": "不喜欢", "OptionDisplayFolderView": "显示一个“文件夹”类别用于按文件夹分类浏览你的媒体文件夹", "OptionDisplayFolderViewHelp": "在你的媒体库列表中显示文件夹。如果你有按文件夹分类进行浏览的需求,这会非常有用。", - "OptionDownloadArtImage": "艺术图", - "OptionDownloadBackImage": "包装背面", - "OptionDownloadBannerImage": "横幅", - "OptionDownloadBoxImage": "包装", - "OptionDownloadDiscImage": "光盘", "OptionDownloadImagesInAdvance": "提前下载图片", "OptionDownloadImagesInAdvanceHelp": "默认大多数图片只在客户端请求时下载。开启此选项将在新媒体导入时预先下载所有图片。这可能大大延长媒体库扫描时间。", "OptionDownloadMenuImage": "菜单", @@ -910,22 +888,17 @@ "OptionEnableForAllTuners": "给所有调谐器开启", "OptionEnableM2tsMode": "启用M2ts模式", "OptionEnableM2tsModeHelp": "当编码为MPEGTS启用M2TS模式。", - "OptionEnded": "完结", "OptionEquals": "等于", "OptionEstimateContentLength": "转码时,估计内容长度", "OptionEveryday": "每天", "OptionExternallyDownloaded": "外部下载", "OptionExtractChapterImage": "开启剧集图片提取", - "OptionFavorite": "我的最爱", "OptionHasSpecialFeatures": "特殊功能", - "OptionHasSubtitles": "字幕", "OptionHasThemeSong": "主题曲", "OptionHasThemeVideo": "主题视频", - "OptionHasTrailer": "预告片", "OptionHideUser": "从登陆页面隐藏此用户", "OptionHideUserFromLoginHelp": "这个选项对于私人账户或是希望隐藏管理员账户的人是有帮助的。用户在登录时需要手动输入他们的用户名和密码。", "OptionHlsSegmentedSubtitles": "HLS分段字幕", - "OptionHomeVideos": "照片", "OptionIgnoreTranscodeByteRangeRequests": "忽略转码字节范围请求", "OptionIgnoreTranscodeByteRangeRequestsHelp": "这些请求会被兑现,但会忽略的字节范围标头。", "OptionImdbRating": "IMDb 评分", @@ -944,9 +917,7 @@ "OptionPlainVideoItems": "显示所有视频为一般视频项目", "OptionPlainVideoItemsHelp": "所有视频在DIDL中显示为 \"object.item.videoItem\" ,而不是一个更具体的类型,如 \"object.item.videoItem.movie\" 。", "OptionPlayCount": "播放次数", - "OptionPlayed": "已播放", "OptionPremiereDate": "首映日期", - "OptionProfileAudio": "音频", "OptionProfilePhoto": "图片", "OptionProfileVideo": "视频", "OptionProfileVideoAudio": "视频音频", @@ -960,7 +931,6 @@ "OptionRequirePerfectSubtitleMatchHelp": "需要一个完美的匹配将过滤字幕, 只包括那些已经测试和验证与您的确切视频文件。取消选中此项将增加字幕下载的可能性, 但会增加不合时宜或不正确字幕文本的几率。", "OptionResElement": "res 元素", "OptionResumable": "可恢复播放", - "OptionRuntime": "播放时长", "OptionSaveMetadataAsHidden": "保存媒体资料和图像为隐藏文件", "OptionSaveMetadataAsHiddenHelp": "更改此项将应用于以后保存的元数据。现有元数据文件将在下一次服务器保存它们时被更新。", "OptionSpecialEpisode": "特集", @@ -968,7 +938,6 @@ "OptionTrackName": "曲目名称", "OptionTvdbRating": "TVDB 评分", "OptionUnairedEpisode": "尚未发布的剧集", - "OptionUnplayed": "未播放", "OptionWakeFromSleep": "从睡眠中唤醒", "OptionWeekdays": "工作日", "OptionWeekends": "周末", @@ -1106,12 +1075,10 @@ "TabOther": "其他", "TabParentalControl": "家长控制", "TabPlugins": "插件", - "TabProfile": "个人配置", "TabProfiles": "配置", "TabResponses": "响应", "TabScheduledTasks": "计划任务", "TabServer": "服务器", - "TabSettings": "设置", "TabStreaming": "流媒体传输", "TabUpcoming": "即将发布", "Tags": "标签", diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index 21ac5f304c..4a4cb72ef8 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -9,8 +9,6 @@ "ButtonRefreshGuideData": "重新整理指南資料", "ButtonRemove": "清除", "ButtonRename": "重新命名", - "ButtonResetPassword": "重設密碼", - "ButtonRestart": "重新啟動", "ButtonSelectDirectory": "選擇目錄", "ButtonSignIn": "登入", "ButtonSignOut": "登出", @@ -158,8 +156,6 @@ "NewCollectionNameExample": "例如:星球大戰收藏庫", "MessageNoNextUpItems": "未有發現。開始欣賞您的節目!", "OptionAdminUsers": "管理員", - "OptionAlbum": "唱片", - "OptionAlbumArtist": "唱片歌手", "OptionAllUsers": "所有用戶", "OptionAllowBrowsingLiveTv": "允許訪問電視直播", "OptionAllowLinkSharing": "允許社交媒體分享", @@ -169,27 +165,16 @@ "OptionAllowRemoteSharedDevices": "允許遠程控制共享裝置", "OptionAllowRemoteSharedDevicesHelp": "DLNA 裝置會被認為是共享,直到用戶進行控制。", "OptionAllowUserToManageServer": "允許此用戶管理伺服器", - "OptionArtist": "歌手", - "OptionAscending": "遞升", - "OptionAuto": "自動", - "OptionBlockBooks": "書籍", "OptionBluray": "藍光", "OptionCommunityRating": "討論區評分", - "OptionContinuing": "繼續", "OptionCriticRating": "評論家評分", "OptionCustomUsers": "自訂", "OptionDaily": "每日", "OptionDateAdded": "已添加日期", "OptionDatePlayed": "已播放日期", - "OptionDescending": "遞降", "OptionDisableUser": "禁用此用戶", "OptionDisableUserHelp": "如果禁用此伺服器,將不允許此用戶的任何連接。現有的連接將被即時終止。", "OptionDislikes": "負評", - "OptionDownloadArtImage": "圖像", - "OptionDownloadBackImage": "媒體背面", - "OptionDownloadBannerImage": "橫幅", - "OptionDownloadBoxImage": "媒體裝飾", - "OptionDownloadDiscImage": "光碟", "OptionDownloadLogoImage": "標誌", "OptionDownloadMenuImage": "菜單", "OptionDownloadPrimaryImage": "主要圖像", @@ -199,13 +184,9 @@ "OptionEnableAccessFromAllDevices": "啟用所有裝置通行證", "OptionEnableAccessToAllChannels": "允許所有頻道通行", "OptionEnableAccessToAllLibraries": "允許所有媒體庫通行", - "OptionEnded": "完成", - "OptionFavorite": "我的最愛", "OptionHasSpecialFeatures": "特色", - "OptionHasSubtitles": "字幕", "OptionHasThemeSong": "主題曲", "OptionHasThemeVideo": "主題影片", - "OptionHasTrailer": "預告片", "OptionHideUser": "由登錄頁面隱藏此用戶", "OptionHideUserFromLoginHelp": "有效私人或隱藏的管理員帳戶。用戶需手動輸入用戶名和密碼登錄。", "OptionHlsSegmentedSubtitles": "Hls 字幕分段", @@ -218,18 +199,14 @@ "OptionOnInterval": "每個時段", "OptionParentalRating": "家長評級", "OptionPlayCount": "播放次數", - "OptionPlayed": "已播放", "OptionPremiereDate": "首映日期", - "OptionProfileAudio": "音訊", "OptionProfileVideo": "影片", "OptionReleaseDate": "發佈日期", "OptionResumable": "能夠恢復", - "OptionRuntime": "運行時間", "OptionSpecialEpisode": "特集", "OptionTrackName": "曲目名稱", "OptionTvdbRating": "Tvdb 評分", "OptionUnairedEpisode": "尚未播放的劇集", - "OptionUnplayed": "未播放", "OptionWakeFromSleep": "從休眠中恢復", "OptionWeekly": "每週", "ParentalRating": "Parental Rating", @@ -252,10 +229,8 @@ "TabNetworks": "網絡", "TabNotifications": "通知", "TabOther": "其它", - "TabProfile": "簡介", "TabProfiles": "簡介", "TabServer": "伺服器", - "TabSettings": "設定", "TabUpcoming": "即將發佈", "TellUsAboutYourself": "介紹一下自己", "ThisWizardWillGuideYou": "此教學協助您完成安裝過程。首先,請選擇您的語言。", @@ -376,21 +351,17 @@ "ButtonStop": "停止", "ButtonStart": "開始", "ButtonShutdown": "關閉", - "ButtonSettings": "設定", "ButtonSend": "傳送", - "ButtonSelectServer": "選擇伺服器", "ButtonScanAllLibraries": "掃瞄所有媒體櫃", "ButtonRevoke": "撤銷", "ButtonResume": "恢復", "ButtonResetEasyPassword": "重設PIN碼", - "ButtonProfile": "檔案", "ButtonPause": "暫停", "ButtonParentalControl": "家長控制", "ButtonOpen": "開啟", "ButtonNetwork": "網絡", "ButtonMore": "更多", "ButtonInfo": "資訊", - "ButtonGuide": "教學", "ButtonGotIt": "了解", "ButtonFullscreen": "全螢幕", "ButtonForgotPassword": "忘記密碼", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 52d960ba5c..7b3a03a9ff 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -9,14 +9,11 @@ "ButtonCancel": "取消", "ButtonForgotPassword": "忘記密碼", "ButtonGotIt": "我知道了", - "ButtonGuide": "節目表", "ButtonOk": "確定", "ButtonQuickStartGuide": "快速入門指南", "ButtonRefreshGuideData": "更新電視節目表", "ButtonRemove": "清除", - "ButtonResetPassword": "重設密碼", "ButtonSelectDirectory": "選擇目錄", - "ButtonSelectServer": "選擇伺服器", "ButtonSignIn": "登入", "ButtonSignOut": "登出", "ConfirmDeleteItem": "刪除此項目時,也會一併從檔案系統及媒體櫃中刪除。確定要刪除嗎?", @@ -134,37 +131,24 @@ "NewCollectionNameExample": "例子:星際大戰合集", "MessageNoNextUpItems": "沒有找到。開始看你的節目!", "NoSubtitleSearchResultsFound": "無結果。", - "OptionAlbum": "專輯", - "OptionAlbumArtist": "專輯歌手", "OptionAllowBrowsingLiveTv": "允許使用電視", "OptionAllowManageLiveTv": "允許管理電視節目錄影", "OptionAllowUserToManageServer": "允許該使用者管理伺服器", - "OptionArtist": "歌手", - "OptionAscending": "升序", "OptionBlockLiveTvChannels": "電視頻道", "OptionBluray": "藍光", "OptionCommunityRating": "社區評分", - "OptionContinuing": "持續", "OptionCriticRating": "影評人評價", "OptionDaily": "每日", "OptionDateAdded": "新增日期", "OptionDatePlayed": "播放日期", - "OptionDescending": "降序", "OptionDisableUser": "停用該使用者", "OptionDisableUserHelp": "被停用的使用者將被伺服器封鎖,現有的連線也將中斷。", "OptionDislikes": "不喜歡", - "OptionDownloadArtImage": "圖像", - "OptionDownloadBackImage": "媒體包裝背面", - "OptionDownloadBoxImage": "媒體包裝", - "OptionDownloadDiscImage": "光碟", "OptionDownloadLogoImage": "標誌", "OptionDownloadMenuImage": "菜單", "OptionDownloadPrimaryImage": "主要圖", "OptionDownloadThumbImage": "縮圖", "OptionDvd": "DVD", - "OptionEnded": "完結", - "OptionFavorite": "我的最愛", - "OptionHasSubtitles": "字幕", "OptionHasThemeSong": "主題曲", "OptionHasThemeVideo": "主題影片", "OptionHideUser": "在登入頁面隱藏此使用者", @@ -178,15 +162,12 @@ "OptionOnInterval": "每時段", "OptionParentalRating": "家長評級", "OptionPlayCount": "播放次數", - "OptionPlayed": "已播放", "OptionPremiereDate": "首映日期", "OptionResumable": "可恢復", - "OptionRuntime": "播放長度", "OptionSpecialEpisode": "特集", "OptionTrackName": "曲目名稱", "OptionTvdbRating": "TVDB 評分", "OptionUnairedEpisode": "還未發佈的單元", - "OptionUnplayed": "未播放", "OptionWakeFromSleep": "從休眠中回復", "OptionWeekly": "每週", "OriginalAirDateValue": "原始播出日期:{0}", @@ -222,10 +203,8 @@ "TabMusic": "音樂", "TabMyPlugins": "我的附加元件", "TabNetworks": "網路", - "TabProfile": "設定", "TabProfiles": "設定", "TabServer": "伺服器", - "TabSettings": "設定", "TabUpcoming": "接下來", "TellUsAboutYourself": "介紹一下自己", "ThisWizardWillGuideYou": "此精靈將帶你完成安裝過程,開始之前,請選擇您慣用的語言。", @@ -304,16 +283,13 @@ "ButtonParentalControl": "家長控制", "ButtonPause": "暫停", "ButtonPreviousTrack": "上一首", - "ButtonProfile": "個人首頁", "ButtonRename": "重新命名", "ButtonResetEasyPassword": "重設簡單 PIN 碼", - "ButtonRestart": "重新啟動", "ButtonResume": "繼續播放", "ButtonRevoke": "撤銷", "ButtonScanAllLibraries": "掃描所有媒體庫", "ButtonSelectView": "選擇顯示方式", "ButtonSend": "傳送", - "ButtonSettings": "設定", "ButtonShutdown": "關機", "ButtonStart": "開始", "ButtonStop": "停止", @@ -556,7 +532,6 @@ "HeaderSeriesOptions": "系列選項", "HeaderSeriesStatus": "系列狀態", "HeaderServerSettings": "伺服器設定", - "HeaderSettings": "設定", "HeaderSetupLibrary": "設置你的媒體庫", "HeaderSortBy": "分類", "HeaderSortOrder": "分類順序", @@ -818,13 +793,9 @@ "Off": "關閉", "OptionAdminUsers": "管理員", "OptionAllowRemoteControlOthers": "允許其他使用者遠端控制", - "OptionAuto": "自動", - "OptionBlockBooks": "書", "OptionBlockChannelContent": "網路頻道內容", - "OptionHasTrailer": "預告", "OptionNone": "無", "OptionPosterCard": "海報卡片", - "OptionProfileAudio": "音訊", "OptionProfileVideo": "影片", "OptionProfileVideoAudio": "影片與圖片", "OptionReleaseDate": "釋出日期", @@ -849,7 +820,6 @@ "MessageConfirmRestart": "您確定要重新啟動 Jellyfin 嗎?", "Metadata": "中繼資料", "OptionAllUsers": "所有使用者", - "OptionHomeVideos": "圖片", "OptionPoster": "海報", "OptionProfilePhoto": "圖片", "OptionRegex": "正則表達式", @@ -893,7 +863,6 @@ "Normal": "正常", "OptionAllowContentDownloading": "允許下載及同步媒體", "OptionAllowLinkSharing": "允許分享到社群媒體", - "OptionBlockMusic": "音樂", "OptionBlockTrailers": "預告", "OptionBlockTvShows": "電視節目", "OptionList": "清單", @@ -966,7 +935,6 @@ "Mute": "靜音", "MessageConfirmShutdown": "你確定要關閉伺服器嗎?", "Never": "從不", - "OptionBlockMovies": "電影", "CopyStreamURLSuccess": "連結複製成功。", "PerfectMatch": "最佳配對", "PictureInPicture": "浮窗播放", @@ -1011,7 +979,6 @@ "LabelNewsCategories": "新分類:", "LabelValue": "數值:", "OptionBanner": "橫幅", - "OptionDownloadBannerImage": "橫幅", "OptionEnableAccessToAllChannels": "允許存取所有頻道", "OptionEnableAccessToAllLibraries": "允許存取所有媒體庫", "OptionEnableForAllTuners": "開啟所有調諧器", From d9f286124d5d1645abba0d17d303f8158f3f5d33 Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 24 Aug 2020 08:39:26 +0900 Subject: [PATCH 064/582] more string updates --- src/components/filterdialog/filterdialog.template.html | 2 +- .../imageOptionsEditor/imageOptionsEditor.template.html | 8 ++++---- src/controllers/dashboard/encodingsettings.html | 2 +- src/controllers/dashboard/metadatanfo.js | 2 +- src/controllers/dashboard/users/userparentalcontrol.js | 8 ++++---- src/controllers/itemDetails/index.html | 4 ++-- src/controllers/itemDetails/index.js | 2 +- src/controllers/movies/moviecollections.js | 2 +- src/controllers/movies/movies.js | 2 +- src/controllers/movies/movietrailers.js | 2 +- src/controllers/music/musicalbums.js | 2 +- src/controllers/shows/episodes.js | 2 +- src/controllers/shows/tvshows.js | 2 +- src/scripts/itembynamedetailpage.js | 2 +- src/strings/en-us.json | 3 +++ 15 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/components/filterdialog/filterdialog.template.html b/src/components/filterdialog/filterdialog.template.html index e98c71bf39..03aba5ee35 100644 --- a/src/components/filterdialog/filterdialog.template.html +++ b/src/components/filterdialog/filterdialog.template.html @@ -76,7 +76,7 @@
    diff --git a/src/controllers/dashboard/encodingsettings.html b/src/controllers/dashboard/encodingsettings.html index 2622841b71..fb89fd298a 100644 --- a/src/controllers/dashboard/encodingsettings.html +++ b/src/controllers/dashboard/encodingsettings.html @@ -11,7 +11,7 @@
    ${LabelDownMixAudioScaleHelp}
    +
    + +
    ${LabelMaxMuxingQueueSizeHelp}
    +
    @@ -47,32 +45,18 @@ - - - - - - - -
    + +
    + + + + diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 420268ea75..5da8ec45d8 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -21,50 +21,6 @@ import 'css!assets/css/videoosd'; /* eslint-disable indent */ - function seriesImageUrl(item, options) { - if (item.Type !== 'Episode') { - return null; - } - - options = options || {}; - options.type = options.type || 'Primary'; - if (options.type === 'Primary' && item.SeriesPrimaryImageTag) { - options.tag = item.SeriesPrimaryImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); - } - - if (options.type === 'Thumb') { - if (item.SeriesThumbImageTag) { - options.tag = item.SeriesThumbImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); - } - - if (item.ParentThumbImageTag) { - options.tag = item.ParentThumbImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options); - } - } - - return null; - } - - function imageUrl(item, options) { - options = options || {}; - options.type = options.type || 'Primary'; - - if (item.ImageTags && item.ImageTags[options.type]) { - options.tag = item.ImageTags[options.type]; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options); - } - - if (options.type === 'Primary' && item.AlbumId && item.AlbumPrimaryImageTag) { - options.tag = item.AlbumPrimaryImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); - } - - return null; - } - function getOpenedDialog() { return document.querySelector('.dialogContainer .dialog.opened'); } @@ -164,7 +120,6 @@ import 'css!assets/css/videoosd'; currentItem = item; const displayItem = itemInfo.displayItem || item; updateRecordingButton(displayItem); - setPoster(displayItem, item); let parentName = displayItem.SeriesName || displayItem.Album; if (displayItem.EpisodeTitle || displayItem.IsSeries) { @@ -172,42 +127,6 @@ import 'css!assets/css/videoosd'; } setTitle(displayItem, parentName); - const titleElement = view.querySelector('.osdTitle'); - let displayName = itemHelper.getDisplayName(displayItem, { - includeParentInfo: displayItem.Type !== 'Program', - includeIndexNumber: displayItem.Type !== 'Program' - }); - - if (!displayName) { - displayName = displayItem.Type; - } - - titleElement.innerHTML = displayName; - - if (displayName) { - titleElement.classList.remove('hide'); - } else { - titleElement.classList.add('hide'); - } - - const mediaInfoHtml = mediaInfo.getPrimaryMediaInfoHtml(displayItem, { - runtime: false, - subtitles: false, - tomatoes: false, - endsAt: false, - episodeTitle: false, - originalAirDate: displayItem.Type !== 'Program', - episodeTitleIndexNumber: displayItem.Type !== 'Program', - programIndicator: false - }); - const osdMediaInfo = view.querySelector('.osdMediaInfo'); - osdMediaInfo.innerHTML = mediaInfoHtml; - - if (mediaInfoHtml) { - osdMediaInfo.classList.remove('hide'); - } else { - osdMediaInfo.classList.add('hide'); - } const secondaryMediaInfo = view.querySelector('.osdSecondaryMediaInfo'); const secondaryMediaInfoHtml = mediaInfo.getSecondaryMediaInfoHtml(displayItem, { @@ -222,12 +141,6 @@ import 'css!assets/css/videoosd'; secondaryMediaInfo.classList.add('hide'); } - if (displayName) { - view.querySelector('.osdMainTextContainer').classList.remove('hide'); - } else { - view.querySelector('.osdMainTextContainer').classList.add('hide'); - } - if (enableProgressByTimeOfDay) { setDisplayTime(startTimeText, displayItem.StartDate); setDisplayTime(endTimeText, displayItem.EndDate); @@ -277,7 +190,6 @@ import 'css!assets/css/videoosd'; currentItem = item; if (!item) { - setPoster(null); updateRecordingButton(null); Emby.Page.setTitle(''); nowPlayingVolumeSlider.disabled = true; @@ -314,7 +226,20 @@ import 'css!assets/css/videoosd'; } function setTitle(item, parentName) { - Emby.Page.setTitle(parentName || ''); + let itemName = itemHelper.getDisplayName(item, { + includeParentInfo: item.Type !== 'Program', + includeIndexNumber: item.Type !== 'Program' + }); + + if (itemName && parentName) { + itemName = `${parentName} - ${itemName}`; + } + + if (!itemName) { + itemName = parentName || ''; + } + + Emby.Page.setTitle(itemName); const documentTitle = parentName || (item ? item.Name : null); @@ -323,38 +248,6 @@ import 'css!assets/css/videoosd'; } } - function setPoster(item, secondaryItem) { - const osdPoster = view.querySelector('.osdPoster'); - - if (item) { - let imgUrl = seriesImageUrl(item, { - maxWidth: osdPoster.clientWidth, - type: 'Primary' - }) || seriesImageUrl(item, { - maxWidth: osdPoster.clientWidth, - type: 'Thumb' - }) || imageUrl(item, { - maxWidth: osdPoster.clientWidth, - type: 'Primary' - }); - - if (!imgUrl && secondaryItem && (imgUrl = seriesImageUrl(secondaryItem, { - maxWidth: osdPoster.clientWidth, - type: 'Primary' - }) || seriesImageUrl(secondaryItem, { - maxWidth: osdPoster.clientWidth, - type: 'Thumb' - }) || imageUrl(secondaryItem, { - maxWidth: osdPoster.clientWidth, - type: 'Primary' - })), imgUrl) { - return void (osdPoster.innerHTML = ''); - } - } - - osdPoster.innerHTML = ''; - } - let mouseIsDown = false; function showOsd() { From 3f592881583d18025f8475b58e3f2366a56225e4 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 20 Aug 2020 20:39:33 +0200 Subject: [PATCH 113/582] Improve Up Next dialog --- src/assets/css/videoosd.css | 51 +++++--------------- src/components/mediainfo/mediainfo.js | 12 ++--- src/components/upnextdialog/upnextdialog.css | 23 +++++++-- src/components/upnextdialog/upnextdialog.js | 13 +++-- 4 files changed, 44 insertions(+), 55 deletions(-) diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index 7273121f53..9995a7ff84 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -6,18 +6,29 @@ -ms-user-select: none; } -.osdPoster img, .videoOsdBottom { bottom: 0; left: 0; right: 0; + position: fixed; + background: linear-gradient(0deg, rgba(16, 16, 16, 0.6) 0%, rgba(16, 16, 16, 0) 100%); + padding-top: 7.5em; + padding-bottom: 1.75em; + display: flex; + flex-direction: row; + justify-content: center; + will-change: opacity; + transition: opacity 0.3s ease-out; + color: #fff; + user-select: none; + -webkit-touch-callout: none; } .osdHeader { transition: opacity 0.3s ease-out; position: relative; z-index: 1; - background: linear-gradient(180deg, rgba(16, 16 16, 0.75) 0%, rgba(16, 16, 16, 0.15) 80%, rgba(16, 16, 16, 0) 100%); + background: linear-gradient(180deg, rgba(16, 16, 16, 0.6) 0%, rgba(16, 16, 16, 0) 100%); backdrop-filter: none; color: #eee; height: 7.5em; @@ -88,21 +99,6 @@ opacity: 0.6; } -.videoOsdBottom { - position: fixed; - background: linear-gradient(0deg, rgba(16, 16, 16, 0.75) 0%, rgba(16, 16, 16, 0.15) 80%, rgba(16, 16, 16, 0) 100%); - padding-top: 10em; - padding-bottom: 1.75em; - display: flex; - flex-direction: row; - justify-content: center; - will-change: opacity; - transition: opacity 0.3s ease-out; - color: #fff; - user-select: none; - -webkit-touch-callout: none; -} - .videoOsdBottom-hidden { opacity: 0; } @@ -157,27 +153,6 @@ user-select: none; } -.osdPoster { - width: 10%; - position: relative; - margin-right: 0.5em; -} - -.osdPoster img { - position: absolute; - height: auto; - width: 100%; - -webkit-box-shadow: 0 0 1.9vh #000; - box-shadow: 0 0 1.9vh #000; - border: 0.08em solid #222; - user-drag: none; - user-select: none; - -moz-user-select: none; - -webkit-user-drag: none; - -webkit-user-select: none; - -ms-user-select: none; -} - .osdTitle, .osdTitleSmall { margin: 0 1em 0 0; diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index 1d78d490a2..d5da29d3bc 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -100,11 +100,10 @@ import 'emby-button'; return html; } - export function getMediaInfoHtml(item, options) { + export function getMediaInfoHtml(item, options = {}) { let html = ''; const miscInfo = []; - options = options || {}; let text; let date; let minutes; @@ -289,7 +288,9 @@ import 'emby-button'; return getMediaInfoItem(m); }).join(''); - html += getStarIconsHtml(item); + if (options.starRating !== false) { + html += getStarIconsHtml(item); + } if (item.HasSubtitles && options.subtitles !== false) { html += '
    CC
    '; @@ -418,9 +419,8 @@ import 'emby-button'; return false; } - export function getPrimaryMediaInfoHtml(item, options) { - options = options || {}; - if (options.interactive == null) { + export function getPrimaryMediaInfoHtml(item, options = {}) { + if (options.interactive === undefined) { options.interactive = false; } diff --git a/src/components/upnextdialog/upnextdialog.css b/src/components/upnextdialog/upnextdialog.css index 067804919f..754fd418ca 100644 --- a/src/components/upnextdialog/upnextdialog.css +++ b/src/components/upnextdialog/upnextdialog.css @@ -1,9 +1,24 @@ -.upNextDialog { - width: 30vw; +.upNextContainer { + box-sizing: border-box; position: fixed; - left: auto; + top: 0; bottom: 0; - right: 0; + left: 50%; + transform: translateX(-50%); + padding: 1em; + display: flex; + flex-grow: 1; + width: calc(100vh * (16 / 9)); + height: 100vh; + justify-content: end; + align-items: flex-end; +} + +.upNextDialog-container { + border-radius: 5px; + width: 30em; + height: 11em; + left: auto; padding: 1%; display: flex; flex-direction: column; diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index c665d81173..8d3202cc1c 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -17,9 +17,7 @@ import 'flexStyles'; function getHtml() { let html = ''; - html += '
    '; - html += '
    '; - + html += '
    '; html += '
    '; html += '

     

    '; @@ -29,8 +27,6 @@ import 'flexStyles'; html += '
    '; html += '
    '; - html += '
    '; - html += '
    '; html += '
    '; + html += '
    '; return html; } @@ -73,9 +70,11 @@ import 'flexStyles'; const elem = instance.options.parent; - elem.querySelector('.upNextDialog-overview').innerHTML = item.Overview || ''; - elem.querySelector('.upNextDialog-mediainfo').innerHTML = mediaInfo.getPrimaryMediaInfoHtml(item, { + criticRating: false, + originalAirDate: false, + starRating: false, + subtitles: false }); let title = itemHelper.getDisplayName(item); From e38fa15e4d40d1ccc6e51e10bb6052502317adea Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 22 Aug 2020 02:38:06 +0200 Subject: [PATCH 114/582] Constrain width only on desktop --- src/assets/css/videoosd.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index 9995a7ff84..a23a4cf8ee 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -105,10 +105,13 @@ .osdControls { flex-grow: 1; - max-width: calc(100vh * 1.77); padding: 0 0.8em; } +.layout-desktop .osdControls { + max-width: calc(100vh * 1.77 - 2vh); +} + .videoOsdBottom .buttons { padding: 0.25em 0 0; display: -webkit-box; From 1812df57ad9a45c40b24378f5bc35953bceead40 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 22 Aug 2020 14:07:54 +0200 Subject: [PATCH 115/582] Fix up next dialog on Chrome --- src/components/upnextdialog/upnextdialog.css | 67 ++++---------------- src/components/upnextdialog/upnextdialog.js | 2 - 2 files changed, 11 insertions(+), 58 deletions(-) diff --git a/src/components/upnextdialog/upnextdialog.css b/src/components/upnextdialog/upnextdialog.css index 754fd418ca..efb0366488 100644 --- a/src/components/upnextdialog/upnextdialog.css +++ b/src/components/upnextdialog/upnextdialog.css @@ -1,25 +1,10 @@ .upNextContainer { - box-sizing: border-box; position: fixed; - top: 0; + right: 0; bottom: 0; - left: 50%; - transform: translateX(-50%); - padding: 1em; - display: flex; - flex-grow: 1; - width: calc(100vh * (16 / 9)); - height: 100vh; - justify-content: end; - align-items: flex-end; -} - -.upNextDialog-container { - border-radius: 5px; width: 30em; - height: 11em; - left: auto; - padding: 1%; + padding: 1em; + margin: 0 2em 2em 0; display: flex; flex-direction: column; will-change: transform, opacity; @@ -38,18 +23,18 @@ font-weight: 500; } -.upNextDialog-poster { - display: none; - max-width: 40%; - max-height: 15%; - position: relative; - margin-right: 1em; - flex-shrink: 0; - margin-bottom: 0.5em; +.upNextDialog-nextVideoText, +.upNextDialog-title { + width: 25.5em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .upNextDialog-buttons { + width: 29.75em; justify-content: end; + align-content: flex-end; } .upNextDialog-button { @@ -61,34 +46,4 @@ .upNextDialog { flex-direction: row; } - - .upNextDialog-poster { - max-width: initial; - max-height: initial; - width: 30%; - margin-bottom: 0; - } -} - -@media all and (max-width: 50em) { - .upNextDialog-overview { - display: none !important; - } -} - -.upNextDialog-poster-img { - position: absolute; - bottom: 0; - left: 0; - right: 0; - height: auto; - width: 100%; - box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); - user-drag: none; - border: 0; - user-select: none; - -moz-user-select: none; - -webkit-user-drag: none; - -webkit-user-select: none; - -ms-user-select: none; } diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index 8d3202cc1c..1d55556710 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -17,7 +17,6 @@ import 'flexStyles'; function getHtml() { let html = ''; - html += '
    '; html += '
    '; html += '

     

    '; @@ -42,7 +41,6 @@ import 'flexStyles'; // main html += '
    '; - html += '
    '; return html; } From 26b09014d02795a6d12c53170020f0771e8ca850 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 29 Aug 2020 16:34:21 +0200 Subject: [PATCH 116/582] Fix bad global restriction --- src/components/serviceworker/notifications.js | 3 ++- src/scripts/apploader.js | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/serviceworker/notifications.js b/src/components/serviceworker/notifications.js index 339d521bbc..9b50553244 100644 --- a/src/components/serviceworker/notifications.js +++ b/src/components/serviceworker/notifications.js @@ -26,7 +26,8 @@ }); } - window.addEventListener('notificationclick', function (event) { + /* eslint-disable-next-line no-restricted-globals -- self is valid in a serviceworker environment */ + self.addEventListener('notificationclick', function (event) { var notification = event.notification; notification.close(); diff --git a/src/scripts/apploader.js b/src/scripts/apploader.js index f5f6850c40..fdf52fd699 100644 --- a/src/scripts/apploader.js +++ b/src/scripts/apploader.js @@ -35,7 +35,8 @@ // Promise() being missing on some legacy browser, and a funky one // is Promise() present but buggy on WebOS 2 window.Promise = undefined; - window.Promise = undefined; + /* eslint-disable-next-line no-restricted-globals -- Explicit check on self needed */ + self.Promise = undefined; } if (!window.Promise) { From 3a8e0394dccf0ebc23d5f46b2e09e484af134bd5 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 29 Aug 2020 16:44:36 +0200 Subject: [PATCH 117/582] Remove withCredentials from xhrSetup in hls.js --- src/plugins/htmlAudioPlayer/plugin.js | 5 +---- src/plugins/htmlVideoPlayer/plugin.js | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/plugins/htmlAudioPlayer/plugin.js b/src/plugins/htmlAudioPlayer/plugin.js index acce15df88..6f413fac50 100644 --- a/src/plugins/htmlAudioPlayer/plugin.js +++ b/src/plugins/htmlAudioPlayer/plugin.js @@ -132,10 +132,7 @@ class HtmlAudioPlayer { return new Promise(function (resolve, reject) { requireHlsPlayer(function () { const hls = new Hls({ - manifestLoadingTimeOut: 20000, - xhrSetup: function (xhr, url) { - xhr.withCredentials = true; - } + manifestLoadingTimeOut: 20000 }); hls.loadSource(val); hls.attachMedia(elem); diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 58c8624e34..88329fecff 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -393,10 +393,7 @@ function tryRemoveElement(elem) { return new Promise((resolve, reject) => { requireHlsPlayer(() => { const hls = new Hls({ - manifestLoadingTimeOut: 20000, - xhrSetup(xhr) { - xhr.withCredentials = true; - } + manifestLoadingTimeOut: 20000 }); hls.loadSource(url); hls.attachMedia(elem); From 02015aaa9c60e727242c34363a7130d2c069a831 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 29 Aug 2020 18:32:42 +0200 Subject: [PATCH 118/582] Adjust OSD color for WCAG compliance --- src/assets/css/videoosd.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index a23a4cf8ee..f0792c2c45 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -11,7 +11,7 @@ left: 0; right: 0; position: fixed; - background: linear-gradient(0deg, rgba(16, 16, 16, 0.6) 0%, rgba(16, 16, 16, 0) 100%); + background: linear-gradient(0deg, rgba(16, 16, 16, 0.75) 0%, rgba(16, 16, 16, 0) 100%); padding-top: 7.5em; padding-bottom: 1.75em; display: flex; @@ -28,7 +28,7 @@ transition: opacity 0.3s ease-out; position: relative; z-index: 1; - background: linear-gradient(180deg, rgba(16, 16, 16, 0.6) 0%, rgba(16, 16, 16, 0) 100%); + background: linear-gradient(180deg, rgba(16, 16, 16, 0.75) 0%, rgba(16, 16, 16, 0) 100%); backdrop-filter: none; color: #eee; height: 7.5em; From ac0fdd8059573045c954fcb26829f48ca4b40fbb Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 29 Aug 2020 19:43:05 +0300 Subject: [PATCH 119/582] Fix fake image zoom --- src/components/slideshow/slideshow.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 82f541a116..6e2d5c379c 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -256,7 +256,7 @@ export default function (options) { /** * Handles zoom changes. */ - function onZoomChange(scale, imageEl, slideEl) { + function onZoomChange(swiper, scale, imageEl, slideEl) { const zoomImage = slideEl.querySelector('.swiper-zoom-fakeimg'); if (zoomImage) { From f915ecd400d680a71f2d66b3abb1de9910e3e72a Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 29 Aug 2020 19:44:05 +0300 Subject: [PATCH 120/582] Add vendor styles polyfill --- src/legacy/vendorStyles.js | 32 ++++++++++++++++++++++++++++++++ src/scripts/site.js | 2 ++ 2 files changed, 34 insertions(+) create mode 100644 src/legacy/vendorStyles.js diff --git a/src/legacy/vendorStyles.js b/src/legacy/vendorStyles.js new file mode 100644 index 0000000000..3b9dd9cf10 --- /dev/null +++ b/src/legacy/vendorStyles.js @@ -0,0 +1,32 @@ +// Polyfill for vendor prefixed style properties + +(function () { + const vendorProperties = { + 'transform': ['webkitTransform'], + 'transition': ['webkitTransition'] + }; + + const elem = document.createElement('div'); + + function polyfillProperty(name) { + if (!(name in elem.style)) { + for (const vendorName of vendorProperties[name] || []) { + if (vendorName in elem.style) { + console.debug(`polyfill '${name}' with '${vendorName}'`); + + Object.defineProperty(CSSStyleDeclaration.prototype, name, { + get: function () { return this[vendorName]; }, + set: function (val) { this[vendorName] = val; } + }); + + break; + } + } + } + } + + if (elem.style instanceof CSSStyleDeclaration) { + polyfillProperty('transform'); + polyfillProperty('transition'); + } +})(); diff --git a/src/scripts/site.js b/src/scripts/site.js index 0e1e44251c..fda46b8dbe 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -222,6 +222,7 @@ function initClient() { }); require(['mouseManager']); require(['focusPreventScroll']); + require(['vendorStyles']); require(['autoFocuser'], function(autoFocuser) { autoFocuser.enable(); }); @@ -655,6 +656,7 @@ function initClient() { }); define('slideshow', [componentsPath + '/slideshow/slideshow'], returnFirstDependency); define('focusPreventScroll', ['legacy/focusPreventScroll'], returnFirstDependency); + define('vendorStyles', ['legacy/vendorStyles'], returnFirstDependency); define('userdataButtons', [componentsPath + '/userdatabuttons/userdatabuttons'], returnFirstDependency); define('listView', [componentsPath + '/listview/listview'], returnFirstDependency); define('indicators', [componentsPath + '/indicators/indicators'], returnFirstDependency); From fad3b562ea3dc1fc9a11ce41039b9efa44bb0981 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 29 Aug 2020 20:10:23 +0300 Subject: [PATCH 121/582] Fix variable usage (SonarCloud) --- src/legacy/vendorStyles.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/legacy/vendorStyles.js b/src/legacy/vendorStyles.js index 3b9dd9cf10..74a90ba04d 100644 --- a/src/legacy/vendorStyles.js +++ b/src/legacy/vendorStyles.js @@ -10,7 +10,7 @@ function polyfillProperty(name) { if (!(name in elem.style)) { - for (const vendorName of vendorProperties[name] || []) { + (vendorProperties[name] || []).every((vendorName) => { if (vendorName in elem.style) { console.debug(`polyfill '${name}' with '${vendorName}'`); @@ -19,9 +19,11 @@ set: function (val) { this[vendorName] = val; } }); - break; + return false; } - } + + return true; + }); } } From c97d7a6f598cddf95b107c165414ec8af588c606 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 30 Aug 2020 06:06:47 +0200 Subject: [PATCH 122/582] Use connectionManager global --- src/components/activitylog.js | 5 +- src/components/appRouter.js | 15 +++--- src/components/backdrop/backdrop.js | 3 +- src/components/cardbuilder/cardBuilder.js | 3 +- .../cardbuilder/chaptercardbuilder.js | 3 +- src/components/channelMapper/channelMapper.js | 5 +- .../collectionEditor/collectionEditor.js | 5 +- .../displaySettings/displaySettings.js | 5 +- src/components/filterdialog/filterdialog.js | 3 +- src/components/filtermenu/filtermenu.js | 3 +- src/components/groupedcards.js | 3 +- src/components/guide/guide.js | 5 +- .../homeScreenSettings/homeScreenSettings.js | 5 +- src/components/homesections/homesections.js | 13 +++-- .../imageDownloader/imageDownloader.js | 3 +- src/components/imageUploader/imageUploader.js | 3 +- src/components/imageeditor/imageeditor.js | 13 +++-- src/components/itemContextMenu.js | 3 +- src/components/itemMediaInfo/itemMediaInfo.js | 3 +- .../itemidentifier/itemidentifier.js | 3 +- src/components/listview/listview.js | 5 +- .../metadataEditor/metadataEditor.js | 11 ++--- src/components/multiSelect/multiSelect.js | 3 +- src/components/nowPlayingBar/nowPlayingBar.js | 13 +++-- src/components/playback/mediasession.js | 11 ++--- src/components/playback/playbackmanager.js | 49 +++++++++---------- src/components/playback/playersettingsmenu.js | 3 +- .../playbackSettings/playbackSettings.js | 5 +- src/components/playerstats/playerstats.js | 5 +- .../playlisteditor/playlisteditor.js | 5 +- .../recordingcreator/recordingbutton.js | 3 +- .../recordingcreator/recordingcreator.js | 5 +- .../recordingcreator/recordingeditor.js | 7 ++- .../recordingcreator/recordingfields.js | 7 ++- .../recordingcreator/recordinghelper.js | 9 ++-- .../recordingcreator/seriesrecordingeditor.js | 7 ++- src/components/refreshdialog/refreshdialog.js | 3 +- src/components/remotecontrol/remotecontrol.js | 13 +++-- src/components/search/searchresults.js | 3 +- src/components/shortcuts.js | 9 ++-- src/components/slideshow/slideshow.js | 3 +- .../subtitleeditor/subtitleeditor.js | 9 ++-- .../subtitlesettings/subtitlesettings.js | 5 +- src/components/syncPlay/groupSelectionMenu.js | 5 +- src/components/syncPlay/syncPlayManager.js | 9 ++-- src/components/syncPlay/timeSyncManager.js | 3 +- src/components/themeMediaPlayer.js | 3 +- src/components/tunerPicker.js | 3 +- src/components/upnextdialog/upnextdialog.js | 11 ++--- .../userdatabuttons/userdatabuttons.js | 9 ++-- src/controllers/dashboard/dashboard.js | 15 +++--- src/controllers/favorites.js | 3 +- src/controllers/hometab.js | 3 +- src/controllers/itemDetails/index.js | 25 +++++----- src/controllers/list.js | 7 ++- src/controllers/playback/video/index.js | 17 +++---- src/controllers/session/addServer/index.js | 2 +- src/controllers/session/login/index.js | 3 +- src/controllers/session/selectServer/index.js | 7 ++- .../emby-itemscontainer.js | 3 +- .../emby-playstatebutton.js | 3 +- .../emby-ratingbutton/emby-ratingbutton.js | 3 +- src/libraries/screensavermanager.js | 3 +- src/plugins/backdropScreensaver/plugin.js | 3 +- src/plugins/bookPlayer/plugin.js | 3 +- .../chromecastPlayer/chromecastHelper.js | 4 +- src/plugins/chromecastPlayer/plugin.js | 15 +++--- src/plugins/htmlVideoPlayer/plugin.js | 5 +- src/plugins/photoPlayer/plugin.js | 3 +- src/plugins/playAccessValidation/plugin.js | 3 +- src/plugins/sessionPlayer/plugin.js | 5 +- src/scripts/autoThemes.js | 3 +- src/scripts/clientUtils.js | 2 +- src/scripts/deleteHelper.js | 3 +- src/scripts/itembynamedetailpage.js | 3 +- src/scripts/libraryMenu.js | 17 +++---- src/scripts/serverNotifications.js | 5 +- src/scripts/site.js | 33 +++++-------- src/scripts/taskbutton.js | 11 ++--- 79 files changed, 233 insertions(+), 319 deletions(-) diff --git a/src/components/activitylog.js b/src/components/activitylog.js index ab489a3f31..3878d03355 100644 --- a/src/components/activitylog.js +++ b/src/components/activitylog.js @@ -4,7 +4,6 @@ import dom from 'dom'; import * as datefns from 'date-fns'; import dfnshelper from 'dfnshelper'; import serverNotifications from 'serverNotifications'; -import connectionManager from 'connectionManager'; import 'emby-button'; import 'listViewStyle'; @@ -141,7 +140,7 @@ class ActivityLog { const element = options.element; element.classList.add('activityLogListWidget'); element.addEventListener('click', onListClick.bind(this)); - const apiClient = connectionManager.getApiClient(options.serverId); + const apiClient = window.connectionManager.getApiClient(options.serverId); reloadData(this, element, apiClient); const onUpdate = onActivityLogUpdate.bind(this); this.updateFn = onUpdate; @@ -153,7 +152,7 @@ class ActivityLog { if (options) { options.element.classList.remove('activityLogListWidget'); - connectionManager.getApiClient(options.serverId).sendMessage('ActivityLogEntryStop', '0,1500'); + window.connectionManager.getApiClient(options.serverId).sendMessage('ActivityLogEntryStop', '0,1500'); } const onUpdate = this.updateFn; diff --git a/src/components/appRouter.js b/src/components/appRouter.js index f986e71357..75199fc639 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -2,7 +2,6 @@ import appHost from 'apphost'; import appSettings from 'appSettings'; import backdrop from 'backdrop'; import browser from 'browser'; -import connectionManager from 'connectionManager'; import events from 'events'; import globalize from 'globalize'; import itemHelper from 'itemHelper'; @@ -95,7 +94,7 @@ class AppRouter { beginConnectionWizard() { backdrop.clearBackdrop(); loading.show(); - connectionManager.connect({ + window.connectionManager.connect({ enableAutoLogin: appSettings.enableAutoLogin() }).then((result) => { this.handleConnectionResult(result); @@ -154,7 +153,7 @@ class AppRouter { events.on(appHost, 'beforeexit', this.onBeforeExit); events.on(appHost, 'resume', this.onAppResume); - connectionManager.connect({ + window.connectionManager.connect({ enableAutoLogin: appSettings.enableAutoLogin() }).then((result) => { this.firstConnectionResult = result; @@ -210,7 +209,7 @@ class AppRouter { showItem(item, serverId, options) { // TODO: Refactor this so it only gets items, not strings. if (typeof (item) === 'string') { - const apiClient = serverId ? connectionManager.getApiClient(serverId) : connectionManager.currentApiClient(); + const apiClient = serverId ? window.connectionManager.getApiClient(serverId) : window.connectionManager.currentApiClient(); apiClient.getItem(apiClient.getCurrentUserId(), item).then((itemObject) => { this.showItem(itemObject, options); }); @@ -492,15 +491,15 @@ class AppRouter { } initApiClients() { - connectionManager.getApiClients().forEach((apiClient) => { + window.connectionManager.getApiClients().forEach((apiClient) => { this.initApiClient(apiClient, this); }); - events.on(connectionManager, 'apiclientcreated', this.onApiClientCreated); + events.on(window.connectionManager, 'apiclientcreated', this.onApiClientCreated); } onAppResume() { - const apiClient = connectionManager.currentApiClient(); + const apiClient = window.connectionManager.currentApiClient(); if (apiClient) { apiClient.ensureWebSocket(); @@ -518,7 +517,7 @@ class AppRouter { } } - const apiClient = connectionManager.currentApiClient(); + const apiClient = window.connectionManager.currentApiClient(); const pathname = ctx.pathname.toLowerCase(); console.debug('appRouter - processing path request ' + pathname); diff --git a/src/components/backdrop/backdrop.js b/src/components/backdrop/backdrop.js index d3c9e58b59..83888b81b9 100644 --- a/src/components/backdrop/backdrop.js +++ b/src/components/backdrop/backdrop.js @@ -1,5 +1,4 @@ import browser from 'browser'; -import connectionManager from 'connectionManager'; import playbackManager from 'playbackManager'; import dom from 'dom'; import * as userSettings from 'userSettings'; @@ -177,7 +176,7 @@ import 'css!./backdrop'; function getItemImageUrls(item, imageOptions) { imageOptions = imageOptions || {}; - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); if (item.BackdropImageTags && item.BackdropImageTags.length > 0) { return item.BackdropImageTags.map((imgTag, index) => { return apiClient.getScaledImageUrl(item.BackdropItemId || item.Id, Object.assign(imageOptions, { diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 63eaf2bdfe..63b2e26adb 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -7,7 +7,6 @@ import datetime from 'datetime'; import imageLoader from 'imageLoader'; -import connectionManager from 'connectionManager'; import itemHelper from 'itemHelper'; import focusManager from 'focusManager'; import indicators from 'indicators'; @@ -371,7 +370,7 @@ import 'programStyles'; if (serverId !== lastServerId) { lastServerId = serverId; - apiClient = connectionManager.getApiClient(lastServerId); + apiClient = window.connectionManager.getApiClient(lastServerId); } if (options.indexBy) { diff --git a/src/components/cardbuilder/chaptercardbuilder.js b/src/components/cardbuilder/chaptercardbuilder.js index 642a87db2a..35ae2b0cdd 100644 --- a/src/components/cardbuilder/chaptercardbuilder.js +++ b/src/components/cardbuilder/chaptercardbuilder.js @@ -7,7 +7,6 @@ import datetime from 'datetime'; import imageLoader from 'imageLoader'; -import connectionManager from 'connectionManager'; import layoutManager from 'layoutManager'; import browser from 'browser'; @@ -48,7 +47,7 @@ import browser from 'browser'; let html = ''; let itemsInRow = 0; - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); for (let i = 0, length = chapters.length; i < length; i++) { if (options.rows && itemsInRow === 0) { diff --git a/src/components/channelMapper/channelMapper.js b/src/components/channelMapper/channelMapper.js index e747279693..65d30ebe0d 100644 --- a/src/components/channelMapper/channelMapper.js +++ b/src/components/channelMapper/channelMapper.js @@ -1,7 +1,6 @@ import dom from 'dom'; import dialogHelper from 'dialogHelper'; import loading from 'loading'; -import connectionManager from 'connectionManager'; import globalize from 'globalize'; import actionsheet from 'actionsheet'; import 'emby-input'; @@ -16,7 +15,7 @@ export default class channelMapper { function mapChannel(button, channelId, providerChannelId) { loading.show(); const providerId = options.providerId; - connectionManager.getApiClient(options.serverId).ajax({ + window.connectionManager.getApiClient(options.serverId).ajax({ type: 'POST', url: ApiClient.getUrl('LiveTv/ChannelMappings'), data: JSON.stringify({ @@ -58,7 +57,7 @@ export default class channelMapper { } function getChannelMappingOptions(serverId, providerId) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return apiClient.getJSON(apiClient.getUrl('LiveTv/ChannelMappingOptions', { providerId: providerId })); diff --git a/src/components/collectionEditor/collectionEditor.js b/src/components/collectionEditor/collectionEditor.js index dd8b3d6837..2d0d025929 100644 --- a/src/components/collectionEditor/collectionEditor.js +++ b/src/components/collectionEditor/collectionEditor.js @@ -2,7 +2,6 @@ import dom from 'dom'; import dialogHelper from 'dialogHelper'; import loading from 'loading'; import layoutManager from 'layoutManager'; -import connectionManager from 'connectionManager'; import appRouter from 'appRouter'; import globalize from 'globalize'; import 'emby-checkbox'; @@ -25,7 +24,7 @@ import 'flexStyles'; const collectionId = panel.querySelector('#selectCollectionToAddTo').value; - const apiClient = connectionManager.getApiClient(currentServerId); + const apiClient = window.connectionManager.getApiClient(currentServerId); if (collectionId) { addToCollection(apiClient, panel, collectionId); @@ -106,7 +105,7 @@ import 'flexStyles'; EnableTotalRecordCount: false }; - const apiClient = connectionManager.getApiClient(currentServerId); + const apiClient = window.connectionManager.getApiClient(currentServerId); apiClient.getItems(apiClient.getCurrentUserId(), options).then(result => { let html = ''; diff --git a/src/components/displaySettings/displaySettings.js b/src/components/displaySettings/displaySettings.js index ae7647f98b..9def27dc8a 100644 --- a/src/components/displaySettings/displaySettings.js +++ b/src/components/displaySettings/displaySettings.js @@ -6,7 +6,6 @@ import focusManager from 'focusManager'; import datetime from 'datetime'; import globalize from 'globalize'; import loading from 'loading'; -import connectionManager from 'connectionManager'; import skinManager from 'skinManager'; import events from 'events'; import 'emby-select'; @@ -182,7 +181,7 @@ import 'emby-button'; function onSubmit(e) { const self = this; - const apiClient = connectionManager.getApiClient(self.options.serverId); + const apiClient = window.connectionManager.getApiClient(self.options.serverId); const userId = self.options.userId; const userSettings = self.options.userSettings; @@ -221,7 +220,7 @@ import 'emby-button'; loading.show(); const userId = self.options.userId; - const apiClient = connectionManager.getApiClient(self.options.serverId); + const apiClient = window.connectionManager.getApiClient(self.options.serverId); const userSettings = self.options.userSettings; return apiClient.getUser(userId).then(user => { diff --git a/src/components/filterdialog/filterdialog.js b/src/components/filterdialog/filterdialog.js index df17c19dec..d11edb40a2 100644 --- a/src/components/filterdialog/filterdialog.js +++ b/src/components/filterdialog/filterdialog.js @@ -1,7 +1,6 @@ import dom from 'dom'; import dialogHelper from 'dialogHelper'; import globalize from 'globalize'; -import connectionManager from 'connectionManager'; import events from 'events'; import 'emby-checkbox'; import 'emby-collapse'; @@ -420,7 +419,7 @@ import 'css!./style.css'; this.bindEvents(dlg); if (enableDynamicFilters(this.options.mode)) { dlg.classList.add('dynamicFilterDialog'); - const apiClient = connectionManager.getApiClient(this.options.serverId); + const apiClient = window.connectionManager.getApiClient(this.options.serverId); loadDynamicFilters(dlg, apiClient, apiClient.getCurrentUserId(), this.options.query); } }); diff --git a/src/components/filtermenu/filtermenu.js b/src/components/filtermenu/filtermenu.js index 637214a878..be12b04edd 100644 --- a/src/components/filtermenu/filtermenu.js +++ b/src/components/filtermenu/filtermenu.js @@ -3,7 +3,6 @@ import focusManager from 'focusManager'; import dialogHelper from 'dialogHelper'; import inputManager from 'inputManager'; import layoutManager from 'layoutManager'; -import connectionManager from 'connectionManager'; import globalize from 'globalize'; import * as userSettings from 'userSettings'; import 'emby-checkbox'; @@ -194,7 +193,7 @@ function initEditor(context, settings) { } } function loadDynamicFilters(context, options) { - var apiClient = connectionManager.getApiClient(options.serverId); + var apiClient = window.connectionManager.getApiClient(options.serverId); var filterMenuOptions = Object.assign(options.filterMenuOptions, { diff --git a/src/components/groupedcards.js b/src/components/groupedcards.js index 3361db5f02..38d08d129b 100644 --- a/src/components/groupedcards.js +++ b/src/components/groupedcards.js @@ -2,12 +2,11 @@ import dom from 'dom'; import appRouter from 'appRouter'; -import connectionManager from 'connectionManager'; function onGroupedCardClick(e, card) { var itemId = card.getAttribute('data-id'); var serverId = card.getAttribute('data-serverid'); - var apiClient = connectionManager.getApiClient(serverId); + var apiClient = window.connectionManager.getApiClient(serverId); var userId = apiClient.getCurrentUserId(); var playedIndicator = card.querySelector('.playedIndicator'); var playedIndicatorHtml = playedIndicator ? playedIndicator.innerHTML : null; diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index b63490a5a5..a5ed55e67c 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -1,7 +1,6 @@ import inputManager from 'inputManager'; import browser from 'browser'; import globalize from 'globalize'; -import connectionManager from 'connectionManager'; import scrollHelper from 'scrollHelper'; import serverNotifications from 'serverNotifications'; import loading from 'loading'; @@ -213,7 +212,7 @@ function Guide(options) { } function reloadGuide(context, newStartDate, scrollToTimeMs, focusToTimeMs, startTimeOfDayMs, focusProgramOnRender) { - const apiClient = connectionManager.getApiClient(options.serverId); + const apiClient = window.connectionManager.getApiClient(options.serverId); const channelQuery = { @@ -873,7 +872,7 @@ function Guide(options) { function reloadPage(page) { showLoading(); - const apiClient = connectionManager.getApiClient(options.serverId); + const apiClient = window.connectionManager.getApiClient(options.serverId); apiClient.getLiveTvGuideInfo().then(function (guideInfo) { setDateRange(page, guideInfo); diff --git a/src/components/homeScreenSettings/homeScreenSettings.js b/src/components/homeScreenSettings/homeScreenSettings.js index b5695fc818..3348348f20 100644 --- a/src/components/homeScreenSettings/homeScreenSettings.js +++ b/src/components/homeScreenSettings/homeScreenSettings.js @@ -2,7 +2,6 @@ import layoutManager from 'layoutManager'; import focusManager from 'focusManager'; import globalize from 'globalize'; import loading from 'loading'; -import connectionManager from 'connectionManager'; import homeSections from 'homeSections'; import dom from 'dom'; import events from 'events'; @@ -380,7 +379,7 @@ import 'emby-checkbox'; function onSubmit(e) { const self = this; - const apiClient = connectionManager.getApiClient(self.options.serverId); + const apiClient = window.connectionManager.getApiClient(self.options.serverId); const userId = self.options.userId; const userSettings = self.options.userSettings; @@ -452,7 +451,7 @@ import 'emby-checkbox'; loading.show(); const userId = self.options.userId; - const apiClient = connectionManager.getApiClient(self.options.serverId); + const apiClient = window.connectionManager.getApiClient(self.options.serverId); const userSettings = self.options.userSettings; apiClient.getUser(userId).then(user => { diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index e933cf2c3a..758773689b 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; import cardBuilder from 'cardBuilder'; import dom from 'dom'; import layoutManager from 'layoutManager'; @@ -212,7 +211,7 @@ import 'css!./homesections'; function getFetchLatestItemsFn(serverId, parentId, collectionType) { return function () { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); let limit = 16; if (enableScrollX()) { @@ -368,7 +367,7 @@ import 'css!./homesections'; function getContinueWatchingFetchFn(serverId) { return function () { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); const screenWidth = dom.getWindowSize().innerWidth; let limit; @@ -441,7 +440,7 @@ import 'css!./homesections'; function getContinueListeningFetchFn(serverId) { return function () { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); const screenWidth = dom.getWindowSize().innerWidth; let limit; @@ -514,7 +513,7 @@ import 'css!./homesections'; function getOnNowFetchFn(serverId) { return function () { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return apiClient.getLiveTvRecommendedPrograms({ userId: apiClient.getCurrentUserId(), IsAiring: true, @@ -657,7 +656,7 @@ import 'css!./homesections'; function getNextUpFetchFn(serverId) { return function () { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return apiClient.getNextUpEpisodes({ Limit: enableScrollX() ? 24 : 15, Fields: 'PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo,Path', @@ -728,7 +727,7 @@ import 'css!./homesections'; function getLatestRecordingsFetchFn(serverId, activeRecordingsOnly) { return function () { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return apiClient.getLiveTvRecordings({ userId: apiClient.getCurrentUserId(), Limit: enableScrollX() ? 12 : 5, diff --git a/src/components/imageDownloader/imageDownloader.js b/src/components/imageDownloader/imageDownloader.js index 3f78a5ecbb..1ec459ff83 100644 --- a/src/components/imageDownloader/imageDownloader.js +++ b/src/components/imageDownloader/imageDownloader.js @@ -2,7 +2,6 @@ import dom from 'dom'; import loading from 'loading'; import appHost from 'apphost'; import dialogHelper from 'dialogHelper'; -import connectionManager from 'connectionManager'; import imageLoader from 'imageLoader'; import browser from 'browser'; import layoutManager from 'layoutManager'; @@ -317,7 +316,7 @@ import 'cardStyle'; loading.show(); import('text!./imageDownloader.template.html').then(({default: template}) => { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); currentItemId = itemId; currentItemType = itemType; diff --git a/src/components/imageUploader/imageUploader.js b/src/components/imageUploader/imageUploader.js index 59c31724d0..e89cbda2ae 100644 --- a/src/components/imageUploader/imageUploader.js +++ b/src/components/imageUploader/imageUploader.js @@ -6,7 +6,6 @@ */ import dialogHelper from 'dialogHelper'; -import connectionManager from 'connectionManager'; import dom from 'dom'; import loading from 'loading'; import scrollHelper from 'scrollHelper'; @@ -108,7 +107,7 @@ import 'css!./style'; return false; } - connectionManager.getApiClient(currentServerId).uploadItemImage(currentItemId, imageType, file).then(() => { + window.connectionManager.getApiClient(currentServerId).uploadItemImage(currentItemId, imageType, file).then(() => { dlg.querySelector('#uploadImage').value = ''; loading.hide(); diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index a67b0afef1..a21fb76270 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -1,5 +1,4 @@ import dialogHelper from 'dialogHelper'; -import connectionManager from 'connectionManager'; import loading from 'loading'; import dom from 'dom'; import layoutManager from 'layoutManager'; @@ -36,10 +35,10 @@ import 'css!./imageeditor'; let apiClient; if (item) { - apiClient = connectionManager.getApiClient(item.ServerId); + apiClient = window.connectionManager.getApiClient(item.ServerId); reloadItem(page, item, apiClient, focusContext); } else { - apiClient = connectionManager.getApiClient(currentItem.ServerId); + apiClient = window.connectionManager.getApiClient(currentItem.ServerId); apiClient.getItem(apiClient.getCurrentUserId(), currentItem.Id).then(function (item) { reloadItem(page, item, apiClient, focusContext); }); @@ -293,7 +292,7 @@ import 'css!./imageeditor'; function showActionSheet(context, imageCard) { const itemId = imageCard.getAttribute('data-id'); const serverId = imageCard.getAttribute('data-serverid'); - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); const type = imageCard.getAttribute('data-imagetype'); const index = parseInt(imageCard.getAttribute('data-index')); @@ -404,7 +403,7 @@ import 'css!./imageeditor'; const type = this.getAttribute('data-imagetype'); let index = this.getAttribute('data-index'); index = index === 'null' ? null : parseInt(index); - const apiClient = connectionManager.getApiClient(currentItem.ServerId); + const apiClient = window.connectionManager.getApiClient(currentItem.ServerId); deleteImage(context, currentItem.Id, type, index, apiClient, true); }); @@ -412,7 +411,7 @@ import 'css!./imageeditor'; const type = this.getAttribute('data-imagetype'); const index = this.getAttribute('data-index'); const newIndex = this.getAttribute('data-newindex'); - const apiClient = connectionManager.getApiClient(currentItem.ServerId); + const apiClient = window.connectionManager.getApiClient(currentItem.ServerId); moveImage(context, apiClient, currentItem.Id, type, index, newIndex, dom.parentWithClass(this, 'itemsContainer')); }); } @@ -424,7 +423,7 @@ import 'css!./imageeditor'; loading.show(); import('text!./imageeditor.template.html').then(({default: template}) => { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) { const dialogOptions = { removeOnClose: true diff --git a/src/components/itemContextMenu.js b/src/components/itemContextMenu.js index a42a7537a1..f36f623d9f 100644 --- a/src/components/itemContextMenu.js +++ b/src/components/itemContextMenu.js @@ -1,6 +1,5 @@ import appHost from 'apphost'; import globalize from 'globalize'; -import connectionManager from 'connectionManager'; import itemHelper from 'itemHelper'; import appRouter from 'appRouter'; import playbackManager from 'playbackManager'; @@ -330,7 +329,7 @@ import actionsheet from 'actionsheet'; function executeCommand(item, id, options) { const itemId = item.Id; const serverId = item.ServerId; - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return new Promise(function (resolve, reject) { switch (id) { diff --git a/src/components/itemMediaInfo/itemMediaInfo.js b/src/components/itemMediaInfo/itemMediaInfo.js index c3fd9e0d0a..cc60c4c462 100644 --- a/src/components/itemMediaInfo/itemMediaInfo.js +++ b/src/components/itemMediaInfo/itemMediaInfo.js @@ -8,7 +8,6 @@ import dialogHelper from 'dialogHelper'; import layoutManager from 'layoutManager'; import globalize from 'globalize'; -import connectionManager from 'connectionManager'; import loading from 'loading'; import 'emby-select'; import 'listViewStyle'; @@ -137,7 +136,7 @@ import 'flexStyles'; } function loadMediaInfo(itemId, serverId, template) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(item => { const dialogOptions = { size: 'small', diff --git a/src/components/itemidentifier/itemidentifier.js b/src/components/itemidentifier/itemidentifier.js index 5630680fbf..956cbb4f64 100644 --- a/src/components/itemidentifier/itemidentifier.js +++ b/src/components/itemidentifier/itemidentifier.js @@ -7,7 +7,6 @@ import dialogHelper from 'dialogHelper'; import loading from 'loading'; -import connectionManager from 'connectionManager'; import globalize from 'globalize'; import scrollHelper from 'scrollHelper'; import layoutManager from 'layoutManager'; @@ -31,7 +30,7 @@ import 'cardStyle'; let currentSearchResult; function getApiClient() { - return connectionManager.getApiClient(currentServerId); + return window.connectionManager.getApiClient(currentServerId); } function searchForIdentificationResults(page) { diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 11e8e953ae..dd0c1b5801 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -8,7 +8,6 @@ import itemHelper from 'itemHelper'; import mediaInfo from 'mediaInfo'; import indicators from 'indicators'; -import connectionManager from 'connectionManager'; import layoutManager from 'layoutManager'; import globalize from 'globalize'; import datetime from 'datetime'; @@ -77,7 +76,7 @@ import 'emby-playstatebutton'; } function getImageUrl(item, width) { - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); let itemId; const options = { @@ -106,7 +105,7 @@ import 'emby-playstatebutton'; } function getChannelImageUrl(item, width) { - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); const options = { maxWidth: width, type: 'Primary' diff --git a/src/components/metadataEditor/metadataEditor.js b/src/components/metadataEditor/metadataEditor.js index 82b3c66f53..e2ff2a6b56 100644 --- a/src/components/metadataEditor/metadataEditor.js +++ b/src/components/metadataEditor/metadataEditor.js @@ -4,7 +4,6 @@ import dialogHelper from 'dialogHelper'; import datetime from 'datetime'; import loading from 'loading'; import focusManager from 'focusManager'; -import connectionManager from 'connectionManager'; import globalize from 'globalize'; import shell from 'shell'; import 'emby-checkbox'; @@ -290,7 +289,7 @@ import 'flexStyles'; } function getApiClient() { - return connectionManager.getApiClient(currentItem.ServerId); + return window.connectionManager.getApiClient(currentItem.ServerId); } function bindAll(elems, eventName, fn) { @@ -370,7 +369,7 @@ import 'flexStyles'; } function getItem(itemId, serverId) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); if (itemId) { return apiClient.getItem(apiClient.getCurrentUserId(), itemId); @@ -380,7 +379,7 @@ import 'flexStyles'; } function getEditorConfig(itemId, serverId) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); if (itemId) { return apiClient.getJSON(apiClient.getUrl('Items/' + itemId + '/MetadataEditor')); @@ -1068,7 +1067,7 @@ import 'flexStyles'; currentContext = dlg; - init(dlg, connectionManager.getApiClient(serverId)); + init(dlg, window.connectionManager.getApiClient(serverId)); reload(dlg, itemId, serverId); }); @@ -1095,7 +1094,7 @@ import 'flexStyles'; currentContext = elem; - init(elem, connectionManager.getApiClient(serverId)); + init(elem, window.connectionManager.getApiClient(serverId)); reload(elem, itemId, serverId); focusManager.autoFocus(elem); diff --git a/src/components/multiSelect/multiSelect.js b/src/components/multiSelect/multiSelect.js index fdce40ab86..e7ce440f06 100644 --- a/src/components/multiSelect/multiSelect.js +++ b/src/components/multiSelect/multiSelect.js @@ -1,7 +1,6 @@ import browser from 'browser'; import appHost from 'apphost'; import loading from 'loading'; -import connectionManager from 'connectionManager'; import globalize from 'globalize'; import dom from 'dom'; import 'css!./multiSelect'; @@ -170,7 +169,7 @@ import 'css!./multiSelect'; } function showMenuForSelectedItems(e) { - const apiClient = connectionManager.currentApiClient(); + const apiClient = window.connectionManager.currentApiClient(); apiClient.getCurrentUser().then(user => { const menuItems = []; diff --git a/src/components/nowPlayingBar/nowPlayingBar.js b/src/components/nowPlayingBar/nowPlayingBar.js index 7aa8c623b3..a7cbe1d9c0 100644 --- a/src/components/nowPlayingBar/nowPlayingBar.js +++ b/src/components/nowPlayingBar/nowPlayingBar.js @@ -7,7 +7,6 @@ import playbackManager from 'playbackManager'; import nowPlayingHelper from 'nowPlayingHelper'; import appHost from 'apphost'; import dom from 'dom'; -import connectionManager from 'connectionManager'; import itemContextMenu from 'itemContextMenu'; import 'paper-icon-button-light'; import 'emby-ratingbutton'; @@ -452,7 +451,7 @@ import 'emby-ratingbutton'; if (item.SeriesPrimaryImageTag) { options.tag = item.SeriesPrimaryImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } } @@ -460,12 +459,12 @@ import 'emby-ratingbutton'; if (item.SeriesThumbImageTag) { options.tag = item.SeriesThumbImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } if (item.ParentThumbImageTag) { options.tag = item.ParentThumbImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options); } } @@ -482,12 +481,12 @@ import 'emby-ratingbutton'; if (item.ImageTags && item.ImageTags[options.type]) { options.tag = item.ImageTags[options.type]; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options); } if (item.AlbumId && item.AlbumPrimaryImageTag) { options.tag = item.AlbumPrimaryImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); } return null; @@ -548,7 +547,7 @@ import 'emby-ratingbutton'; if (nowPlayingItem.Id) { if (isRefreshing) { - const apiClient = connectionManager.getApiClient(nowPlayingItem.ServerId); + const apiClient = window.connectionManager.getApiClient(nowPlayingItem.ServerId); apiClient.getItem(apiClient.getCurrentUserId(), nowPlayingItem.Id).then(function (item) { const userData = item.UserData || {}; const likes = userData.Likes == null ? '' : userData.Likes; diff --git a/src/components/playback/mediasession.js b/src/components/playback/mediasession.js index 5c7ddf45dd..2478c52d6e 100644 --- a/src/components/playback/mediasession.js +++ b/src/components/playback/mediasession.js @@ -1,7 +1,6 @@ import playbackManager from 'playbackManager'; import nowPlayingHelper from 'nowPlayingHelper'; import events from 'events'; -import connectionManager from 'connectionManager'; /* eslint-disable indent */ // Reports media playback to the device for lock screen control @@ -16,16 +15,16 @@ import connectionManager from 'connectionManager'; } else if (options.type === 'Primary' && item.SeriesPrimaryImageTag) { options.tag = item.SeriesPrimaryImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } else if (options.type === 'Thumb') { if (item.SeriesThumbImageTag) { options.tag = item.SeriesThumbImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } else if (item.ParentThumbImageTag) { options.tag = item.ParentThumbImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options); } } @@ -38,11 +37,11 @@ import connectionManager from 'connectionManager'; if (item.ImageTags && item.ImageTags[options.type]) { options.tag = item.ImageTags[options.type]; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.Id, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.Id, options); } else if (item.AlbumId && item.AlbumPrimaryImageTag) { options.tag = item.AlbumPrimaryImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); } return null; diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 3b4099d540..4291c90d8a 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -6,7 +6,6 @@ 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'; @@ -69,7 +68,7 @@ function reportPlayback(playbackManagerInstance, state, player, reportPlaylist, addPlaylistToPlaybackReport(playbackManagerInstance, info, player, serverId); } - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); const reportPlaybackPromise = apiClient[method](info); // Notify that report has been sent reportPlaybackPromise.then(() => { @@ -106,7 +105,7 @@ function normalizeName(t) { } function getItemsForPlayback(serverId, query) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); if (query.Ids && query.Ids.split(',').length === 1) { const itemId = query.Ids.split(','); @@ -874,7 +873,7 @@ class PlaybackManager { const promises = players.filter(displayPlayerIndividually).map(getPlayerTargets); return Promise.all(promises).then(function (responses) { - return connectionManager.currentApiClient().getCurrentUser().then(function (user) { + return window.connectionManager.currentApiClient().getCurrentUser().then(function (user) { const targets = []; targets.push({ @@ -1372,7 +1371,7 @@ class PlaybackManager { function getSavedMaxStreamingBitrate(apiClient, mediaType) { if (!apiClient) { // This should hopefully never happen - apiClient = connectionManager.currentApiClient(); + apiClient = window.connectionManager.currentApiClient(); } const endpointInfo = apiClient.getSavedEndpointInfo() || {}; @@ -1395,7 +1394,7 @@ class PlaybackManager { const mediaType = playerData.streamInfo ? playerData.streamInfo.mediaType : null; const currentItem = self.currentItem(player); - const apiClient = currentItem ? connectionManager.getApiClient(currentItem.ServerId) : connectionManager.currentApiClient(); + const apiClient = currentItem ? window.connectionManager.getApiClient(currentItem.ServerId) : window.connectionManager.currentApiClient(); return getSavedMaxStreamingBitrate(apiClient, mediaType); }; @@ -1409,7 +1408,7 @@ class PlaybackManager { const mediaType = playerData.streamInfo ? playerData.streamInfo.mediaType : null; const currentItem = self.currentItem(player); - const apiClient = currentItem ? connectionManager.getApiClient(currentItem.ServerId) : connectionManager.currentApiClient(); + const apiClient = currentItem ? window.connectionManager.getApiClient(currentItem.ServerId) : window.connectionManager.currentApiClient(); const endpointInfo = apiClient.getSavedEndpointInfo() || {}; return appSettings.enableAutomaticBitrateDetection(endpointInfo.IsInNetwork, mediaType); @@ -1421,7 +1420,7 @@ class PlaybackManager { return player.setMaxStreamingBitrate(options); } - const apiClient = connectionManager.getApiClient(self.currentItem(player).ServerId); + const apiClient = window.connectionManager.getApiClient(self.currentItem(player).ServerId); apiClient.getEndpointInfo().then(function (endpointInfo) { const playerData = getPlayerData(player); @@ -1691,7 +1690,7 @@ class PlaybackManager { const subtitleStreamIndex = params.SubtitleStreamIndex == null ? getPlayerData(player).subtitleStreamIndex : params.SubtitleStreamIndex; let currentMediaSource = self.currentMediaSource(player); - const apiClient = connectionManager.getApiClient(currentItem.ServerId); + const apiClient = window.connectionManager.getApiClient(currentItem.ServerId); if (ticks) { ticks = parseInt(ticks); @@ -1847,7 +1846,7 @@ class PlaybackManager { }, queryOptions)); } else if (firstItem.Type === 'Episode' && items.length === 1 && getPlayer(firstItem, options).supportsProgress !== false) { promise = new Promise(function (resolve, reject) { - const apiClient = connectionManager.getApiClient(firstItem.ServerId); + const apiClient = window.connectionManager.getApiClient(firstItem.ServerId); apiClient.getCurrentUser().then(function (user) { if (!user.Configuration.EnableNextEpisodeAutoPlay || !firstItem.SeriesId) { @@ -2078,7 +2077,7 @@ class PlaybackManager { return playOther(items, options, user); } - const apiClient = connectionManager.getApiClient(firstItem.ServerId); + const apiClient = window.connectionManager.getApiClient(firstItem.ServerId); return getIntros(firstItem, apiClient, options).then(function (introsResult) { const introItems = introsResult.Items; @@ -2141,14 +2140,14 @@ class PlaybackManager { const mediaType = item.MediaType; const onBitrateDetectionFailure = function () { - return playAfterBitrateDetect(getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId), mediaType), item, playOptions, onPlaybackStartedFn); + return playAfterBitrateDetect(getSavedMaxStreamingBitrate(window.connectionManager.getApiClient(item.ServerId), mediaType), item, playOptions, onPlaybackStartedFn); }; if (!isServerItem(item) || itemHelper.isLocalItem(item)) { return onBitrateDetectionFailure(); } - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.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) { @@ -2267,7 +2266,7 @@ class PlaybackManager { return Promise.all([promise, player.getDeviceProfile(item)]).then(function (responses) { const deviceProfile = responses[1]; - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); const mediaSourceId = playOptions.mediaSourceId; const audioStreamIndex = playOptions.audioStreamIndex; @@ -2312,11 +2311,11 @@ class PlaybackManager { const startPosition = options.startPositionTicks || 0; const mediaType = options.mediaType || item.MediaType; const player = getPlayer(item, options); - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); // Call this just to ensure the value is recorded, it is needed with getSavedMaxStreamingBitrate return apiClient.getEndpointInfo().then(function () { - const maxBitrate = getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId), mediaType); + const maxBitrate = getSavedMaxStreamingBitrate(window.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) { @@ -2332,11 +2331,11 @@ class PlaybackManager { const mediaType = options.mediaType || item.MediaType; // TODO: Remove the true forceLocalPlayer hack const player = getPlayer(item, options, true); - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); // Call this just to ensure the value is recorded, it is needed with getSavedMaxStreamingBitrate return apiClient.getEndpointInfo().then(function () { - const maxBitrate = getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId), mediaType); + const maxBitrate = getSavedMaxStreamingBitrate(window.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) { @@ -2720,7 +2719,7 @@ class PlaybackManager { const queueDirectToPlayer = player && !enableLocalPlaylistManagement(player); if (queueDirectToPlayer) { - const apiClient = connectionManager.getApiClient(items[0].ServerId); + const apiClient = window.connectionManager.getApiClient(items[0].ServerId); player.getDeviceProfile(items[0]).then(function (profile) { setStreamUrls(items, profile, self.getMaxStreamingBitrate(player), apiClient, 0).then(function () { @@ -3170,13 +3169,13 @@ class PlaybackManager { streamInfo.lastMediaInfoQuery = new Date().getTime(); - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); if (!apiClient.isMinServerVersion('3.2.70.7')) { return; } - connectionManager.getApiClient(serverId).getLiveStreamMediaInfo(liveStreamId).then(function (info) { + window.connectionManager.getApiClient(serverId).getLiveStreamMediaInfo(liveStreamId).then(function (info) { mediaSource.MediaStreams = info.MediaStreams; events.trigger(player, 'mediastreamschange'); }, function () { @@ -3233,7 +3232,7 @@ class PlaybackManager { return Promise.reject(); } - const apiClient = connectionManager.getApiClient(nextItem.item.ServerId); + const apiClient = window.connectionManager.getApiClient(nextItem.item.ServerId); return apiClient.getItem(apiClient.getCurrentUserId(), nextItem.item.Id); } @@ -3374,7 +3373,7 @@ class PlaybackManager { return player.playTrailers(item); } - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); const instance = this; @@ -3406,7 +3405,7 @@ class PlaybackManager { } getSubtitleUrl(textStream, serverId) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return !textStream.IsExternalUrl ? apiClient.getUrl(textStream.DeliveryUrl) : textStream.DeliveryUrl; } @@ -3486,7 +3485,7 @@ class PlaybackManager { return player.instantMix(item); } - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); const options = {}; options.UserId = apiClient.getCurrentUserId(); diff --git a/src/components/playback/playersettingsmenu.js b/src/components/playback/playersettingsmenu.js index cd227afcb4..77f22b6b6c 100644 --- a/src/components/playback/playersettingsmenu.js +++ b/src/components/playback/playersettingsmenu.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; import actionsheet from 'actionsheet'; import playbackManager from 'playbackManager'; import globalize from 'globalize'; @@ -251,7 +250,7 @@ export function show(options) { return showWithUser(options, player, null); } - var apiClient = connectionManager.getApiClient(currentItem.ServerId); + var apiClient = window.connectionManager.getApiClient(currentItem.ServerId); return apiClient.getCurrentUser().then(function (user) { return showWithUser(options, player, user); }); diff --git a/src/components/playbackSettings/playbackSettings.js b/src/components/playbackSettings/playbackSettings.js index 66e1ae777f..782e3d38e1 100644 --- a/src/components/playbackSettings/playbackSettings.js +++ b/src/components/playbackSettings/playbackSettings.js @@ -5,7 +5,6 @@ import focusManager from 'focusManager'; import qualityoptions from 'qualityoptions'; import globalize from 'globalize'; import loading from 'loading'; -import connectionManager from 'connectionManager'; import events from 'events'; import 'emby-select'; import 'emby-checkbox'; @@ -258,7 +257,7 @@ import 'emby-checkbox'; function onSubmit(e) { const self = this; - const apiClient = connectionManager.getApiClient(self.options.serverId); + const apiClient = window.connectionManager.getApiClient(self.options.serverId); const userId = self.options.userId; const userSettings = self.options.userSettings; @@ -305,7 +304,7 @@ import 'emby-checkbox'; loading.show(); const userId = self.options.userId; - const apiClient = connectionManager.getApiClient(self.options.serverId); + const apiClient = window.connectionManager.getApiClient(self.options.serverId); const userSettings = self.options.userSettings; apiClient.getUser(userId).then(user => { diff --git a/src/components/playerstats/playerstats.js b/src/components/playerstats/playerstats.js index 23a84310fb..28181756a3 100644 --- a/src/components/playerstats/playerstats.js +++ b/src/components/playerstats/playerstats.js @@ -1,7 +1,6 @@ import events from 'events'; import globalize from 'globalize'; import playbackManager from 'playbackManager'; -import connectionManager from 'connectionManager'; import syncPlayManager from 'syncPlayManager'; import playMethodHelper from 'playMethodHelper'; import layoutManager from 'layoutManager'; @@ -95,7 +94,7 @@ import 'css!./playerstats'; return Promise.resolve(instance.lastSession); } - const apiClient = connectionManager.getApiClient(playbackManager.currentItem(player).ServerId); + const apiClient = window.connectionManager.getApiClient(playbackManager.currentItem(player).ServerId); return apiClient.getSessions({ deviceId: apiClient.deviceId() @@ -386,7 +385,7 @@ import 'css!./playerstats'; name: 'Original Media Info' }); - var apiClient = connectionManager.getApiClient(playbackManager.currentItem(player).ServerId); + var apiClient = window.connectionManager.getApiClient(playbackManager.currentItem(player).ServerId); if (syncPlayManager.isSyncPlayEnabled() && apiClient.isMinServerVersion('10.6.0')) { categories.push({ stats: getSyncPlayStats(), diff --git a/src/components/playlisteditor/playlisteditor.js b/src/components/playlisteditor/playlisteditor.js index 78f0cf3dec..dda9436a29 100644 --- a/src/components/playlisteditor/playlisteditor.js +++ b/src/components/playlisteditor/playlisteditor.js @@ -3,7 +3,6 @@ import dialogHelper from 'dialogHelper'; import loading from 'loading'; import layoutManager from 'layoutManager'; import playbackManager from 'playbackManager'; -import connectionManager from 'connectionManager'; import * as userSettings from 'userSettings'; import appRouter from 'appRouter'; import globalize from 'globalize'; @@ -22,7 +21,7 @@ import 'emby-button'; const panel = dom.parentWithClass(this, 'dialog'); const playlistId = panel.querySelector('#selectPlaylistToAddTo').value; - const apiClient = connectionManager.getApiClient(currentServerId); + const apiClient = window.connectionManager.getApiClient(currentServerId); if (playlistId) { userSettings.set('playlisteditor-lastplaylistid', playlistId); @@ -113,7 +112,7 @@ import 'emby-button'; EnableTotalRecordCount: false }; - const apiClient = connectionManager.getApiClient(currentServerId); + const apiClient = window.connectionManager.getApiClient(currentServerId); apiClient.getItems(apiClient.getCurrentUserId(), options).then(result => { let html = ''; diff --git a/src/components/recordingcreator/recordingbutton.js b/src/components/recordingcreator/recordingbutton.js index 9f102e2f9c..dc7da836da 100644 --- a/src/components/recordingcreator/recordingbutton.js +++ b/src/components/recordingcreator/recordingbutton.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; import dom from 'dom'; import recordingHelper from 'recordingHelper'; import 'paper-icon-button-light'; @@ -53,7 +52,7 @@ class RecordingButton { } refresh(serverId, itemId) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); const self = this; apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) { self.refreshItem(item); diff --git a/src/components/recordingcreator/recordingcreator.js b/src/components/recordingcreator/recordingcreator.js index 9cb4e41d2e..27ad0584d5 100644 --- a/src/components/recordingcreator/recordingcreator.js +++ b/src/components/recordingcreator/recordingcreator.js @@ -2,7 +2,6 @@ import dialogHelper from 'dialogHelper'; import globalize from 'globalize'; import layoutManager from 'layoutManager'; import mediaInfo from 'mediaInfo'; -import connectionManager from 'connectionManager'; import require from 'require'; import loading from 'loading'; import scrollHelper from 'scrollHelper'; @@ -103,7 +102,7 @@ function renderRecording(context, defaultTimer, program, apiClient, refreshRecor function reload(context, programId, serverId, refreshRecordingStateOnly) { loading.show(); - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); const promise1 = apiClient.getNewLiveTvTimerDefaults({ programId: programId }); const promise2 = apiClient.getLiveTvProgram(programId, apiClient.getCurrentUserId()); @@ -119,7 +118,7 @@ function reload(context, programId, serverId, refreshRecordingStateOnly) { function executeCloseAction(action, programId, serverId) { if (action === 'play') { import('playbackManager').then(({ default: playbackManager }) => { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); apiClient.getLiveTvProgram(programId, apiClient.getCurrentUserId()).then(function (item) { playbackManager.play({ diff --git a/src/components/recordingcreator/recordingeditor.js b/src/components/recordingcreator/recordingeditor.js index 096ea3b62c..37b55e4eec 100644 --- a/src/components/recordingcreator/recordingeditor.js +++ b/src/components/recordingcreator/recordingeditor.js @@ -1,7 +1,6 @@ import dialogHelper from 'dialogHelper'; import globalize from 'globalize'; import layoutManager from 'layoutManager'; -import connectionManager from 'connectionManager'; import loading from 'loading'; import scrollHelper from 'scrollHelper'; import 'scrollStyles'; @@ -41,7 +40,7 @@ function closeDialog(isDeleted) { function onSubmit(e) { const form = this; - const apiClient = connectionManager.getApiClient(currentServerId); + const apiClient = window.connectionManager.getApiClient(currentServerId); apiClient.getLiveTvTimer(currentItemId).then(function (item) { item.PrePaddingSeconds = form.querySelector('#txtPrePaddingMinutes').value * 60; @@ -61,7 +60,7 @@ function init(context) { }); context.querySelector('.btnCancelRecording').addEventListener('click', function () { - const apiClient = connectionManager.getApiClient(currentServerId); + const apiClient = window.connectionManager.getApiClient(currentServerId); deleteTimer(apiClient, currentItemId).then(function () { closeDialog(true); @@ -75,7 +74,7 @@ function reload(context, id) { loading.show(); currentItemId = id; - const apiClient = connectionManager.getApiClient(currentServerId); + const apiClient = window.connectionManager.getApiClient(currentServerId); apiClient.getLiveTvTimer(id).then(function (result) { renderTimer(context, result, apiClient); loading.hide(); diff --git a/src/components/recordingcreator/recordingfields.js b/src/components/recordingcreator/recordingfields.js index d9d7c0098c..9b3f0d16a3 100644 --- a/src/components/recordingcreator/recordingfields.js +++ b/src/components/recordingcreator/recordingfields.js @@ -1,5 +1,4 @@ import globalize from 'globalize'; -import connectionManager from 'connectionManager'; import serverNotifications from 'serverNotifications'; import loading from 'loading'; import dom from 'dom'; @@ -46,7 +45,7 @@ function loadData(parent, program, apiClient) { function fetchData(instance) { const options = instance.options; - const apiClient = connectionManager.getApiClient(options.serverId); + const apiClient = window.connectionManager.getApiClient(options.serverId); options.parent.querySelector('.recordingFields').classList.remove('hide'); return apiClient.getLiveTvProgram(options.programId, apiClient.getCurrentUserId()).then(function (program) { @@ -197,7 +196,7 @@ function onRecordChange(e) { const self = this; const options = this.options; - const apiClient = connectionManager.getApiClient(options.serverId); + const apiClient = window.connectionManager.getApiClient(options.serverId); const button = dom.parentWithTag(e.target, 'BUTTON'); const isChecked = !button.querySelector('.material-icons').classList.contains('recordingIcon-active'); @@ -236,7 +235,7 @@ function onRecordSeriesChange(e) { const self = this; const options = this.options; - const apiClient = connectionManager.getApiClient(options.serverId); + const apiClient = window.connectionManager.getApiClient(options.serverId); const button = dom.parentWithTag(e.target, 'BUTTON'); const isChecked = !button.querySelector('.material-icons').classList.contains('recordingIcon-active'); diff --git a/src/components/recordingcreator/recordinghelper.js b/src/components/recordingcreator/recordinghelper.js index 13359de2bc..495378106c 100644 --- a/src/components/recordingcreator/recordinghelper.js +++ b/src/components/recordingcreator/recordinghelper.js @@ -1,6 +1,5 @@ import globalize from 'globalize'; import loading from 'loading'; -import connectionManager from 'connectionManager'; /*eslint prefer-const: "error"*/ @@ -40,7 +39,7 @@ function cancelTimerWithConfirmation(timerId, serverId) { }).then(function () { loading.show(); - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); cancelTimer(apiClient, timerId, true).then(resolve, reject); }, reject); }); @@ -60,7 +59,7 @@ function cancelSeriesTimerWithConfirmation(timerId, serverId) { }).then(function () { loading.show(); - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); apiClient.cancelLiveTvSeriesTimer(timerId).then(function () { import('toast').then(({default: toast}) => { toast(globalize.translate('SeriesCancelled')); @@ -141,7 +140,7 @@ function showMultiCancellationPrompt(serverId, programId, timerId, timerStatus, buttons: items }).then(function (result) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); if (result === 'canceltimer') { loading.show(); @@ -167,7 +166,7 @@ function showMultiCancellationPrompt(serverId, programId, timerId, timerStatus, } function toggleRecording(serverId, programId, timerId, timerStatus, seriesTimerId) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); const hasTimer = timerId && timerStatus !== 'Cancelled'; if (seriesTimerId && hasTimer) { // cancel diff --git a/src/components/recordingcreator/seriesrecordingeditor.js b/src/components/recordingcreator/seriesrecordingeditor.js index 48fbbcf22c..e3a6ae6853 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.js +++ b/src/components/recordingcreator/seriesrecordingeditor.js @@ -1,7 +1,6 @@ import dialogHelper from 'dialogHelper'; import globalize from 'globalize'; import layoutManager from 'layoutManager'; -import connectionManager from 'connectionManager'; import loading from 'loading'; import scrollHelper from 'scrollHelper'; import datetime from 'datetime'; @@ -64,7 +63,7 @@ function closeDialog(isDeleted) { function onSubmit(e) { const form = this; - const apiClient = connectionManager.getApiClient(currentServerId); + const apiClient = window.connectionManager.getApiClient(currentServerId); apiClient.getLiveTvSeriesTimer(currentItemId).then(function (item) { item.PrePaddingSeconds = form.querySelector('#txtPrePaddingMinutes').value * 60; @@ -92,7 +91,7 @@ function init(context) { }); context.querySelector('.btnCancelRecording').addEventListener('click', function () { - const apiClient = connectionManager.getApiClient(currentServerId); + const apiClient = window.connectionManager.getApiClient(currentServerId); deleteTimer(apiClient, currentItemId).then(function () { closeDialog(true); }); @@ -102,7 +101,7 @@ function init(context) { } function reload(context, id) { - const apiClient = connectionManager.getApiClient(currentServerId); + const apiClient = window.connectionManager.getApiClient(currentServerId); loading.show(); if (typeof id === 'string') { diff --git a/src/components/refreshdialog/refreshdialog.js b/src/components/refreshdialog/refreshdialog.js index 1ec0517448..e5ceb1e6e0 100644 --- a/src/components/refreshdialog/refreshdialog.js +++ b/src/components/refreshdialog/refreshdialog.js @@ -2,7 +2,6 @@ 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'; @@ -66,7 +65,7 @@ function onSubmit(e) { const dlg = dom.parentWithClass(e.target, 'dialog'); const options = instance.options; - const apiClient = connectionManager.getApiClient(options.serverId); + const apiClient = window.connectionManager.getApiClient(options.serverId); const replaceAllMetadata = dlg.querySelector('#selectMetadataRefreshMode').value === 'all'; diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 8d6c53cead..a9385222e3 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -5,7 +5,6 @@ import imageLoader from 'imageLoader'; import playbackManager from 'playbackManager'; import nowPlayingHelper from 'nowPlayingHelper'; import events from 'events'; -import connectionManager from 'connectionManager'; import appHost from 'apphost'; import globalize from 'globalize'; import layoutManager from 'layoutManager'; @@ -96,18 +95,18 @@ function seriesImageUrl(item, options) { options.type = options.type || 'Primary'; if (options.type === 'Primary' && item.SeriesPrimaryImageTag) { options.tag = item.SeriesPrimaryImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } if (options.type === 'Thumb') { if (item.SeriesThumbImageTag) { options.tag = item.SeriesThumbImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } if (item.ParentThumbImageTag) { options.tag = item.ParentThumbImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options); } } @@ -120,12 +119,12 @@ function imageUrl(item, options) { if (item.ImageTags && item.ImageTags[options.type]) { options.tag = item.ImageTags[options.type]; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options); } if (item.AlbumId && item.AlbumPrimaryImageTag) { options.tag = item.AlbumPrimaryImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); } return null; @@ -216,7 +215,7 @@ function updateNowPlayingInfo(context, state, serverId) { openAlbum: false, positionTo: contextButton }; - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (fullItem) { apiClient.getCurrentUser().then(function (user) { contextButton.addEventListener('click', function () { diff --git a/src/components/search/searchresults.js b/src/components/search/searchresults.js index 64be0e3e87..d35868d433 100644 --- a/src/components/search/searchresults.js +++ b/src/components/search/searchresults.js @@ -1,6 +1,5 @@ import layoutManager from 'layoutManager'; import globalize from 'globalize'; -import connectionManager from 'connectionManager'; import cardBuilder from 'cardBuilder'; import appRouter from 'appRouter'; import 'emby-scroller'; @@ -606,7 +605,7 @@ class SearchResults { embed(options.element, this, options); } search(value) { - const apiClient = connectionManager.getApiClient(this.options.serverId); + const apiClient = window.connectionManager.getApiClient(this.options.serverId); search(this, apiClient, this.options.element, value); } diff --git a/src/components/shortcuts.js b/src/components/shortcuts.js index 5bd65ae1d9..2959fd3372 100644 --- a/src/components/shortcuts.js +++ b/src/components/shortcuts.js @@ -7,7 +7,6 @@ import playbackManager from 'playbackManager'; import inputManager from 'inputManager'; -import connectionManager from 'connectionManager'; import appRouter from 'appRouter'; import globalize from 'globalize'; import dom from 'dom'; @@ -81,7 +80,7 @@ import recordingHelper from 'recordingHelper'; const id = button.getAttribute('data-id'); const type = button.getAttribute('data-type'); - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); if (type === 'Timer') { return apiClient.getLiveTvTimer(id); @@ -111,7 +110,7 @@ import recordingHelper from 'recordingHelper'; } import('itemContextMenu').then(({default: itemContextMenu}) => { - connectionManager.getApiClient(item.ServerId).getCurrentUser().then(user => { + window.connectionManager.getApiClient(item.ServerId).getCurrentUser().then(user => { itemContextMenu.show(Object.assign({ item: item, play: true, @@ -280,7 +279,7 @@ import recordingHelper from 'recordingHelper'; } function playTrailer(item) { - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); apiClient.getLocalTrailers(apiClient.getCurrentUserId(), item.Id).then(trailers => { playbackManager.play({ items: trailers }); @@ -288,7 +287,7 @@ import recordingHelper from 'recordingHelper'; } function editItem(item, serverId) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return new Promise((resolve, reject) => { const serverId = apiClient.serverInfo().Id; diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 82f541a116..87e6e41b7b 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -4,7 +4,6 @@ */ import dialogHelper from 'dialogHelper'; import inputManager from 'inputManager'; -import connectionManager from 'connectionManager'; import layoutManager from 'layoutManager'; import focusManager from 'focusManager'; import browser from 'browser'; @@ -85,7 +84,7 @@ function getBackdropImageUrl(item, options, apiClient) { * @returns {string} URL of the item's image. */ function getImgUrl(item, user) { - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); const imageOptions = {}; if (item.BackdropImageTags && item.BackdropImageTags.length) { diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index dfd7f9446c..2ade9966cb 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -2,7 +2,6 @@ import dialogHelper from 'dialogHelper'; import layoutManager from 'layoutManager'; import globalize from 'globalize'; import * as userSettings from 'userSettings'; -import connectionManager from 'connectionManager'; import loading from 'loading'; import focusManager from 'focusManager'; import dom from 'dom'; @@ -21,7 +20,7 @@ let hasChanges; function downloadRemoteSubtitles(context, id) { let url = 'Items/' + currentItem.Id + '/RemoteSearch/Subtitles/' + id; - let apiClient = connectionManager.getApiClient(currentItem.ServerId); + let apiClient = window.connectionManager.getApiClient(currentItem.ServerId); apiClient.ajax({ type: 'POST', @@ -55,7 +54,7 @@ function deleteLocalSubtitle(context, index) { let itemId = currentItem.Id; let url = 'Videos/' + itemId + '/Subtitles/' + index; - let apiClient = connectionManager.getApiClient(currentItem.ServerId); + let apiClient = window.connectionManager.getApiClient(currentItem.ServerId); apiClient.ajax({ @@ -243,7 +242,7 @@ function searchForSubtitles(context, language) { loading.show(); - let apiClient = connectionManager.getApiClient(currentItem.ServerId); + let apiClient = window.connectionManager.getApiClient(currentItem.ServerId); let url = apiClient.getUrl('Items/' + currentItem.Id + '/RemoteSearch/Subtitles/' + language); apiClient.getJSON(url).then(function (results) { @@ -356,7 +355,7 @@ function centerFocus(elem, horiz, on) { function showEditorInternal(itemId, serverId, template) { hasChanges = false; - let apiClient = connectionManager.getApiClient(serverId); + let apiClient = window.connectionManager.getApiClient(serverId); return apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) { let dialogOptions = { removeOnClose: true, diff --git a/src/components/subtitlesettings/subtitlesettings.js b/src/components/subtitlesettings/subtitlesettings.js index 46760be4c8..0e2c4e3661 100644 --- a/src/components/subtitlesettings/subtitlesettings.js +++ b/src/components/subtitlesettings/subtitlesettings.js @@ -4,7 +4,6 @@ import appSettings from 'appSettings'; import focusManager from 'focusManager'; import layoutManager from 'layoutManager'; import loading from 'loading'; -import connectionManager from 'connectionManager'; import subtitleAppearanceHelper from 'subtitleAppearanceHelper'; import settingsHelper from 'settingsHelper'; import dom from 'dom'; @@ -232,7 +231,7 @@ export class SubtitleSettings { loading.show(); const userId = self.options.userId; - const apiClient = connectionManager.getApiClient(self.options.serverId); + const apiClient = window.connectionManager.getApiClient(self.options.serverId); const userSettings = self.options.userSettings; apiClient.getUser(userId).then(function (user) { @@ -256,7 +255,7 @@ export class SubtitleSettings { onSubmit(e) { const self = this; - const apiClient = connectionManager.getApiClient(self.options.serverId); + const apiClient = window.connectionManager.getApiClient(self.options.serverId); const userId = self.options.userId; const userSettings = self.options.userSettings; diff --git a/src/components/syncPlay/groupSelectionMenu.js b/src/components/syncPlay/groupSelectionMenu.js index 360aa0b0c2..655dc76010 100644 --- a/src/components/syncPlay/groupSelectionMenu.js +++ b/src/components/syncPlay/groupSelectionMenu.js @@ -1,5 +1,4 @@ import events from 'events'; -import connectionManager from 'connectionManager'; import playbackManager from 'playbackManager'; import syncPlayManager from 'syncPlayManager'; import loading from 'loading'; @@ -172,8 +171,8 @@ export function show (button) { }); }); - const apiClient = connectionManager.currentApiClient(); - connectionManager.user(apiClient).then((user) => { + const apiClient = window.connectionManager.currentApiClient(); + window.connectionManager.user(apiClient).then((user) => { if (syncPlayEnabled) { showLeaveGroupSelection(button, user, apiClient); } else { diff --git a/src/components/syncPlay/syncPlayManager.js b/src/components/syncPlay/syncPlayManager.js index 2366172a79..68949aeeaf 100644 --- a/src/components/syncPlay/syncPlayManager.js +++ b/src/components/syncPlay/syncPlayManager.js @@ -4,7 +4,6 @@ */ import events from 'events'; -import connectionManager from 'connectionManager'; import playbackManager from 'playbackManager'; import timeSyncManager from 'timeSyncManager'; import toast from 'toast'; @@ -128,7 +127,7 @@ class SyncPlayManager { // Report ping if (this.syncEnabled) { - const apiClient = connectionManager.currentApiClient(); + const apiClient = window.connectionManager.currentApiClient(); const sessionId = getActivePlayerId(); if (!sessionId) { @@ -660,7 +659,7 @@ class SyncPlayManager { * Overrides PlaybackManager's unpause method. */ playRequest (player) { - var apiClient = connectionManager.currentApiClient(); + var apiClient = window.connectionManager.currentApiClient(); apiClient.requestSyncPlayStart(); } @@ -668,7 +667,7 @@ class SyncPlayManager { * Overrides PlaybackManager's pause method. */ pauseRequest (player) { - var apiClient = connectionManager.currentApiClient(); + var apiClient = window.connectionManager.currentApiClient(); apiClient.requestSyncPlayPause(); // Pause locally as well, to give the user some little control playbackManager._localUnpause(player); @@ -678,7 +677,7 @@ class SyncPlayManager { * Overrides PlaybackManager's seek method. */ seekRequest (PositionTicks, player) { - var apiClient = connectionManager.currentApiClient(); + var apiClient = window.connectionManager.currentApiClient(); apiClient.requestSyncPlaySeek({ PositionTicks: PositionTicks }); diff --git a/src/components/syncPlay/timeSyncManager.js b/src/components/syncPlay/timeSyncManager.js index e219fb0413..6ded631de3 100644 --- a/src/components/syncPlay/timeSyncManager.js +++ b/src/components/syncPlay/timeSyncManager.js @@ -4,7 +4,6 @@ */ import events from 'events'; -import connectionManager from 'connectionManager'; /** * Time estimation @@ -114,7 +113,7 @@ class TimeSyncManager { if (!this.poller) { this.poller = setTimeout(() => { this.poller = null; - const apiClient = connectionManager.currentApiClient(); + const apiClient = window.connectionManager.currentApiClient(); const requestSent = new Date(); apiClient.getServerTime().then((response) => { const responseReceived = new Date(); diff --git a/src/components/themeMediaPlayer.js b/src/components/themeMediaPlayer.js index 8225156bf0..8f288a5348 100644 --- a/src/components/themeMediaPlayer.js +++ b/src/components/themeMediaPlayer.js @@ -1,6 +1,5 @@ import playbackManager from 'playbackManager'; import * as userSettings from 'userSettings'; -import connectionManager from 'connectionManager'; let currentOwnerId; let currentThemeIds = []; @@ -62,7 +61,7 @@ function loadThemeMedia(item) { return; } - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); apiClient.getThemeMedia(apiClient.getCurrentUserId(), item.Id, true).then(function (themeMediaResult) { const ownerId = themeMediaResult.ThemeVideosResult.Items.length ? themeMediaResult.ThemeVideosResult.OwnerId : themeMediaResult.ThemeSongsResult.OwnerId; diff --git a/src/components/tunerPicker.js b/src/components/tunerPicker.js index 13625ddb67..2e7629a3c5 100644 --- a/src/components/tunerPicker.js +++ b/src/components/tunerPicker.js @@ -1,7 +1,6 @@ import dialogHelper from 'dialogHelper'; import dom from 'dom'; import layoutManager from 'layoutManager'; -import connectionManager from 'connectionManager'; import globalize from 'globalize'; import loading from 'loading'; import browser from 'browser'; @@ -163,7 +162,7 @@ function tunerPicker() { scrollHelper.centerFocus.on(dlg.querySelector('.formDialogContent'), false); } - const apiClient = connectionManager.getApiClient(options.serverId); + const apiClient = window.connectionManager.getApiClient(options.serverId); discoverDevices(dlg, apiClient); if (layoutManager.tv) { diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index e28bb03abe..f0c4a82991 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -1,6 +1,5 @@ import dom from 'dom'; import playbackManager from 'playbackManager'; -import connectionManager from 'connectionManager'; import events from 'events'; import mediaInfo from 'mediaInfo'; import layoutManager from 'layoutManager'; @@ -27,7 +26,7 @@ import 'flexStyles'; if (item.SeriesPrimaryImageTag) { options.tag = item.SeriesPrimaryImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } } @@ -35,12 +34,12 @@ import 'flexStyles'; if (item.SeriesThumbImageTag) { options.tag = item.SeriesThumbImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } if (item.ParentThumbImageTag) { options.tag = item.ParentThumbImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options); } } @@ -53,13 +52,13 @@ import 'flexStyles'; if (item.ImageTags && item.ImageTags[options.type]) { options.tag = item.ImageTags[options.type]; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options); } if (options.type === 'Primary') { if (item.AlbumId && item.AlbumPrimaryImageTag) { options.tag = item.AlbumPrimaryImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); } } diff --git a/src/components/userdatabuttons/userdatabuttons.js b/src/components/userdatabuttons/userdatabuttons.js index 2b09095574..6c0cbb8a29 100644 --- a/src/components/userdatabuttons/userdatabuttons.js +++ b/src/components/userdatabuttons/userdatabuttons.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; import globalize from 'globalize'; import dom from 'dom'; import itemHelper from 'itemHelper'; @@ -188,12 +187,12 @@ function markPlayed(link) { } function likes(id, serverId, isLiked) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return apiClient.updateUserItemRating(apiClient.getCurrentUserId(), id, isLiked); } function played(id, serverId, isPlayed) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); const method = isPlayed ? 'markPlayed' : 'markUnplayed'; @@ -201,13 +200,13 @@ function played(id, serverId, isPlayed) { } function favorite(id, serverId, isFavorite) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return apiClient.updateFavoriteStatus(apiClient.getCurrentUserId(), id, isFavorite); } function clearLike(id, serverId) { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return apiClient.clearUserItemRating(apiClient.getCurrentUserId(), id); } diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index a1ce7f489e..8e63faf381 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -7,7 +7,6 @@ import globalize from 'globalize'; import * as datefns from 'date-fns'; import dfnshelper from 'dfnshelper'; import loading from 'loading'; -import connectionManager from 'connectionManager'; import playMethodHelper from 'playMethodHelper'; import cardBuilder from 'cardBuilder'; import imageLoader from 'imageLoader'; @@ -60,7 +59,7 @@ import 'emby-itemscontainer'; confirmText: globalize.translate('ButtonSend') }).then(function (text) { if (text) { - connectionManager.getApiClient(session.ServerId).sendMessageCommand(session.Id, { + window.connectionManager.getApiClient(session.ServerId).sendMessageCommand(session.Id, { Text: text, TimeoutMs: 5e3 }); @@ -73,7 +72,7 @@ import 'emby-itemscontainer'; import('actionsheet').then(({default: actionsheet}) => { const menuItems = []; - if (session.ServerId && session.DeviceId !== connectionManager.deviceId()) { + if (session.ServerId && session.DeviceId !== window.connectionManager.deviceId()) { menuItems.push({ name: globalize.translate('SendMessage'), id: 'sendmessage' @@ -123,9 +122,9 @@ import 'emby-itemscontainer'; } else if (btn.classList.contains('btnSessionSendMessage')) { showSendMessageForm(btn, session); } else if (btn.classList.contains('btnSessionStop')) { - connectionManager.getApiClient(session.ServerId).sendPlayStateCommand(session.Id, 'Stop'); + window.connectionManager.getApiClient(session.ServerId).sendPlayStateCommand(session.Id, 'Stop'); } else if (btn.classList.contains('btnSessionPlayPause') && session.PlayState) { - connectionManager.getApiClient(session.ServerId).sendPlayStateCommand(session.Id, 'PlayPause'); + window.connectionManager.getApiClient(session.ServerId).sendPlayStateCommand(session.Id, 'PlayPause'); } } } @@ -313,7 +312,7 @@ import 'emby-itemscontainer'; btnCssClass = session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length ? '' : ' hide'; html += ''; - btnCssClass = session.ServerId && session.SupportedCommands.indexOf('DisplayMessage') !== -1 && session.DeviceId !== connectionManager.deviceId() ? '' : ' hide'; + btnCssClass = session.ServerId && session.SupportedCommands.indexOf('DisplayMessage') !== -1 && session.DeviceId !== window.connectionManager.deviceId() ? '' : ' hide'; html += ''; html += '
    '; @@ -551,7 +550,7 @@ import 'emby-itemscontainer'; row.classList.remove('playingSession'); } - if (session.ServerId && session.SupportedCommands.indexOf('DisplayMessage') !== -1 && session.DeviceId !== connectionManager.deviceId()) { + if (session.ServerId && session.SupportedCommands.indexOf('DisplayMessage') !== -1 && session.DeviceId !== window.connectionManager.deviceId()) { row.querySelector('.btnSessionSendMessage').classList.remove('hide'); } else { row.querySelector('.btnSessionSendMessage').classList.add('hide'); @@ -565,7 +564,7 @@ import 'emby-itemscontainer'; const btnSessionPlayPause = row.querySelector('.btnSessionPlayPause'); - if (session.ServerId && nowPlayingItem && session.SupportsRemoteControl && session.DeviceId !== connectionManager.deviceId()) { + if (session.ServerId && nowPlayingItem && session.SupportsRemoteControl && session.DeviceId !== window.connectionManager.deviceId()) { btnSessionPlayPause.classList.remove('hide'); row.querySelector('.btnSessionStop').classList.remove('hide'); } else { diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index 7e316df118..ff60f2ee58 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -2,7 +2,6 @@ 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'; @@ -270,7 +269,7 @@ class FavoritesTab { constructor(view, params) { this.view = view; this.params = params; - this.apiClient = connectionManager.currentApiClient(); + this.apiClient = window.connectionManager.currentApiClient(); this.sectionsContainer = view.querySelector('.sections'); createSections(this, this.sectionsContainer, this.apiClient); } diff --git a/src/controllers/hometab.js b/src/controllers/hometab.js index d834e3e233..ff56e08d14 100644 --- a/src/controllers/hometab.js +++ b/src/controllers/hometab.js @@ -1,6 +1,5 @@ import * as userSettings from 'userSettings'; import loading from 'loading'; -import connectionManager from 'connectionManager'; import focusManager from 'focusManager'; import homeSections from 'homeSections'; import 'emby-itemscontainer'; @@ -9,7 +8,7 @@ class HomeTab { constructor(view, params) { this.view = view; this.params = params; - this.apiClient = connectionManager.currentApiClient(); + this.apiClient = window.connectionManager.currentApiClient(); this.sectionsContainer = view.querySelector('.sections'); view.querySelector('.sections').addEventListener('settingschange', onHomeScreenSettingsChanged.bind(this)); } diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index b1781e75f0..012b0ff67b 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -3,7 +3,6 @@ import loading from 'loading'; import appRouter from 'appRouter'; import itemShortcuts from 'itemShortcuts'; import layoutManager from 'layoutManager'; -import connectionManager from 'connectionManager'; import * as userSettings from 'userSettings'; import cardBuilder from 'cardBuilder'; import datetime from 'datetime'; @@ -564,7 +563,7 @@ function renderDetailPageBackdrop(page, item, apiClient) { } function reloadFromItem(instance, page, params, item, user) { - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); Emby.Page.setTitle(''); @@ -797,7 +796,7 @@ function renderNextUp(page, item, user) { return void section.classList.add('hide'); } - connectionManager.getApiClient(item.ServerId).getNextUpEpisodes({ + window.connectionManager.getApiClient(item.ServerId).getNextUpEpisodes({ SeriesId: item.Id, UserId: user.Id }).then(function (result) { @@ -1196,7 +1195,7 @@ function renderSimilarItems(page, item, context) { } similarCollapsible.classList.remove('hide'); - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); const options = { userId: apiClient.getCurrentUserId(), limit: 12, @@ -1310,7 +1309,7 @@ function renderChildren(page, item) { } let promise; - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); const userId = apiClient.getCurrentUserId(); if (item.Type == 'Series') { @@ -1549,7 +1548,7 @@ function renderChannelGuide(page, apiClient, item) { } function renderSeriesSchedule(page, item) { - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); apiClient.getLiveTvPrograms({ UserId: apiClient.getCurrentUserId(), HasAired: false, @@ -1709,7 +1708,7 @@ function renderCollectionItemType(page, parentItem, type, items) { } function renderMusicVideos(page, item, user) { - connectionManager.getApiClient(item.ServerId).getItems(user.Id, { + window.connectionManager.getApiClient(item.ServerId).getItems(user.Id, { SortBy: 'SortName', SortOrder: 'Ascending', IncludeItemTypes: 'MusicVideo', @@ -1729,7 +1728,7 @@ function renderMusicVideos(page, item, user) { } function renderAdditionalParts(page, item, user) { - connectionManager.getApiClient(item.ServerId).getAdditionalVideoParts(user.Id, item.Id).then(function (result) { + window.connectionManager.getApiClient(item.ServerId).getAdditionalVideoParts(user.Id, item.Id).then(function (result) { if (result.Items.length) { page.querySelector('#additionalPartsCollapsible').classList.remove('hide'); const additionalPartsContent = page.querySelector('#additionalPartsContent'); @@ -1774,7 +1773,7 @@ function getVideosHtml(items) { } function renderSpecials(page, item, user) { - connectionManager.getApiClient(item.ServerId).getSpecialFeatures(user.Id, item.Id).then(function (specials) { + window.connectionManager.getApiClient(item.ServerId).getSpecialFeatures(user.Id, item.Id).then(function (specials) { const specialsContent = page.querySelector('#specialsContent'); specialsContent.innerHTML = getVideosHtml(specials); imageLoader.lazyChildren(specialsContent); @@ -1830,7 +1829,7 @@ export default function (view, params) { function reload(instance, page, params) { loading.show(); - const apiClient = params.serverId ? connectionManager.getApiClient(params.serverId) : ApiClient; + const apiClient = params.serverId ? window.connectionManager.getApiClient(params.serverId) : ApiClient; Promise.all([getPromise(apiClient, params), apiClient.getCurrentUser()]).then(([item, user]) => { currentItem = item; @@ -1879,7 +1878,7 @@ export default function (view, params) { const item = currentItem; if (item.Type === 'Program') { - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); return void apiClient.getLiveTvChannel(item.ChannelId, apiClient.getCurrentUserId()).then(function (channel) { playbackManager.play({ items: [channel] @@ -1916,7 +1915,7 @@ export default function (view, params) { function onCancelTimerClick() { import('recordingHelper').then(({ default: recordingHelper }) => { - recordingHelper.cancelTimer(connectionManager.getApiClient(currentItem.ServerId), currentItem.TimerId).then(function () { + recordingHelper.cancelTimer(window.connectionManager.getApiClient(currentItem.ServerId), currentItem.TimerId).then(function () { reload(self, view, params); }); }); @@ -1980,7 +1979,7 @@ export default function (view, params) { let currentItem; const self = this; - const apiClient = params.serverId ? connectionManager.getApiClient(params.serverId) : ApiClient; + const apiClient = params.serverId ? window.connectionManager.getApiClient(params.serverId) : ApiClient; view.querySelectorAll('.btnPlay'); bindAll(view, '.btnPlay', 'click', onPlayClick); bindAll(view, '.btnResume', 'click', onPlayClick); diff --git a/src/controllers/list.js b/src/controllers/list.js index 0027c576f1..fe04fc18e8 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -5,7 +5,6 @@ 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'; @@ -16,7 +15,7 @@ import 'emby-scroller'; function getInitialLiveTvQuery(instance, params) { const query = { - UserId: connectionManager.getApiClient(params.serverId).getCurrentUserId(), + UserId: window.connectionManager.getApiClient(params.serverId).getCurrentUserId(), StartIndex: 0, Fields: 'ChannelInfo,PrimaryImageAspectRatio', Limit: 300 @@ -232,7 +231,7 @@ import 'emby-scroller'; } function getItems(instance, params, item, sortBy, startIndex, limit) { - const apiClient = connectionManager.getApiClient(params.serverId); + const apiClient = window.connectionManager.getApiClient(params.serverId); instance.queryRecursive = false; if (params.type === 'Recordings') { @@ -333,7 +332,7 @@ import 'emby-scroller'; return Promise.resolve(null); } - const apiClient = connectionManager.getApiClient(params.serverId); + const apiClient = window.connectionManager.getApiClient(params.serverId); const itemId = params.genreId || params.musicGenreId || params.studioId || params.personId || params.parentId; if (itemId) { diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 420268ea75..9294c7d9b8 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -7,7 +7,6 @@ import itemHelper from 'itemHelper'; import mediaInfo from 'mediaInfo'; import focusManager from 'focusManager'; import events from 'events'; -import connectionManager from 'connectionManager'; import browser from 'browser'; import globalize from 'globalize'; import appHost from 'apphost'; @@ -30,18 +29,18 @@ import 'css!assets/css/videoosd'; options.type = options.type || 'Primary'; if (options.type === 'Primary' && item.SeriesPrimaryImageTag) { options.tag = item.SeriesPrimaryImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } if (options.type === 'Thumb') { if (item.SeriesThumbImageTag) { options.tag = item.SeriesThumbImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } if (item.ParentThumbImageTag) { options.tag = item.ParentThumbImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId, options); } } @@ -54,12 +53,12 @@ import 'css!assets/css/videoosd'; if (item.ImageTags && item.ImageTags[options.type]) { options.tag = item.ImageTags[options.type]; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options); } if (options.type === 'Primary' && item.AlbumId && item.AlbumPrimaryImageTag) { options.tag = item.AlbumPrimaryImageTag; - return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); + return window.connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); } return null; @@ -118,7 +117,7 @@ import 'css!assets/css/videoosd'; function getDisplayItem(item) { if (item.Type === 'TvChannel') { - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); return apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (refreshedItem) { return { originalItem: refreshedItem, @@ -142,7 +141,7 @@ import 'css!assets/css/videoosd'; return void view.querySelector('.btnRecord').classList.add('hide'); } - connectionManager.getApiClient(item.ServerId).getCurrentUser().then(function (user) { + window.connectionManager.getApiClient(item.ServerId).getCurrentUser().then(function (user) { if (user.Policy.EnableLiveTvManagement) { import('recordingButton').then(({default: RecordingButton}) => { if (recordingButtonManager) { @@ -1623,7 +1622,7 @@ import 'css!assets/css/videoosd'; const item = currentItem; if (item && item.Chapters && item.Chapters.length && item.Chapters[0].ImageTag) { - const html = getChapterBubbleHtml(connectionManager.getApiClient(item.ServerId), item, item.Chapters, ticks); + const html = getChapterBubbleHtml(window.connectionManager.getApiClient(item.ServerId), item, item.Chapters, ticks); if (html) { return html; diff --git a/src/controllers/session/addServer/index.js b/src/controllers/session/addServer/index.js index 7d3ba7f471..472d1274a9 100644 --- a/src/controllers/session/addServer/index.js +++ b/src/controllers/session/addServer/index.js @@ -36,7 +36,7 @@ import 'emby-button'; function submitServer(page) { loading.show(); const host = page.querySelector('#txtServerHost').value; - ConnectionManager.connectToAddress(host, { + window.connectionManager.connectToAddress(host, { enableAutoLogin: appSettings.enableAutoLogin() }).then(function(result) { handleConnectionResult(page, result); diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js index e8541563f0..0c0f0bcdad 100644 --- a/src/controllers/session/login/index.js +++ b/src/controllers/session/login/index.js @@ -1,7 +1,6 @@ import appHost from 'apphost'; import appSettings from 'appSettings'; import dom from 'dom'; -import connectionManager from 'connectionManager'; import loading from 'loading'; import layoutManager from 'layoutManager'; import libraryMenu from 'libraryMenu'; @@ -139,7 +138,7 @@ import 'emby-checkbox'; const serverId = params.serverid; if (serverId) { - return connectionManager.getOrCreateApiClient(serverId); + return window.connectionManager.getOrCreateApiClient(serverId); } return ApiClient; diff --git a/src/controllers/session/selectServer/index.js b/src/controllers/session/selectServer/index.js index b7d7b9d221..6a590fc318 100644 --- a/src/controllers/session/selectServer/index.js +++ b/src/controllers/session/selectServer/index.js @@ -4,7 +4,6 @@ import layoutManager from 'layoutManager'; import libraryMenu from 'libraryMenu'; import appSettings from 'appSettings'; import focusManager from 'focusManager'; -import connectionManager from 'connectionManager'; import globalize from 'globalize'; import actionSheet from 'actionsheet'; import dom from 'dom'; @@ -113,7 +112,7 @@ import 'emby-button'; export default function (view, params) { function connectToServer(server) { loading.show(); - connectionManager.connectToServer(server, { + window.connectionManager.connectToServer(server, { enableAutoLogin: appSettings.enableAutoLogin() }).then(function (result) { loading.hide(); @@ -145,7 +144,7 @@ import 'emby-button'; function deleteServer(server) { loading.show(); - connectionManager.deleteServer(server.Id).then(function () { + window.connectionManager.deleteServer(server.Id).then(function () { loading.hide(); loadServers(); }); @@ -187,7 +186,7 @@ import 'emby-button'; function loadServers() { loading.show(); - connectionManager.getAvailableServers().then(onServersRetrieved); + window.connectionManager.getAvailableServers().then(onServersRetrieved); } let servers; diff --git a/src/elements/emby-itemscontainer/emby-itemscontainer.js b/src/elements/emby-itemscontainer/emby-itemscontainer.js index ef30d1e663..7d8f941603 100644 --- a/src/elements/emby-itemscontainer/emby-itemscontainer.js +++ b/src/elements/emby-itemscontainer/emby-itemscontainer.js @@ -1,6 +1,5 @@ import itemShortcuts from 'itemShortcuts'; import inputManager from 'inputManager'; -import connectionManager from 'connectionManager'; import playbackManager from 'playbackManager'; import imageLoader from 'imageLoader'; import layoutManager from 'layoutManager'; @@ -103,7 +102,7 @@ import 'webcomponents'; } const serverId = el.getAttribute('data-serverid'); - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); loading.show(); diff --git a/src/elements/emby-playstatebutton/emby-playstatebutton.js b/src/elements/emby-playstatebutton/emby-playstatebutton.js index 322b7b3722..8d17ddf9ff 100644 --- a/src/elements/emby-playstatebutton/emby-playstatebutton.js +++ b/src/elements/emby-playstatebutton/emby-playstatebutton.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; import serverNotifications from 'serverNotifications'; import events from 'events'; import globalize from 'globalize'; @@ -24,7 +23,7 @@ import EmbyButtonPrototype from 'emby-button'; const button = this; const id = button.getAttribute('data-id'); const serverId = button.getAttribute('data-serverid'); - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); if (!button.classList.contains('playstatebutton-played')) { apiClient.markPlayed(apiClient.getCurrentUserId(), id, new Date()); diff --git a/src/elements/emby-ratingbutton/emby-ratingbutton.js b/src/elements/emby-ratingbutton/emby-ratingbutton.js index 06a88e6ea1..865d918b45 100644 --- a/src/elements/emby-ratingbutton/emby-ratingbutton.js +++ b/src/elements/emby-ratingbutton/emby-ratingbutton.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; import serverNotifications from 'serverNotifications'; import events from 'events'; import globalize from 'globalize'; @@ -28,7 +27,7 @@ import EmbyButtonPrototype from 'emby-button'; const button = this; const id = button.getAttribute('data-id'); const serverId = button.getAttribute('data-serverid'); - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); let likes = this.getAttribute('data-likes'); const isFavorite = this.getAttribute('data-isfavorite') === 'true'; diff --git a/src/libraries/screensavermanager.js b/src/libraries/screensavermanager.js index 5c24ec63d0..68a7dda73b 100644 --- a/src/libraries/screensavermanager.js +++ b/src/libraries/screensavermanager.js @@ -2,7 +2,6 @@ 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() { @@ -85,7 +84,7 @@ function ScreenSaverManager() { this.show = function () { let isLoggedIn; - const apiClient = connectionManager.currentApiClient(); + const apiClient = window.connectionManager.currentApiClient(); if (apiClient && apiClient.isLoggedIn()) { isLoggedIn = true; diff --git a/src/plugins/backdropScreensaver/plugin.js b/src/plugins/backdropScreensaver/plugin.js index 61b5b808a5..917d8f48a3 100644 --- a/src/plugins/backdropScreensaver/plugin.js +++ b/src/plugins/backdropScreensaver/plugin.js @@ -1,5 +1,4 @@ /* eslint-disable indent */ -import connectionManager from 'connectionManager'; class BackdropScreensaver { constructor() { @@ -21,7 +20,7 @@ class BackdropScreensaver { Limit: 200 }; - const apiClient = connectionManager.currentApiClient(); + const apiClient = window.connectionManager.currentApiClient(); apiClient.getItems(apiClient.getCurrentUserId(), query).then((result) => { if (result.Items.length) { import('slideshow').then(({default: Slideshow}) => { diff --git a/src/plugins/bookPlayer/plugin.js b/src/plugins/bookPlayer/plugin.js index 415bd7b958..0303275be2 100644 --- a/src/plugins/bookPlayer/plugin.js +++ b/src/plugins/bookPlayer/plugin.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; import loading from 'loading'; import keyboardnavigation from 'keyboardnavigation'; import dialogHelper from 'dialogHelper'; @@ -243,7 +242,7 @@ export class BookPlayer { }; const serverId = item.ServerId; - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return new Promise((resolve, reject) => { import('epubjs').then(({default: epubjs}) => { diff --git a/src/plugins/chromecastPlayer/chromecastHelper.js b/src/plugins/chromecastPlayer/chromecastHelper.js index 7aac76c544..e92fa4471b 100644 --- a/src/plugins/chromecastPlayer/chromecastHelper.js +++ b/src/plugins/chromecastPlayer/chromecastHelper.js @@ -221,8 +221,8 @@ function getCachedValue(key) { return null; } -events.on(ConnectionManager, 'localusersignedin', clearCache); -events.on(ConnectionManager, 'localusersignedout', clearCache); +events.on(window.connectionManager, 'localusersignedin', clearCache); +events.on(window.connectionManager, 'localusersignedout', clearCache); export default { getServerAddress: getServerAddress diff --git a/src/plugins/chromecastPlayer/plugin.js b/src/plugins/chromecastPlayer/plugin.js index 5ba8596089..91bc5a9df2 100644 --- a/src/plugins/chromecastPlayer/plugin.js +++ b/src/plugins/chromecastPlayer/plugin.js @@ -1,7 +1,6 @@ import appSettings from 'appSettings'; import * as userSettings from 'userSettings'; import playbackManager from 'playbackManager'; -import connectionManager from 'connectionManager'; import globalize from 'globalize'; import events from 'events'; import castSenderApiLoader from 'castSenderApiLoader'; @@ -325,11 +324,11 @@ class CastPlayer { let apiClient; if (message.options && message.options.ServerId) { - apiClient = connectionManager.getApiClient(message.options.ServerId); + apiClient = window.connectionManager.getApiClient(message.options.ServerId); } else if (message.options && message.options.items && message.options.items.length) { - apiClient = connectionManager.getApiClient(message.options.items[0].ServerId); + apiClient = window.connectionManager.getApiClient(message.options.items[0].ServerId); } else { - apiClient = connectionManager.currentApiClient(); + apiClient = window.connectionManager.currentApiClient(); } message = Object.assign(message, { @@ -673,7 +672,7 @@ class ChromecastPlayer { playWithCommand(options, command) { if (!options.items) { - const apiClient = connectionManager.getApiClient(options.serverId); + const apiClient = window.connectionManager.getApiClient(options.serverId); const instance = this; return apiClient.getItem(apiClient.getCurrentUserId(), options.ids[0]).then(function (item) { @@ -985,7 +984,7 @@ class ChromecastPlayer { } shuffle(item) { - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); const userId = apiClient.getCurrentUserId(); const instance = this; @@ -998,7 +997,7 @@ class ChromecastPlayer { } instantMix(item) { - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); const userId = apiClient.getCurrentUserId(); const instance = this; @@ -1036,7 +1035,7 @@ class ChromecastPlayer { } const instance = this; - const apiClient = connectionManager.getApiClient(options.serverId); + const apiClient = window.connectionManager.getApiClient(options.serverId); return getItemsForPlayback(apiClient, { Ids: options.ids.join(',') diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 58c8624e34..e616303c11 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -5,7 +5,6 @@ import loading from 'loading'; import dom from 'dom'; import playbackManager from 'playbackManager'; import appRouter from 'appRouter'; -import connectionManager from 'connectionManager'; import { bindEventsToHlsPlayer, destroyHlsPlayer, @@ -325,7 +324,7 @@ function tryRemoveElement(elem) { console.debug(`prefetching hls playlist: ${hlsPlaylistUrl}`); - return connectionManager.getApiClient(item.ServerId).ajax({ + return window.connectionManager.getApiClient(item.ServerId).ajax({ type: 'GET', url: hlsPlaylistUrl @@ -1036,7 +1035,7 @@ function tryRemoveElement(elem) { */ renderSsaAss(videoElement, track, item) { const attachments = this._currentPlayOptions.mediaSource.MediaAttachments || []; - const apiClient = connectionManager.getApiClient(item); + const apiClient = window.connectionManager.getApiClient(item); const htmlVideoPlayer = this; const options = { video: videoElement, diff --git a/src/plugins/photoPlayer/plugin.js b/src/plugins/photoPlayer/plugin.js index d8e55fa67e..a7a4ab3760 100644 --- a/src/plugins/photoPlayer/plugin.js +++ b/src/plugins/photoPlayer/plugin.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; export default class PhotoPlayer { constructor() { @@ -13,7 +12,7 @@ export default class PhotoPlayer { import('slideshow').then(({default: slideshow}) => { var index = options.startIndex || 0; - var apiClient = connectionManager.currentApiClient(); + var apiClient = window.connectionManager.currentApiClient(); apiClient.getCurrentUser().then(function(result) { var newSlideShow = new slideshow({ showTitle: false, diff --git a/src/plugins/playAccessValidation/plugin.js b/src/plugins/playAccessValidation/plugin.js index a9fbeda9a9..c64b63332b 100644 --- a/src/plugins/playAccessValidation/plugin.js +++ b/src/plugins/playAccessValidation/plugin.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; import globalize from 'globalize'; function showErrorMessage() { @@ -25,7 +24,7 @@ class PlayAccessValidation { return Promise.resolve(); } - return connectionManager.getApiClient(serverId).getCurrentUser().then(function (user) { + return window.connectionManager.getApiClient(serverId).getCurrentUser().then(function (user) { if (user.Policy.EnableMediaPlayback) { return Promise.resolve(); } diff --git a/src/plugins/sessionPlayer/plugin.js b/src/plugins/sessionPlayer/plugin.js index 7e5dc9f4f7..c319c38f3c 100644 --- a/src/plugins/sessionPlayer/plugin.js +++ b/src/plugins/sessionPlayer/plugin.js @@ -1,7 +1,6 @@ import playbackManager from 'playbackManager'; import events from 'events'; import serverNotifications from 'serverNotifications'; -import connectionManager from 'connectionManager'; function getActivePlayerId() { const info = playbackManager.getPlayerInfo(); @@ -54,10 +53,10 @@ function getCurrentApiClient(instance) { const currentServerId = instance.currentServerId; if (currentServerId) { - return connectionManager.getApiClient(currentServerId); + return window.connectionManager.getApiClient(currentServerId); } - return connectionManager.currentApiClient(); + return window.connectionManager.currentApiClient(); } function sendCommandByName(instance, name, options) { diff --git a/src/scripts/autoThemes.js b/src/scripts/autoThemes.js index 75309f377b..e278a80dc9 100644 --- a/src/scripts/autoThemes.js +++ b/src/scripts/autoThemes.js @@ -1,12 +1,11 @@ import * as userSettings from 'userSettings'; import skinManager from 'skinManager'; -import connectionManager from 'connectionManager'; import events from 'events'; // Set the default theme when loading skinManager.setTheme(userSettings.theme()); // Set the user's prefered theme when signing in -events.on(connectionManager, 'localusersignedin', function (e, user) { +events.on(window.connectionManager, 'localusersignedin', function (e, user) { skinManager.setTheme(userSettings.theme()); }); diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index 70d42d0782..28421c59b9 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -48,7 +48,7 @@ export function onServerChanged(userId, accessToken, apiClient) { } export function logout() { - ConnectionManager.logout().then(function () { + window.connectionManager.logout().then(function () { let loginPage; if (AppInfo.isNativeApp) { diff --git a/src/scripts/deleteHelper.js b/src/scripts/deleteHelper.js index 44876c75b3..a18d951e60 100644 --- a/src/scripts/deleteHelper.js +++ b/src/scripts/deleteHelper.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; import confirm from 'confirm'; import appRouter from 'appRouter'; import globalize from 'globalize'; @@ -15,7 +14,7 @@ export function deleteItem(options) { const item = options.item; const parentId = item.SeasonId || item.SeriesId || item.ParentId; - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); return confirm({ diff --git a/src/scripts/itembynamedetailpage.js b/src/scripts/itembynamedetailpage.js index f77bb73652..8254d18add 100644 --- a/src/scripts/itembynamedetailpage.js +++ b/src/scripts/itembynamedetailpage.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; import listView from 'listView'; import cardBuilder from 'cardBuilder'; import imageLoader from 'imageLoader'; @@ -358,7 +357,7 @@ function getItemsFunction(options, item) { query.Fields += ',' + fields; } - const apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = window.connectionManager.getApiClient(item.ServerId); if (query.IncludeItemTypes === 'MusicArtist') { query.IncludeItemTypes = null; diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 07d59c76cc..ae7c80b63f 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -1,7 +1,6 @@ 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'; @@ -57,10 +56,10 @@ import 'flexStyles'; function getCurrentApiClient() { if (currentUser && currentUser.localUser) { - return connectionManager.getApiClient(currentUser.localUser.ServerId); + return window.connectionManager.getApiClient(currentUser.localUser.ServerId); } - return connectionManager.currentApiClient(); + return window.connectionManager.currentApiClient(); } function lazyLoadViewMenuBarImages() { @@ -749,7 +748,7 @@ import 'flexStyles'; } if (requiresUserRefresh) { - connectionManager.user(getCurrentApiClient()).then(updateUserInHeader); + window.connectionManager.user(getCurrentApiClient()).then(updateUserInHeader); } } @@ -791,7 +790,7 @@ import 'flexStyles'; if (user) { Promise.resolve(user); } else { - connectionManager.user(getCurrentApiClient()).then(function (user) { + window.connectionManager.user(getCurrentApiClient()).then(function (user) { refreshLibraryInfoInDrawer(user); updateLibraryMenu(user.localUser); }); @@ -957,8 +956,8 @@ import 'flexStyles'; renderHeader(); - events.on(connectionManager, 'localusersignedin', function (e, user) { - const currentApiClient = connectionManager.getApiClient(user.ServerId); + events.on(window.connectionManager, 'localusersignedin', function (e, user) { + const currentApiClient = window.connectionManager.getApiClient(user.ServerId); currentDrawerType = null; currentUser = { @@ -967,13 +966,13 @@ import 'flexStyles'; loadNavDrawer(); - connectionManager.user(currentApiClient).then(function (user) { + window.connectionManager.user(currentApiClient).then(function (user) { currentUser = user; updateUserInHeader(user); }); }); - events.on(connectionManager, 'localusersignedout', function () { + events.on(window.connectionManager, 'localusersignedout', function () { currentUser = {}; updateUserInHeader(); }); diff --git a/src/scripts/serverNotifications.js b/src/scripts/serverNotifications.js index 2566d148f6..c14a133d6c 100644 --- a/src/scripts/serverNotifications.js +++ b/src/scripts/serverNotifications.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; import playbackManager from 'playbackManager'; import syncPlayManager from 'syncPlayManager'; import events from 'events'; @@ -208,8 +207,8 @@ function bindEvents(apiClient) { events.on(apiClient, 'message', onMessageReceived); } -connectionManager.getApiClients().forEach(bindEvents); -events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) { +window.connectionManager.getApiClients().forEach(bindEvents); +events.on(window.connectionManager, 'apiclientcreated', function (e, newApiClient) { bindEvents(newApiClient); }); diff --git a/src/scripts/site.js b/src/scripts/site.js index 0e1e44251c..b37e1651b5 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -56,30 +56,23 @@ window.pageIdOn = function(eventName, id, fn) { var AppInfo = {}; function initClient() { - function defineConnectionManager(connectionManager) { - window.ConnectionManager = connectionManager; - define('connectionManager', [], function () { - return connectionManager; - }); - } - function bindConnectionManagerEvents(connectionManager, events, userSettings) { window.Events = events; - connectionManager.currentApiClient = function () { + window.connectionManager.currentApiClient = function () { if (!localApiClient) { - var server = connectionManager.getLastUsedServer(); + var server = window.connectionManager.getLastUsedServer(); if (server) { - localApiClient = connectionManager.getApiClient(server.Id); + localApiClient = window.connectionManager.getApiClient(server.Id); } } return localApiClient; }; - connectionManager.onLocalUserSignedIn = function (user) { - localApiClient = connectionManager.getApiClient(user.ServerId); + window.connectionManager.onLocalUserSignedIn = function (user) { + localApiClient = window.connectionManager.getApiClient(user.ServerId); window.ApiClient = localApiClient; return userSettings.setUserInfo(user.Id, localApiClient); }; @@ -99,10 +92,9 @@ function initClient() { return Promise.all(promises).then(function (responses) { var capabilities = Dashboard.capabilities(appHost); - var connectionManager = new ConnectionManager(credentialProviderInstance, appHost.appName(), appHost.appVersion(), appHost.deviceName(), appHost.deviceId(), capabilities); + window.connectionManager = new ConnectionManager(credentialProviderInstance, appHost.appName(), appHost.appVersion(), appHost.deviceName(), appHost.deviceId(), capabilities); - defineConnectionManager(connectionManager); - bindConnectionManagerEvents(connectionManager, events, userSettings); + bindConnectionManagerEvents(window.connectionManager, events, userSettings); if (!AppInfo.isNativeApp) { console.debug('loading ApiClient singleton'); @@ -115,7 +107,7 @@ function initClient() { apiClient.enableAutomaticNetworking = false; apiClient.manualAddressOnly = true; - connectionManager.addApiClient(apiClient); + window.connectionManager.addApiClient(apiClient); window.ApiClient = apiClient; localApiClient = apiClient; @@ -225,8 +217,8 @@ function initClient() { require(['autoFocuser'], function(autoFocuser) { autoFocuser.enable(); }); - require(['globalize', 'connectionManager', 'events'], function (globalize, connectionManager, events) { - events.on(connectionManager, 'localusersignedin', globalize.updateCurrentCulture); + require(['globalize', 'events'], function (globalize, events) { + events.on(window.connectionManager, 'localusersignedin', globalize.updateCurrentCulture); }); }); }); @@ -374,7 +366,7 @@ function initClient() { require(['playerSelectionMenu']); - var apiClient = window.ConnectionManager && window.ConnectionManager.currentApiClient(); + var apiClient = window.connectionManager && window.connectionManager.currentApiClient(); if (apiClient) { fetch(apiClient.getUrl('Branding/Css')) .then(function(response) { @@ -675,9 +667,6 @@ function initClient() { define('mouseManager', [scriptsPath + '/mouseManager'], returnFirstDependency); define('scrollManager', [componentsPath + '/scrollManager'], returnFirstDependency); define('autoFocuser', [componentsPath + '/autoFocuser'], returnFirstDependency); - define('connectionManager', [], function () { - return ConnectionManager; - }); define('apiClientResolver', [], function () { return function () { return window.ApiClient; diff --git a/src/scripts/taskbutton.js b/src/scripts/taskbutton.js index 6df7ee848d..43a46301aa 100644 --- a/src/scripts/taskbutton.js +++ b/src/scripts/taskbutton.js @@ -1,13 +1,12 @@ import events from 'events'; import serverNotifications from 'serverNotifications'; -import connectionManager from 'connectionManager'; import globalize from 'globalize'; import 'emby-button'; export default function (options) { function pollTasks() { - connectionManager.getApiClient(serverId).getScheduledTasks({ + window.connectionManager.getApiClient(serverId).getScheduledTasks({ IsEnabled: true }).then(updateTasks); } @@ -64,7 +63,7 @@ export default function (options) { } function onScheduledTaskMessageConfirmed(id) { - connectionManager.getApiClient(serverId).startScheduledTask(id).then(pollTasks); + window.connectionManager.getApiClient(serverId).startScheduledTask(id).then(pollTasks); } function onButtonClick() { @@ -82,13 +81,13 @@ export default function (options) { const serverId = ApiClient.serverId(); function onPollIntervalFired() { - if (!connectionManager.getApiClient(serverId).isMessageChannelOpen()) { + if (!window.connectionManager.getApiClient(serverId).isMessageChannelOpen()) { pollTasks(); } } function startInterval() { - const apiClient = connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); if (pollInterval) { clearInterval(pollInterval); @@ -98,7 +97,7 @@ export default function (options) { } function stopInterval() { - connectionManager.getApiClient(serverId).sendMessage('ScheduledTasksInfoStop'); + window.connectionManager.getApiClient(serverId).sendMessage('ScheduledTasksInfoStop'); if (pollInterval) { clearInterval(pollInterval); From 73c7dfa0dd69bee69276b2dbdabacc36f8cb5b22 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 30 Aug 2020 06:24:40 +0200 Subject: [PATCH 123/582] Remove implicit ConnectionManager global from ESLint config --- .eslintrc.js | 1 - 1 file changed, 1 deletion(-) diff --git a/.eslintrc.js b/.eslintrc.js index 7de812ea6e..dfb65cb4d4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -84,7 +84,6 @@ module.exports = { 'ApiClient': 'writable', 'AppInfo': 'writable', 'chrome': 'writable', - 'ConnectionManager': 'writable', 'DlnaProfilePage': 'writable', 'Dashboard': 'writable', 'DashboardPage': 'writable', From dfc906e7d31ac06cd006ff4cb1a230437964e0f2 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 30 Aug 2020 14:57:36 +0900 Subject: [PATCH 124/582] fix build issues --- package.json | 3 ++- src/plugins/comicsPlayer/plugin.js | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ee1907d4f3..0154195c9e 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,8 @@ "stylelint-order": "^4.1.0", "webpack": "^4.44.1", "webpack-merge": "^4.2.2", - "webpack-stream": "^5.2.1" + "webpack-stream": "^5.2.1", + "worker-plugin": "^5.0.0" }, "dependencies": { "alameda": "^1.4.0", diff --git a/src/plugins/comicsPlayer/plugin.js b/src/plugins/comicsPlayer/plugin.js index 33e8e8d251..7881a6d060 100644 --- a/src/plugins/comicsPlayer/plugin.js +++ b/src/plugins/comicsPlayer/plugin.js @@ -3,7 +3,6 @@ import loading from 'loading'; import dialogHelper from 'dialogHelper'; import keyboardnavigation from 'keyboardnavigation'; import appRouter from 'appRouter'; -import 'css!../slideshow/style'; import * as libarchive from 'libarchive'; export class ComicsPlayer { From 924928fa0f9918616b95088ed3ccc24c749ebf42 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 30 Aug 2020 15:01:10 +0900 Subject: [PATCH 125/582] update yarn.lock --- yarn.lock | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/yarn.lock b/yarn.lock index 4f8dd29c45..f1c6f1d581 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12041,6 +12041,13 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" +worker-plugin@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/worker-plugin/-/worker-plugin-5.0.0.tgz#113b5fe1f4a5d6a957cecd29915bedafd70bb537" + integrity sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ== + dependencies: + loader-utils "^1.1.0" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" From 6b776aac44919a35fe88228f85b322e6699ffab5 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 30 Aug 2020 15:11:20 +0900 Subject: [PATCH 126/582] fix linting error with url global --- src/plugins/comicsPlayer/plugin.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/comicsPlayer/plugin.js b/src/plugins/comicsPlayer/plugin.js index 7881a6d060..5f9546b9fe 100644 --- a/src/plugins/comicsPlayer/plugin.js +++ b/src/plugins/comicsPlayer/plugin.js @@ -191,6 +191,7 @@ class ArchiveSource { }); for (let file of files) { + /* eslint-disable-next-line compat/compat */ let url = URL.createObjectURL(file.file); this.urls.push(url); } From 0db000e5b51b1a66cb7b6150879314b8e3d2918e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 30 Aug 2020 13:47:37 +0200 Subject: [PATCH 127/582] Fix CSS selector for top OSD header --- src/assets/css/videoosd.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index f0792c2c45..b2446d5d48 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -24,7 +24,7 @@ -webkit-touch-callout: none; } -.osdHeader { +.skinHeader-withBackground.osdHeader { transition: opacity 0.3s ease-out; position: relative; z-index: 1; From 3aa8304efc0c05115e5224d864344e1f5eb7b860 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sun, 30 Aug 2020 12:41:59 +0000 Subject: [PATCH 128/582] Bump html-webpack-plugin from 4.3.0 to 4.4.0 Bumps [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) from 4.3.0 to 4.4.0. - [Release notes](https://github.com/jantimon/html-webpack-plugin/releases) - [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/master/CHANGELOG.md) - [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v4.3.0...v4.4.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 39c7937bd7..6dfe8fe5a1 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "gulp-sass": "^4.0.2", "gulp-sourcemaps": "^2.6.5", "gulp-terser": "^1.4.0", - "html-webpack-plugin": "^4.3.0", + "html-webpack-plugin": "^4.4.0", "lazypipe": "^1.0.2", "node-sass": "^4.13.1", "postcss-loader": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index d3aee5fe79..3e61547551 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5544,10 +5544,10 @@ html-tags@^3.1.0: resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== -html-webpack-plugin@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz#53bf8f6d696c4637d5b656d3d9863d89ce8174fd" - integrity sha512-C0fzKN8yQoVLTelcJxZfJCE+aAvQiY2VUf3UuKrR4a9k5UMWYOtpDLsaXwATbcVCnI05hUS7L9ULQHWLZhyi3w== +html-webpack-plugin@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.4.0.tgz#ed6ab2b5e4e476ffa3c5ce52505aa31a42075029" + integrity sha512-FHeg2JN9ar1kaR0SLgbF07w46o/n1nGszyByYlPxqEymSpl82vA8EX0leE67kZr3GJnOBh8BbBzmCLO6O1YTIQ== dependencies: "@types/html-minifier-terser" "^5.0.0" "@types/tapable" "^1.0.5" From 5ca7342e3eb27bc90632eba6f95af53cf2bf18f0 Mon Sep 17 00:00:00 2001 From: millallo Date: Sun, 30 Aug 2020 10:41:51 +0000 Subject: [PATCH 129/582] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index f89c8b3a65..df11607245 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -292,7 +292,7 @@ "HeaderInstantMix": "Mix Istantaneo", "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.", + "HeaderKodiMetadataHelp": "Per abilitare o disabilitare i metadati NFO, editare la libreria e configurare l'opzione nella sezione Metadati.", "HeaderLatestEpisodes": "Ultimi Episodi Aggiunti", "HeaderLatestMedia": "Ultimi Media", "HeaderLatestMovies": "Ultimi Film Aggiunti", From 9e4e8a911f107ad2e7b146e1a150dc7dc87471d3 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 30 Aug 2020 23:14:39 +0900 Subject: [PATCH 130/582] fix spelling error --- src/controllers/itemDetails/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index fe5f8419d6..cc970c856c 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -573,7 +573,7 @@ import 'emby-select'; // Start rendering the artwork first renderImage(page, item); - // Same some screen real estate in TV mode + // Save some screen real estate in TV mode if (!layoutManager.tv) { renderLogo(page, item, apiClient); renderDetailPageBackdrop(page, item, apiClient); From 24b1f67005044352f044e9f5a23989b935bc44ca Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sun, 30 Aug 2020 16:27:13 +0000 Subject: [PATCH 131/582] Bump html-webpack-plugin from 4.4.0 to 4.4.1 Bumps [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) from 4.4.0 to 4.4.1. - [Release notes](https://github.com/jantimon/html-webpack-plugin/releases) - [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/master/CHANGELOG.md) - [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v4.4.0...v4.4.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 6dfe8fe5a1..a0b84400e9 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "gulp-sass": "^4.0.2", "gulp-sourcemaps": "^2.6.5", "gulp-terser": "^1.4.0", - "html-webpack-plugin": "^4.4.0", + "html-webpack-plugin": "^4.4.1", "lazypipe": "^1.0.2", "node-sass": "^4.13.1", "postcss-loader": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index 3e61547551..8f9fc1aa40 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5544,10 +5544,10 @@ html-tags@^3.1.0: resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== -html-webpack-plugin@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.4.0.tgz#ed6ab2b5e4e476ffa3c5ce52505aa31a42075029" - integrity sha512-FHeg2JN9ar1kaR0SLgbF07w46o/n1nGszyByYlPxqEymSpl82vA8EX0leE67kZr3GJnOBh8BbBzmCLO6O1YTIQ== +html-webpack-plugin@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.4.1.tgz#61ab85aa1a84ba181443345ebaead51abbb84149" + integrity sha512-nEtdEIsIGXdXGG7MjTTZlmhqhpHU9pJFc1OYxcP36c5/ZKP6b0BJMww2QTvJGQYA9aMxUnjDujpZdYcVOXiBCQ== dependencies: "@types/html-minifier-terser" "^5.0.0" "@types/tapable" "^1.0.5" From e6c2f2ee0838d702c1cc93e87ed1600e40c707c5 Mon Sep 17 00:00:00 2001 From: SaddFox Date: Sun, 30 Aug 2020 17:00:23 +0000 Subject: [PATCH 132/582] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 641d21e8bc..3937f7fc95 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -1355,5 +1355,27 @@ "MessageGetInstalledPluginsError": "Pri pridobivanju seznama trenutno nameščenih dodatkov je prišlo do napake.", "MessagePluginInstallError": "Pri nameščanju dodatka je prišlo do napake.", "PlaybackErrorNoCompatibleStream": "Ta odjemalec ni kompatibilen s predstavnostjo in strežnik ne pošilja kompatibilnega formata predstavnosti.", - "PlaybackRate": "Hitrost predvajanja" + "PlaybackRate": "Hitrost predvajanja", + "PathNotFound": "Poti ni bilo mogoče najti. Prosimo preverite pravilnost poti in poskusite znova.", + "YadifBob": "YADIF Bob", + "Yadif": "YADIF", + "XmlTvSportsCategoriesHelp": "Programi s temi kategorijami bodo prikazani kot športni programi. Ločite več z '|'.", + "XmlTvNewsCategoriesHelp": "Programi s temi kategorijami bodo prikazani kot novice. Ločite več z '|'.", + "XmlTvMovieCategoriesHelp": "Programi s temi kategorijami bodo prikazani kot filmi. Ločite več z '|'.", + "XmlTvKidsCategoriesHelp": "Programi s temi kategorijami bodo prikazani kot programi za otroke. Ločite več z '|'.", + "XmlTvPathHelp": "Pot do XMLTV datoteke. Jellyfin bo periodično preveril to datoteko za posodobitve. Posodabljanje te datoteke je vaša odgovornost.", + "Writer": "Scenarij", + "Writers": "Scenarij", + "ViewAlbumArtist": "Pokaži izvajalca albuma", + "ViewAlbum": "Pokaži album", + "Vertical": "Navpično", + "ValueDiscNumber": "Disk {0}", + "ValueAlbumCount": "{0} albumov", + "UserAgentHelp": "Uporabite HTTP user-agent zaglavje po meri.", + "Upload": "Naloži", + "Up": "Gor", + "Unmute": "Obnovi zvok", + "Uniform": "Obroba", + "Transcoding": "Prekodiranje", + "TrackCount": "{0} skladb" } From 734b3dd38236f2021895856728737b419e7261c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Dardenne?= Date: Tue, 26 May 2020 22:58:27 +0200 Subject: [PATCH 133/582] Show track artists in the list view, except if the artists for all tracks match the album artists --- src/components/listview/listview.js | 14 ++------------ src/controllers/itemDetails/index.js | 13 +++++++++++-- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 11e8e953ae..8fb96f664d 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -370,18 +370,8 @@ import 'emby-playstatebutton'; } } } else { - let showArtist = options.artist === true; - const artistItems = item.ArtistItems; - - if (!showArtist && options.artist !== false) { - if (!artistItems || !artistItems.length) { - showArtist = true; - } else if (artistItems.length > 1 || !containerAlbumArtistIds.includes(artistItems[0].Id)) { - showArtist = true; - } - } - - if (showArtist) { + if (options.artist) { + const artistItems = item.ArtistItems; if (artistItems && item.Type !== 'MusicAlbum') { textlines.push(artistItems.map(a => { return a.Name; diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index b1781e75f0..e5154dcd88 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1337,16 +1337,25 @@ function renderChildren(page, item) { const childrenItemsContainer = page.querySelector('.childrenItemsContainer'); if (item.Type == 'MusicAlbum') { + const equalSet = (arr1, arr2) => arr1.every(x => arr2.indexOf(x) !== -1) && arr1.length === arr2.length; + let showArtist = false; + for (const track of result.Items) { + if (!equalSet(track.ArtistItems.map(x => x.Id), track.AlbumArtists.map(x => x.Id) )) { + showArtist = true; + break; + } + } + const discNumbers = result.Items.map(x => x.ParentIndexNumber); html = listView.getListViewHtml({ items: result.Items, smallIcon: true, - showIndex: true, + showIndex: new Set(discNumbers).size > 1 || (discNumbers.length >= 1 && discNumbers[0] > 1), index: 'disc', showIndexNumberLeft: true, playFromHere: true, action: 'playallfromhere', image: false, - artist: 'auto', + artist: showArtist, containerAlbumArtists: item.AlbumArtists }); isList = true; From afcbe8adbfb342872042e987488379c9b541b470 Mon Sep 17 00:00:00 2001 From: SaddFox Date: Sun, 30 Aug 2020 17:16:07 +0000 Subject: [PATCH 134/582] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 3937f7fc95..8c1cec86a9 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -1377,5 +1377,11 @@ "Unmute": "Obnovi zvok", "Uniform": "Obroba", "Transcoding": "Prekodiranje", - "TrackCount": "{0} skladb" + "TrackCount": "{0} skladb", + "Preview": "Predogled", + "LabelSubtitleVerticalPosition": "Navpična lokacija:", + "LastSeen": "Nazadnje viden {0}", + "PersonRole": "kot {0}", + "ListPaging": "{0}-{1} od {2}", + "WriteAccessRequired": "Jellyfin potrebuje dostop za pisanje v to mapo. Prosimo zagotovite dostop za pisanje in poskusite znova." } From 2ff95140bb33f0573f3f2491dea3f8334c4bfa10 Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Sun, 30 Aug 2020 16:05:29 -0400 Subject: [PATCH 135/582] Merge pull request #1849 from brianjmurrell/patch-1 Add BuildRequires: git to Fedora specfile (cherry picked from commit 5f1af65c2e5694bb2b53e1eca1fd48c50bafb2cb) Signed-off-by: Joshua M. Boniface --- fedora/jellyfin-web.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fedora/jellyfin-web.spec b/fedora/jellyfin-web.spec index b8c77f2a1f..1d85e5ae6b 100644 --- a/fedora/jellyfin-web.spec +++ b/fedora/jellyfin-web.spec @@ -11,6 +11,8 @@ Source0: jellyfin-web-%{version}.tar.gz %if 0%{?centos} BuildRequires: yarn +# sadly the yarn RPM at https://dl.yarnpkg.com/rpm/ uses git but doesn't Requires: it +BuildRequires: git %else BuildRequires: nodejs-yarn %endif From d7ac4b6701518e7c279f18eaec431771119440df Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2020 01:54:33 +0000 Subject: [PATCH 136/582] Bump material-design-icons-iconfont from 5.0.1 to 6.0.1 Bumps [material-design-icons-iconfont](https://github.com/jossef/material-design-icons-iconfont) from 5.0.1 to 6.0.1. - [Release notes](https://github.com/jossef/material-design-icons-iconfont/releases) - [Commits](https://github.com/jossef/material-design-icons-iconfont/compare/5.0.1...6.0.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 b696ed582f..9862ef56ba 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "jstree": "^3.3.10", "libarchive.js": "^1.3.0", "libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-smarttv", - "material-design-icons-iconfont": "^5.0.1", + "material-design-icons-iconfont": "^6.0.1", "native-promise-only": "^0.8.0-a", "page": "^1.11.6", "query-string": "^6.13.1", diff --git a/yarn.lock b/yarn.lock index 106811a0ab..57044c8c7f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7041,10 +7041,10 @@ matchdep@^2.0.0: resolve "^1.4.0" stack-trace "0.0.10" -material-design-icons-iconfont@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-5.0.1.tgz#371875ed7fe9c8c520bc7123c3231feeab731c31" - integrity sha512-Xg6rIdGrfySTqiTZ6d+nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA== +material-design-icons-iconfont@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-6.0.1.tgz#e5834ad566105013c68e1348bec7615481645434" + integrity sha512-NDC8gQD0ORRum5dkwwF8hiDzW+y4cROyu213HJa1c7ediok9lsi8TMmmSvbA51WApYbgcdE9X5u0TzgL8n4zTw== mathml-tag-names@^2.0.1, mathml-tag-names@^2.1.3: version "2.1.3" From dde44155ae51e3f64b790b03d1333d68bfb84e32 Mon Sep 17 00:00:00 2001 From: TheGoose Date: Mon, 31 Aug 2020 04:21:12 +0000 Subject: [PATCH 137/582] Translated using Weblate (English (United Kingdom)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_GB/ --- src/strings/en-gb.json | 125 ++++++++++++++++++++++------------------- 1 file changed, 67 insertions(+), 58 deletions(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index d44183a4a8..f37ae4f4c4 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -22,7 +22,7 @@ "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialogueand enter the device information manually.", "OptionEnableExternalContentInSuggestionsHelp": "Allow internet trailers and live TV programs to be included within suggested content.", "OptionFavorite": "Favourites", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honoured but will ignore the byte range header.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "These requests will be honored but will ignore the byte range header.", "PlaceFavoriteChannelsAtBeginning": "Place favourite channels at the beginning", "Programs": "Programs", "TabCatalog": "Catalogue", @@ -68,7 +68,7 @@ "AllowMediaConversionHelp": "Grant or deny access to the convert media feature.", "AllowOnTheFlySubtitleExtraction": "Allow subtitle extraction on the fly", "AllowOnTheFlySubtitleExtractionHelp": "Embedded subtitles can be extracted from videos and delivered to clients in plain text, in order to help prevent video transcoding. On some systems this can take a long time and cause video playback to stall during the extraction process. Disable this to have embedded subtitles burned in with video transcoding when they are not natively supported by the client device.", - "AllowRemoteAccess": "Allow remote connections to this Jellyfin Server.", + "AllowRemoteAccess": "Allow remote connections to this server.", "AllowRemoteAccessHelp": "If unchecked, all remote connections will be blocked.", "AllowedRemoteAddressesHelp": "Comma separated list of IP addresses or IP/netmask entries for networks that will be allowed to connect remotely. If left blank, all remote addresses will be allowed.", "AlwaysPlaySubtitles": "Always Play", @@ -81,7 +81,7 @@ "Ascending": "Ascending", "AspectRatio": "Aspect Ratio", "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", "Backdrop": "Backdrop", "Backdrops": "Backdrops", @@ -155,7 +155,7 @@ "ChannelNumber": "Channel number", "CommunityRating": "Community rating", "Composer": "Composer", - "ConfigureDateAdded": "Configure how date added is determined in the Jellyfin Server dashboard under Library settings", + "ConfigureDateAdded": "Configure how date added is determined in the dashboard under the library settings", "ConfirmDeleteImage": "Delete image?", "ConfirmDeleteItem": "Deleting this item will delete it from both the file system and your media library. Are you sure you wish to continue?", "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", @@ -185,8 +185,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", @@ -229,10 +229,10 @@ "EndsAtValue": "Ends at {0}", "Episodes": "Episodes", "ErrorAddingListingsToSchedulesDirect": "There was an error adding the lineup to your Schedules Direct account. Schedules Direct only allows a limited number of lineups per account. You may need to log into the Schedules Direct website and remove others listings from your account before proceeding.", - "ErrorAddingMediaPathToVirtualFolder": "There was an error adding the media path. Please ensure the path is valid and the Jellyfin Server process has access to that location.", + "ErrorAddingMediaPathToVirtualFolder": "There was an error adding the media path. Please ensure the path is valid and Jellyfin has access to that location.", "ErrorAddingTunerDevice": "There was an error adding the tuner device. Please ensure it is accessible and try again.", "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.", + "ErrorDeletingItem": "There was an error deleting the item from the server. Please check that Jellyfin 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.", "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.", @@ -284,7 +284,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.", "HeaderApp": "App", "HeaderAppearsOn": "Appears On", "HeaderAudioBooks": "Audio Books", @@ -353,7 +353,7 @@ "HeaderInstantMix": "Instant Mix", "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", @@ -460,9 +460,9 @@ "SettingsWarning": "Changing these values may cause instability or connectivity failures. If you experience any problems, we recommend changing them back to default.", "SettingsSaved": "Settings saved.", "Settings": "Settings", - "ServerUpdateNeeded": "This Jellyfin Server needs to be updated. To download the latest version, please visit {0}", - "ServerRestartNeededAfterPluginInstall": "Jellyfin Server will need to be restarted after installing a plugin.", - "ServerNameIsShuttingDown": "Jellyfin Server - {0} is shutting down.", + "ServerUpdateNeeded": "This server needs to be updated. To download the latest version, please visit {0}", + "ServerRestartNeededAfterPluginInstall": "Jellyfin will need to be restarted after installing a plugin.", + "ServerNameIsShuttingDown": "The server at {0} is shutting down.", "SeriesYearToPresent": "{0} - Present", "SeriesSettings": "Series settings", "SeriesRecordingScheduled": "Series recording scheduled.", @@ -495,7 +495,7 @@ "RememberMe": "Remember Me", "ReleaseDate": "Release date", "RefreshMetadata": "Refresh metadata", - "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.", "Refresh": "Refresh", "Recordings": "Recordings", "RecordingScheduled": "Recording scheduled.", @@ -516,9 +516,9 @@ "Premiere": "Premiere", "PreferEmbeddedTitlesOverFileNamesHelp": "This determines the default display title when no internet metadata or local metadata is available.", "PreferEmbeddedTitlesOverFileNames": "Prefer embedded titles over filenames", - "MessagePluginInstalled": "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. The server will need to be restarted for changes to take effect.", "PleaseSelectTwoItems": "Please select at least two items.", - "PleaseRestartServerName": "Please restart Jellyfin Server - {0}.", + "PleaseRestartServerName": "Please restart Jellyfin on {0}.", "PleaseConfirmPluginInstallation": "Please click OK to confirm you've read the above and wish to proceed with the plugin installation.", "PleaseAddAtLeastOneFolder": "Please add at least one folder to this library by clicking the Add button.", "Played": "Played", @@ -553,7 +553,7 @@ "OptionThumb": "Thumb", "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.", + "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.", "OptionSaveMetadataAsHidden": "Save metadata and images as hidden files", "OptionRuntime": "Runtime", "OptionResumable": "Resumable", @@ -567,9 +567,9 @@ "OptionProfileAudio": "Audio", "OptionPremiereDate": "Premiere Date", "OptionPlayCount": "Play Count", - "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\".", "OptionPlainVideoItems": "Display all videos as plain video items", - "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\".", "OptionParentalRating": "Parental Rating", "OptionOnInterval": "On an interval", "OptionNone": "None", @@ -585,7 +585,7 @@ "OptionBlockMovies": "Movies", "OptionBlockChannelContent": "Internet Channel Content", "OptionBanner": "Banner", - "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.", "OptionAutomaticallyGroupSeries": "Automatically merge series that are spread across multiple folders", "OptionArtist": "Artist", "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", @@ -595,7 +595,7 @@ "OptionAllowRemoteSharedDevicesHelp": "DLNA devices are considered shared until a user begins controlling them.", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteControlOthers": "Allow remote control of other users", - "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.", "OptionAllowManageLiveTv": "Allow Live TV recording management", "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.", "OptionAllowLinkSharing": "Allow social media sharing", @@ -623,9 +623,9 @@ "MusicLibraryHelp": "Review the {0}music naming guide{1}.", "Monday": "Monday", "MinutesBefore": "minutes before", - "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.", "MetadataManager": "Metadata Manager", - "MessagePluginInstallDisclaimer": "Plugins built by Jellyfin community members are a great way to enhance your Jellyfin experience with additional features and benefits. Before installing, please be aware of the effects they may have on your Jellyfin Server, such as longer library scans, additional background processing, and decreased system stability.", + "MessagePluginInstallDisclaimer": "Plugins built by community members are a great way to enhance your experience with additional features and benefits. Before installing, please be aware of the effects they may have on your server, such as longer library scans, additional background processing, and decreased system stability.", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessagePleaseWait": "Please wait. This may take a minute.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", @@ -645,8 +645,8 @@ "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.", - "MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this api key? The application's connection to Jellyfin Server will be abruptly terminated.", - "MessageConfirmRestart": "Are you sure you wish to restart Jellyfin Server?", + "MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this API key? The application's connection to this server will be abruptly terminated.", + "MessageConfirmRestart": "Are you sure you wish to restart Jellyfin?", "MessageConfirmRemoveMediaLocation": "Are you sure you wish to remove this location?", "MessageConfirmDeleteTunerDevice": "Are you sure you wish to delete this device?", "MessageConfirmDeleteGuideProvider": "Are you sure you wish to delete this guide provider?", @@ -681,7 +681,7 @@ "LeaveBlankToNotSetAPassword": "You can leave this field blank to set no password.", "LearnHowYouCanContribute": "Learn how you can contribute.", "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.", - "LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.", + "LabelffmpegPathHelp": "The path to the ffmpeg application file or folder containing ffmpeg.", "LabelffmpegPath": "FFmpeg path:", "LabelYear": "Year:", "LabelXDlnaDocHelp": "Determines the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace.", @@ -743,7 +743,7 @@ "EnableFasterAnimationsHelp": "Use faster animations and transitions", "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.", "LabelSaveLocalMetadataHelp": "Saving artwork into media folders will put them in a place where they can be easily edited.", - "LabelRuntimeMinutes": "Run time (minutes):", + "LabelRuntimeMinutes": "Runtime:", "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.", "LabelRemoteClientBitrateLimit": "Internet streaming bitrate limit (Mbps):", "LabelReleaseDate": "Release date:", @@ -830,7 +830,7 @@ "LabelPlaceOfBirth": "Place of birth:", "LabelOverview": "Overview:", "LabelOriginalAspectRatio": "Original aspect ratio:", - "LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music.", + "LabelMusicStreamingTranscodingBitrateHelp": "Specify a maximum bitrate when streaming music.", "LabelMetadataDownloadLanguage": "Preferred download language:", "LabelMetadata": "Metadata:", "LabelKeepUpTo": "Keep up to:", @@ -885,13 +885,13 @@ "LabelTunerType": "Tuner type:", "LabelServerName": "Server name:", "LabelServerHostHelp": "192.168.1.100:8096 or https://myserver.com", - "LabelSeriesRecordingPath": "Series recording path (optional):", + "LabelSeriesRecordingPath": "Series recording path:", "LabelRecordingPathHelp": "Specify the default location to save recordings. If left empty, the server's program data folder will be used.", "LabelRecordingPath": "Default recording path:", "LabelAlbumArtMaxWidth": "Album art max width:", - "LabelCustomCssHelp": "Apply your own custom styling to the web interface.", + "LabelCustomCssHelp": "Apply your own custom styles on the web interface.", "LabelBlastMessageIntervalHelp": "Determines the duration in seconds between blast alive messages.", - "LabelBlastMessageInterval": "Alive message interval (seconds)", + "LabelBlastMessageInterval": "Alive message interval", "LabelBitrate": "Bitrate:", "LabelAudioSampleRate": "Audio sample rate:", "LabelAlbumArtMaxHeight": "Album art max height:", @@ -917,10 +917,10 @@ "LabelEnableHardwareDecodingFor": "Enable hardware decoding for:", "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play content.", "LabelEnableDlnaDebugLoggingHelp": "Create large log files and should only be used as needed for troubleshooting purposes.", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches performed by Jellyfin.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches.", "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.", "InstallingPackage": "Installing {0} (version {1})", - "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.", + "ImportMissingEpisodesHelp": "Information about missing episodes will be imported into your database and displayed within seasons and series. This may cause significantly longer library scans.", "HeaderSubtitleAppearance": "Subtitle Appearance", "LabelProtocol": "Protocol:", "LabelProfileVideoCodecs": "Video codecs:", @@ -937,7 +937,7 @@ "LabelPassword": "Password:", "LabelParentalRating": "Parental rating:", "LabelParentNumber": "Parent number:", - "LabelOptionalNetworkPath": "(Optional) Shared network folder:", + "LabelOptionalNetworkPath": "Shared network folder:", "LabelNewsCategories": "News categories:", "LabelNewPasswordConfirm": "New password confirm:", "LabelNewPassword": "New password:", @@ -958,7 +958,7 @@ "LabelMinResumeDuration": "Minimum resume duration:", "LabelMinBackdropDownloadWidth": "Minimum backdrop download width:", "LabelMethod": "Method:", - "LabelMetadataSaversHelp": "Choose the file formats to save your metadata to.", + "LabelMetadataSaversHelp": "Choose the file formats to use when saving your metadata.", "LabelMetadataSavers": "Metadata savers:", "LabelMetadataReadersHelp": "Rank your preferred local metadata sources in order of priority. The first file found will be read.", "LabelMetadataReaders": "Metadata readers:", @@ -971,7 +971,7 @@ "LabelManufacturerUrl": "Manufacturer URL", "LabelLoginDisclaimerHelp": "A message that will be displayed at the bottom of the login page.", "LabelLockItemToPreventChanges": "Lock this item to prevent future changes", - "LabelLocalHttpServerPortNumberHelp": "The TCP port number that Jellyfin's HTTP server should bind to.", + "LabelLocalHttpServerPortNumberHelp": "The TCP port number for the HTTP server.", "LabelLineup": "Lineup:", "LabelLanguage": "Language:", "LabelLanNetworks": "LAN networks:", @@ -987,32 +987,32 @@ "LabelIconMaxWidth": "Icon maximum width:", "LabelIconMaxHeightHelp": "Maximum resolution of icons exposed via upnp:icon.", "LabelIconMaxHeight": "Icon maximum height:", - "LabelHttpsPortHelp": "The TCP port number that Jellyfin's HTTPS server should bind to.", + "LabelHttpsPortHelp": "The TCP port number for the HTTPS server.", "LabelHttpsPort": "Local HTTPS port number:", "LabelHomeScreenSectionValue": "Home screen section {0}:", "LabelHomeNetworkQuality": "Home network quality:", "LabelHardwareAccelerationType": "Hardware acceleration:", "LabelEncoderPreset": "H264 and H265 encoding preset:", "LabelH264Crf": "H264 encoding CRF:", - "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.", "LabelGroupMoviesIntoCollections": "Group movies into collections", - "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.", "LabelFriendlyName": "Friendly name:", "LabelFormat": "Format:", "LabelForgotPasswordUsernameHelp": "Enter your username, if you remember it.", "LabelFont": "Font:", "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.", - "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>", "LabelEveryXMinutes": "Every:", "LabelEvent": "Event:", "LabelEpisodeNumber": "Episode number:", "LabelEnableSingleImageInDidlLimitHelp": "Some devices will not render properly if multiple images are embedded within Didl.", - "LabelEnableRealtimeMonitorHelp": "Changes to files will be processed immediately, on supported file systems.", + "LabelEnableRealtimeMonitorHelp": "Changes to files will be processed immediately on supported file systems.", "LabelEnableRealtimeMonitor": "Enable real time monitoring", "LabelEnableDlnaServer": "Enable DLNA server", - "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.", "LabelEnableDlnaPlayTo": "Enable DLNA Play To", - "LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval (seconds)", + "LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval", "LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.", "LabelEnableBlastAliveMessages": "Blast alive messages", "LabelEnableAutomaticPortMap": "Enable automatic port mapping", @@ -1028,7 +1028,7 @@ "LabelDisplaySpecialsWithinSeasons": "Display specials within seasons they aired in", "LabelDisplayOrder": "Display order:", "LabelDisplayName": "Display name:", - "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.", "LabelCustomCss": "Custom CSS:", "LabelCustomCertificatePathHelp": "Path to a PKCS #12 file containing a certificate and private key to enable TLS support on a custom domain.", "LabelCurrentPassword": "Current password:", @@ -1053,7 +1053,7 @@ "LabelAudioChannels": "Audio channels:", "LabelAudioBitrate": "Audio bitrate:", "LabelAudioBitDepth": "Audio bit depth:", - "LabelArtistsHelp": "Separate multiple using ;", + "LabelArtistsHelp": "Separate multiple artists with a semicolon.", "LabelArtists": "Artists:", "LabelAppName": "App name", "LabelAllowedRemoteAddressesMode": "Remote IP address filter mode:", @@ -1108,7 +1108,7 @@ "Overview": "Overview", "LabelLogs": "Logs:", "Whitelist": "Whitelist", - "ServerNameIsRestarting": "Jellyfin Server - {0} is restarting.", + "ServerNameIsRestarting": "The server at {0} is restarting.", "OptionProtocolHls": "HTTP Live Streaming", "OptionProfileVideoAudio": "Video Audio", "OptionPosterCard": "Poster card", @@ -1123,7 +1123,7 @@ "LabelPasswordResetProvider": "Password Reset Provider:", "LabelPasswordConfirm": "Password (confirm):", "LabelOriginalTitle": "Original title:", - "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}.", + "LabelOptionalNetworkPathHelp": "If this folder is shared on your network, supplying the network share path can allow clients on other devices to access media files directly. For example, {0} or {1}.", "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.", "LabelNumberOfGuideDays": "Number of days of guide data to download:", "LabelNumber": "Number:", @@ -1134,7 +1134,7 @@ "OptionDvd": "DVD", "MessageDirectoryPickerLinuxInstruction": "For Linux on Arch Linux, CentOS, Debian, Fedora, openSUSE, or Ubuntu, you must grant the service user at least read access to your storage locations.", "LabelCustomCertificatePath": "Custom SSL certificate path:", - "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 for the HTTP server. If left empty, the server will bind to all available addresses. Changing this value requires a restart.", "LabelAppNameExample": "Example: Sickbeard, Sonarr", "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.", "Yesterday": "Yesterday", @@ -1151,7 +1151,7 @@ "Sports": "Sports", "OptionProfilePhoto": "Photo", "OptionPlainStorageFolders": "Display all folders as plain storage folders", - "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.", "OptionDateAdded": "Date Added", "OptionDaily": "Daily", "OptionContinuing": "Continuing", @@ -1188,7 +1188,7 @@ "OptionDownloadPrimaryImage": "Primary", "OptionDownloadMenuImage": "Menu", "OptionDownloadLogoImage": "Logo", - "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.", "OptionDownloadImagesInAdvance": "Download images in advance", "OptionDownloadDiscImage": "Disc", "OptionDownloadBoxImage": "Box", @@ -1196,7 +1196,7 @@ "OptionDownloadBackImage": "Back", "OptionDownloadArtImage": "Art", "OptionDisplayFolderView": "Display a folder view to show plain media folders", - "LabelMovieRecordingPath": "Movie recording path (optional):", + "LabelMovieRecordingPath": "Movie recording path:", "LabelMoviePrefixHelp": "If a prefix is applied to movie titles, enter it here so the server can handle it properly.", "LabelMessageTitle": "Message title:", "LabelMessageText": "Message text:", @@ -1228,7 +1228,7 @@ "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", + "PasswordResetProviderHelp": "Choose a password reset provider to be used when this user requests a password reset.", "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", @@ -1258,7 +1258,7 @@ "MessageLeaveEmptyToInherit": "Leave empty to inherit settings from a parent item or the global default value.", "MessageItemsAdded": "Items added.", "MessageItemSaved": "Item saved.", - "MessageDirectoryPickerBSDInstruction": "For BSD, you may need to configure storage within your FreeNAS Jail in order to allow Jellyfin to access it.", + "MessageDirectoryPickerBSDInstruction": "For BSD, you may need to configure storage within your FreeNAS Jail so Jellyfin can access your media.", "MessageConfirmShutdown": "Are you sure you wish to shutdown the server?", "LabelSaveLocalMetadata": "Save artwork into media folders", "LabelPleaseRestart": "Changes will take effect after manually reloading the web client.", @@ -1289,7 +1289,7 @@ "HeaderSelectServerCachePath": "Select Server Cache Path", "HeaderSelectServer": "Select Server", "HeaderSelectPath": "Select 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.", "HeaderSelectMetadataPath": "Select Metadata Path", "HeaderSelectCertificatePath": "Select Certificate Path", "HeaderSecondsValue": "{0} Seconds", @@ -1305,7 +1305,7 @@ "HeaderRecordingPostProcessing": "Recording Post Processing", "HeaderRecordingOptions": "Recording Options", "HeaderRecentlyPlayed": "Recently Played", - "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.", "HeaderProfileInformation": "Profile Information", "HeaderProfile": "Profile", "HeaderPreferredMetadataLanguage": "Preferred Metadata Language", @@ -1346,7 +1346,7 @@ "LastSeen": "Last seen {0}", "PersonRole": "as {0}", "ListPaging": "{0}-{1} of {2}", - "WriteAccessRequired": "Jellyfin Server requires write access to this folder. Please ensure write access and try again.", + "WriteAccessRequired": "Jellyfin requires write access to this folder. Please ensure write access and try again.", "PathNotFound": "The path could not be found. Please ensure the path is valid and try again.", "YadifBob": "YADIF Bob", "Yadif": "YADIF", @@ -1418,7 +1418,7 @@ "LabelRequireHttps": "Require HTTPS", "LabelStable": "Stable", "LabelChromecastVersion": "Chromecast Version", - "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.", "LabelEnableHttps": "Enable HTTPS", "HeaderSyncPlayEnabled": "SyncPlay enabled", "HeaderSyncPlaySelectGroup": "Join a group", @@ -1433,5 +1433,14 @@ "ClearQueue": "Clear queue", "StopPlayback": "Stop playback", "ButtonPlayer": "Player", - "Writers": "Writers" + "Writers": "Writers", + "Preview": "Preview", + "SubtitleVerticalPositionHelp": "Line number where text appears. Positive numbers indicate top down. Negative numbers indicate bottom up.", + "LabelSubtitleVerticalPosition": "Vertical position:", + "PreviousTrack": "Skip to previous", + "MessageGetInstalledPluginsError": "An error occurred while getting the list of currently installed plugins.", + "MessagePluginInstallError": "An error occurred while installing the plugin.", + "PlaybackRate": "Playback Rate", + "NextTrack": "Skip to next", + "LabelUnstable": "Unstable" } From 77ce9f1088f4b6237f9871299870e3d2be59ffa6 Mon Sep 17 00:00:00 2001 From: TheGoose Date: Mon, 31 Aug 2020 04:27:29 +0000 Subject: [PATCH 138/582] Translated using Weblate (English) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en/ --- src/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index f87c1a326e..8470ca840f 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -512,7 +512,7 @@ "LabelAuthProvider": "Authentication Provider:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Automatically refresh metadata from the internet:", "LabelBindToLocalNetworkAddress": "Bind to local network address:", - "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 a restart.", + "LabelBindToLocalNetworkAddressHelp": "Override the local IP address for the HTTP server. If left empty, the server will bind to all available addresses. Changing this value requires a restart.", "LabelBirthDate": "Birth date:", "LabelBirthYear": "Birth year:", "LabelBitrate": "Bitrate:", From af9bf3320d2cf6d2b9b86f07612b773399e95abf Mon Sep 17 00:00:00 2001 From: Cameron Date: Mon, 31 Aug 2020 10:02:25 +0100 Subject: [PATCH 139/582] Fix hovering (mobile) --- src/themes/appletv/theme.css | 9 ++++++++- src/themes/blueradiance/theme.css | 9 ++++++++- src/themes/dark/theme.css | 9 ++++++++- src/themes/light/theme.css | 9 ++++++++- src/themes/purplehaze/theme.css | 9 ++++++++- src/themes/wmc/theme.css | 9 ++++++++- 6 files changed, 48 insertions(+), 6 deletions(-) diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 41540ce0dd..463065b849 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -62,7 +62,14 @@ html { background: #f0f0f0; } -.paper-icon-button-light:hover:not(:disabled) { +@media (hover: hover) { + .paper-icon-button-light:hover:not(:disabled) { + color: #00a4dc; + background-color: rgba(0, 164, 220, 0.2); + } +} + +.paper-icon-button-light:active:not(:disabled) { color: #00a4dc; background-color: rgba(0, 164, 220, 0.2); } diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 7ecc4a74a5..1c13803034 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -64,7 +64,14 @@ html { } } -.paper-icon-button-light:hover:not(:disabled) { +@media (hover: hover) { + .paper-icon-button-light:hover:not(:disabled) { + color: #00a4dc; + background-color: rgba(0, 164, 220, 0.2); + } +} + +.paper-icon-button-light:active:not(:disabled) { color: #00a4dc; background-color: rgba(0, 164, 220, 0.2); } diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index be2b9269af..15ab434a85 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -46,7 +46,14 @@ html { background-color: rgba(0, 0, 0, 0.86); } -.paper-icon-button-light:hover:not(:disabled) { +@media (hover: hover) { + .paper-icon-button-light:hover:not(:disabled) { + color: #00a4dc; + background-color: rgba(0, 164, 220, 0.2); + } +} + +.paper-icon-button-light:active:not(:disabled) { color: #00a4dc; background-color: rgba(0, 164, 220, 0.2); } diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index c5161985cd..766dd95359 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -61,7 +61,14 @@ html { color: #000; } -.paper-icon-button-light:hover:not(:disabled) { +@media (hover: hover) { + .paper-icon-button-light:hover:not(:disabled) { + color: #00a4dc; + background-color: rgba(0, 164, 220, 0.2); + } +} + +.paper-icon-button-light:active:not(:disabled) { color: #00a4dc; background-color: rgba(0, 164, 220, 0.2); } diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 1d82afc23a..8fe9baae24 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -59,7 +59,14 @@ html { } } -.paper-icon-button-light:hover:not(:disabled) { +@media (hover: hover) { + .paper-icon-button-light:hover:not(:disabled) { + color: rgb(12, 232, 214); + background-color: rgba(0, 164, 220, 0.2); + } +} + +.paper-icon-button-light:active:not(:disabled) { color: rgb(12, 232, 214); background-color: rgba(0, 164, 220, 0.2); } diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 4a7375a129..277421e144 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -62,7 +62,14 @@ html { background: rgba(17, 98, 164, 0.9); } -.paper-icon-button-light:hover:not(:disabled) { +@media (hover: hover) { + .paper-icon-button-light:hover:not(:disabled) { + color: #00a4dc; + background-color: rgba(0, 164, 220, 0.2); + } +} + +.paper-icon-button-light:active:not(:disabled) { color: #00a4dc; background-color: rgba(0, 164, 220, 0.2); } From 0be0faa0acb5975d945790dcc90c6bcc2791964a Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 31 Aug 2020 18:06:53 +0900 Subject: [PATCH 140/582] linting issue --- src/controllers/itemDetails/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index e5154dcd88..c1ec022e5a 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1340,7 +1340,7 @@ function renderChildren(page, item) { const equalSet = (arr1, arr2) => arr1.every(x => arr2.indexOf(x) !== -1) && arr1.length === arr2.length; let showArtist = false; for (const track of result.Items) { - if (!equalSet(track.ArtistItems.map(x => x.Id), track.AlbumArtists.map(x => x.Id) )) { + if (!equalSet(track.ArtistItems.map(x => x.Id), track.AlbumArtists.map(x => x.Id))) { showArtist = true; break; } From 8dcbacb196e363b1e184f21a1d7c19ca709bdaca Mon Sep 17 00:00:00 2001 From: Claus Vium Date: Mon, 31 Aug 2020 15:48:24 +0200 Subject: [PATCH 141/582] Add application/json as content type for JSON requests --- src/components/channelMapper/channelMapper.js | 1 + src/components/directorybrowser/directorybrowser.js | 3 ++- src/controllers/dashboard/encodingsettings.js | 3 ++- src/controllers/session/resetPassword/index.js | 3 ++- src/controllers/wizard/remote/index.js | 3 ++- src/controllers/wizard/settings/index.js | 3 ++- src/controllers/wizard/start/index.js | 3 ++- src/controllers/wizard/user/index.js | 3 ++- 8 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/components/channelMapper/channelMapper.js b/src/components/channelMapper/channelMapper.js index e747279693..2cf65e647c 100644 --- a/src/components/channelMapper/channelMapper.js +++ b/src/components/channelMapper/channelMapper.js @@ -24,6 +24,7 @@ export default class channelMapper { tunerChannelId: channelId, providerChannelId: providerChannelId }), + contentType: 'application/json', dataType: 'json' }).then(mapping => { const listItem = dom.parentWithClass(button, 'listItem'); diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index 4205e04a4f..3dd3302b28 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -169,7 +169,8 @@ import 'emby-button'; data: JSON.stringify({ ValidateWriteable: validateWriteable, Path: path - }) + }), + contentType: 'application/json' }).catch(response => { if (response) { if (response.status === 404) { diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js index dfad07618c..df36ffdc6f 100644 --- a/src/controllers/dashboard/encodingsettings.js +++ b/src/controllers/dashboard/encodingsettings.js @@ -48,7 +48,8 @@ import libraryMenu from 'libraryMenu'; data: JSON.stringify({ Path: form.querySelector('.txtEncoderPath').value, PathType: 'Custom' - }) + }), + contentType: 'application/json' }).then(Dashboard.processServerConfigurationUpdateResult, onSaveEncodingPathFailure); }); } diff --git a/src/controllers/session/resetPassword/index.js b/src/controllers/session/resetPassword/index.js index 3cb8d4a9e2..d4f7df5bbd 100644 --- a/src/controllers/session/resetPassword/index.js +++ b/src/controllers/session/resetPassword/index.js @@ -31,7 +31,8 @@ import globalize from 'globalize'; dataType: 'json', data: JSON.stringify({ Pin: view.querySelector('#txtPin').value - }) + }), + contentType: 'application/json' }).then(processForgotPasswordResult); e.preventDefault(); return false; diff --git a/src/controllers/wizard/remote/index.js b/src/controllers/wizard/remote/index.js index 74c795658d..b967d668ad 100644 --- a/src/controllers/wizard/remote/index.js +++ b/src/controllers/wizard/remote/index.js @@ -12,7 +12,8 @@ function save(page) { apiClient.ajax({ type: 'POST', data: JSON.stringify(config), - url: apiClient.getUrl('Startup/RemoteAccess') + url: apiClient.getUrl('Startup/RemoteAccess'), + contentType: 'application/json' }).then(function () { loading.hide(); navigateToNextPage(); diff --git a/src/controllers/wizard/settings/index.js b/src/controllers/wizard/settings/index.js index 2eaef4fab6..12a81ccc33 100644 --- a/src/controllers/wizard/settings/index.js +++ b/src/controllers/wizard/settings/index.js @@ -12,7 +12,8 @@ function save(page) { apiClient.ajax({ type: 'POST', data: JSON.stringify(config), - url: apiClient.getUrl('Startup/Configuration') + url: apiClient.getUrl('Startup/Configuration'), + contentType: 'application/json', }).then(function () { loading.hide(); navigateToNextPage(); diff --git a/src/controllers/wizard/start/index.js b/src/controllers/wizard/start/index.js index 8c147fc75e..3cd53b4ceb 100644 --- a/src/controllers/wizard/start/index.js +++ b/src/controllers/wizard/start/index.js @@ -18,7 +18,8 @@ function save(page) { apiClient.ajax({ type: 'POST', data: JSON.stringify(config), - url: apiClient.getUrl('Startup/Configuration') + url: apiClient.getUrl('Startup/Configuration'), + contentType: 'application/json' }).then(function () { Dashboard.navigate('wizarduser.html'); }); diff --git a/src/controllers/wizard/user/index.js b/src/controllers/wizard/user/index.js index fc9a27855f..ec587fec8e 100644 --- a/src/controllers/wizard/user/index.js +++ b/src/controllers/wizard/user/index.js @@ -27,7 +27,8 @@ function submit(form) { Name: form.querySelector('#txtUsername').value, Password: form.querySelector('#txtManualPassword').value }), - url: apiClient.getUrl('Startup/User') + url: apiClient.getUrl('Startup/User'), + contentType: 'application/json' }).then(onUpdateUserComplete); } From c094247988df3db7eed92e5dfaa0434eb45a3095 Mon Sep 17 00:00:00 2001 From: Claus Vium Date: Mon, 31 Aug 2020 15:58:54 +0200 Subject: [PATCH 142/582] Fix lint error --- src/controllers/wizard/settings/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/wizard/settings/index.js b/src/controllers/wizard/settings/index.js index 12a81ccc33..6e3a82cd9b 100644 --- a/src/controllers/wizard/settings/index.js +++ b/src/controllers/wizard/settings/index.js @@ -13,7 +13,7 @@ function save(page) { type: 'POST', data: JSON.stringify(config), url: apiClient.getUrl('Startup/Configuration'), - contentType: 'application/json', + contentType: 'application/json' }).then(function () { loading.hide(); navigateToNextPage(); From c5d4f7463b3f58c4407390b2f6f71d9169064e9a Mon Sep 17 00:00:00 2001 From: SaddFox Date: Mon, 31 Aug 2020 13:10:03 +0000 Subject: [PATCH 143/582] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 1930c194b1..eae23136b9 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -582,7 +582,7 @@ "LabelEnableSingleImageInDidlLimitHelp": "Nekatere naprave ne bodo prikazovale pravilno, če je več slik vdelanih v Didl.", "LabelEndDate": "Datum zaključka:", "LabelEpisodeNumber": "Številka epizode:", - "LabelEveryXMinutes": "Vsak:", + "LabelEveryXMinutes": "Vsakih:", "LabelBaseUrl": "Osnovni URL:", "LabelExtractChaptersDuringLibraryScan": "Izvleči slike poglavij med preiskovanjem knjižnjice", "LabelFormat": "Format:", From 00ad0f051f5c79c6e5205a2a8bb925fa99f65460 Mon Sep 17 00:00:00 2001 From: Cameron Date: Mon, 31 Aug 2020 16:28:00 +0100 Subject: [PATCH 144/582] Fix listview for small screens Hide secondary media info to improve listview on smaller screen sizes --- src/components/listview/listview.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/listview/listview.css b/src/components/listview/listview.css index 1e485a80ed..edb8a1a97a 100644 --- a/src/components/listview/listview.css +++ b/src/components/listview/listview.css @@ -185,6 +185,10 @@ .listItemBody { padding-right: 0.5em; } + + .listItemMediaInfo { + display: none; + } } .listItemImage-large-tv { From 07e1aeecf90d017bb3473f83cdb7ca91ff4e5a77 Mon Sep 17 00:00:00 2001 From: Thibault Nocchi <1619359+ThibaultNocchi@users.noreply.github.com> Date: Mon, 31 Aug 2020 18:00:37 +0200 Subject: [PATCH 145/582] Fixed header tooltips not being translated to the user language --- 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 bbd6bd0ced..513fadd923 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -74,6 +74,8 @@ import 'flexStyles'; } function updateUserInHeader(user) { + renderHeader(); + let hasImage; if (user && user.name) { @@ -955,8 +957,6 @@ import 'flexStyles'; updateLibraryNavLinks(page); }); - renderHeader(); - events.on(connectionManager, 'localusersignedin', function (e, user) { const currentApiClient = connectionManager.getApiClient(user.ServerId); From b001bc9a16cddc47a501511daa47bf3bf165b9aa Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Mon, 31 Aug 2020 12:37:01 -0400 Subject: [PATCH 146/582] Fix iOS PiP support detection --- src/plugins/htmlVideoPlayer/plugin.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 88329fecff..a3bee29370 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1390,7 +1390,12 @@ function tryRemoveElement(elem) { const list = []; const video = document.createElement('video'); - if (video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === 'function' || document.pictureInPictureEnabled) { + if ( + // Check non-standard Safari PiP support + typeof video.webkitSupportsPresentationMode === 'function' && video.webkitSupportsPresentationMode('picture-in-picture') && typeof video.webkitSetPresentationMode === 'function' + // Check standard PiP support + || document.pictureInPictureEnabled + ) { list.push('PictureInPicture'); } else if (window.Windows) { if (Windows.UI.ViewManagement.ApplicationView.getForCurrentView().isViewModeSupported(Windows.UI.ViewManagement.ApplicationViewMode.compactOverlay)) { From 852d631458dbd2e2badc800b0c7c2587f17aa180 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2020 17:18:45 +0000 Subject: [PATCH 147/582] Bump file-loader from 6.0.0 to 6.1.0 Bumps [file-loader](https://github.com/webpack-contrib/file-loader) from 6.0.0 to 6.1.0. - [Release notes](https://github.com/webpack-contrib/file-loader/releases) - [Changelog](https://github.com/webpack-contrib/file-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/file-loader/compare/v6.0.0...v6.1.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 43 +++++++++++++++++++++++++++++-------------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 5f092d6630..eec05c4d11 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.21.2", "eslint-plugin-promise": "^4.2.1", - "file-loader": "^6.0.0", + "file-loader": "^6.1.0", "gulp": "^4.0.2", "gulp-babel": "^8.0.0", "gulp-cli": "^2.3.0", diff --git a/yarn.lock b/yarn.lock index 013c06e045..b88f1a14af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -976,7 +976,7 @@ resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz#551a4589b6ee2cc9c1dff08056128aec29b94880" integrity sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA== -"@types/json-schema@^7.0.4": +"@types/json-schema@^7.0.5": version "7.0.5" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== @@ -1293,7 +1293,12 @@ 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-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.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== @@ -1303,6 +1308,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.12.4: + version "6.12.4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" + integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== + 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" @@ -4393,13 +4408,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" - integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== +file-loader@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.0.tgz#65b9fcfb0ea7f65a234a1f10cdd7f1ab9a33f253" + integrity sha512-26qPdHyTsArQ6gU4P1HJbAbnFTyT2r0pG7czh1GFAd9TZbj0n94wWbupgixZH/ET/meqi2/5+F7DhW4OAXD+Lg== dependencies: loader-utils "^2.0.0" - schema-utils "^2.6.5" + schema-utils "^2.7.1" file-type@5.2.0, file-type@^5.2.0: version "5.2.0" @@ -9906,14 +9921,14 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== +schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0, schema-utils@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" screenfull@^5.0.2: version "5.0.2" From 6ebda5ed7683b3b4c695828276600c0638b47766 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2020 17:19:16 +0000 Subject: [PATCH 148/582] Bump stylelint from 13.6.1 to 13.7.0 Bumps [stylelint](https://github.com/stylelint/stylelint) from 13.6.1 to 13.7.0. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/master/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/13.6.1...13.7.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 155 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 93 insertions(+), 64 deletions(-) diff --git a/package.json b/package.json index 5f092d6630..5a8c090269 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "postcss-loader": "^3.0.0", "postcss-preset-env": "^6.7.0", "style-loader": "^1.1.3", - "stylelint": "^13.6.1", + "stylelint": "^13.7.0", "stylelint-config-rational-order": "^0.1.2", "stylelint-no-browser-hacks": "^1.2.1", "stylelint-order": "^4.1.0", diff --git a/yarn.lock b/yarn.lock index 013c06e045..eb7ce0452b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -829,13 +829,6 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.9.2": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" - integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== - dependencies: - regenerator-runtime "^0.13.4" - "@babel/template@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" @@ -932,10 +925,10 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== -"@stylelint/postcss-css-in-js@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.1.tgz#41e5e7660f73d88227610e18c6ebb262d56ac125" - integrity sha512-UMf2Rni3JGKi3ZwYRGMYJ5ipOA5ENJSKMtYA/pE1ZLURwdh7B5+z2r73RmWvub+N0UuH1Lo+TGfCgYwPvqpXNw== +"@stylelint/postcss-css-in-js@^0.37.2": + version "0.37.2" + resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz#7e5a84ad181f4234a2480803422a47b8749af3d2" + integrity sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA== dependencies: "@babel/core" ">=7.9.0" @@ -1303,6 +1296,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.12.4: + version "6.12.4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" + integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== + 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" @@ -1623,6 +1626,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-done@^1.2.0, async-done@^1.2.2: version "1.3.2" resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" @@ -1675,7 +1683,7 @@ 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.6: +autoprefixer@^9.0.0, autoprefixer@^9.6.1, autoprefixer@^9.8.6: version "9.8.6" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== @@ -2891,16 +2899,16 @@ cosmiconfig@^5.0.0: js-yaml "^3.13.1" parse-json "^4.0.0" -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== dependencies: "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" + import-fresh "^3.2.1" parse-json "^5.0.0" path-type "^4.0.0" - yaml "^1.7.2" + yaml "^1.10.0" create-ecdh@^4.0.0: version "4.0.3" @@ -4325,10 +4333,10 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.0.3, fast-glob@^3.1.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" - integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== +fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" + integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -4352,6 +4360,11 @@ fast-text-encoding@^1.0.3: resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53" integrity sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig== +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + fastq@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.7.0.tgz#fcd79a08c5bd7ec5b55cd3f5c4720db551929801" @@ -5732,7 +5745,7 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0, import-fresh@^3.1.0: +import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== @@ -6484,7 +6497,7 @@ kind-of@^5.0.0, kind-of@^5.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -kind-of@^6.0.0, kind-of@^6.0.2: +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -6840,10 +6853,10 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.0.0, lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4, lodash@~4.17.12: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== +lodash@^4.0.0, lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@~4.17.12: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== log-symbols@^1.0.2: version "1.0.2" @@ -7152,18 +7165,16 @@ meow@^5.0.0: trim-newlines "^2.0.0" yargs-parser "^10.0.0" -meow@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-7.0.1.tgz#1ed4a0a50b3844b451369c48362eb0515f04c1dc" - integrity sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw== +meow@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306" + integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA== dependencies: "@types/minimist" "^1.2.0" - arrify "^2.0.1" - camelcase "^6.0.0" camelcase-keys "^6.2.2" decamelize-keys "^1.1.0" hard-rejection "^2.1.0" - minimist-options "^4.0.2" + minimist-options "4.1.0" normalize-package-data "^2.5.0" read-pkg-up "^7.0.1" redent "^3.0.0" @@ -7260,6 +7271,15 @@ minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: dependencies: brace-expansion "^1.1.7" +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + minimist-options@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" @@ -7268,14 +7288,6 @@ minimist-options@^3.0.1: arrify "^1.0.1" is-plain-obj "^1.1.0" -minimist-options@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.0.2.tgz#29c4021373ded40d546186725e57761e4b1984a7" - integrity sha512-seq4hpWkYSUh1y7NXxzucwAN9yVlBc3Upgdjz8vLCP97jG8kaOmzYrVH/m7tQ1NYD1wdtZbSLfdy4zFmRWuc/w== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - minimist@1.1.x: version "1.1.3" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" @@ -8889,7 +8901,7 @@ postcss-reporter@^1.3.3: log-symbols "^1.0.2" postcss "^5.0.0" -postcss-reporter@^6.0.0, postcss-reporter@^6.0.1: +postcss-reporter@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz#7c055120060a97c8837b4e48215661aafb74245f" integrity sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw== @@ -10141,6 +10153,15 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -10797,19 +10818,21 @@ stylelint-order@^4.1.0: postcss "^7.0.31" postcss-sorting "^5.0.1" -stylelint@^13.6.1: - version "13.6.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.6.1.tgz#cc1d76338116d55e8ff2be94c4a4386c1239b878" - integrity sha512-XyvKyNE7eyrqkuZ85Citd/Uv3ljGiuYHC6UiztTR6sWS9rza8j3UeQv/eGcQS9NZz/imiC4GKdk1EVL3wst5vw== +stylelint@^13.7.0: + version "13.7.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.7.0.tgz#8d7a4233063b2f06e9f28b3405ff189e334547b5" + integrity sha512-1wStd4zVetnlHO98VjcHQbjSDmvcA39smkZQMct2cf+hom40H0xlQNdzzbswoG/jGBh61/Ue9m7Lu99PY51O6A== dependencies: - "@stylelint/postcss-css-in-js" "^0.37.1" + "@stylelint/postcss-css-in-js" "^0.37.2" "@stylelint/postcss-markdown" "^0.36.1" - autoprefixer "^9.8.0" + autoprefixer "^9.8.6" balanced-match "^1.0.0" chalk "^4.1.0" - cosmiconfig "^6.0.0" + cosmiconfig "^7.0.0" debug "^4.1.1" execall "^2.0.0" + fast-glob "^3.2.4" + fastest-levenshtein "^1.0.12" file-entry-cache "^5.0.1" get-stdin "^8.0.0" global-modules "^2.0.0" @@ -10820,18 +10843,16 @@ stylelint@^13.6.1: import-lazy "^4.0.0" imurmurhash "^0.1.4" known-css-properties "^0.19.0" - leven "^3.1.0" - lodash "^4.17.15" + lodash "^4.17.20" log-symbols "^4.0.0" mathml-tag-names "^2.1.3" - meow "^7.0.1" + meow "^7.1.1" micromatch "^4.0.2" normalize-selector "^0.2.0" postcss "^7.0.32" postcss-html "^0.36.0" postcss-less "^3.1.4" postcss-media-query-parser "^0.2.3" - postcss-reporter "^6.0.1" postcss-resolve-nested-selector "^0.1.1" postcss-safe-parser "^4.0.2" postcss-sass "^0.4.4" @@ -10847,7 +10868,7 @@ stylelint@^13.6.1: style-search "^0.1.0" sugarss "^2.0.0" svg-tags "^1.0.0" - table "^5.4.6" + table "^6.0.1" v8-compile-cache "^2.1.1" write-file-atomic "^3.0.3" @@ -10989,7 +11010,7 @@ symbol-observable@1.0.1: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= -table@^5.0.0, table@^5.2.3, table@^5.4.6: +table@^5.0.0, table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== @@ -10999,6 +11020,16 @@ table@^5.0.0, table@^5.2.3, table@^5.4.6: slice-ansi "^2.1.0" string-width "^3.0.0" +table@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.1.tgz#334fd5d74590251f6893f1296c29d533bbac1b32" + integrity sha512-fmr6168splcy/3XIvhSm5w6hYYOqyr3plAsd7OqoerzyoMnIpoxYuwrpdO2Cm22dh6KCnvirvigPrFZp+tdWFA== + dependencies: + ajv "^6.12.4" + lodash "^4.17.20" + slice-ansi "^4.0.0" + string-width "^4.2.0" + tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -12157,12 +12188,10 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yaml@^1.7.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.9.2.tgz#f0cfa865f003ab707663e4f04b3956957ea564ed" - integrity sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg== - dependencies: - "@babel/runtime" "^7.9.2" +yaml@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== yargs-parser@^10.0.0: version "10.1.0" From 1fd3e72406bfacd23281f08914f5765477b4e875 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2020 17:20:40 +0000 Subject: [PATCH 149/582] Bump date-fns from 2.16.0 to 2.16.1 Bumps [date-fns](https://github.com/date-fns/date-fns) from 2.16.0 to 2.16.1. - [Release notes](https://github.com/date-fns/date-fns/releases) - [Changelog](https://github.com/date-fns/date-fns/blob/master/CHANGELOG.md) - [Commits](https://github.com/date-fns/date-fns/compare/v2.16.0...v2.16.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 5f092d6630..d772c426c5 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "blurhash": "^1.1.3", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "core-js": "^3.6.5", - "date-fns": "^2.16.0", + "date-fns": "^2.16.1", "epubjs": "^0.3.85", "fast-text-encoding": "^1.0.3", "flv.js": "^1.5.0", diff --git a/yarn.lock b/yarn.lock index 013c06e045..2758ab5332 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3218,10 +3218,10 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -date-fns@^2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.0.tgz#d34f0f5f2fd498c984513042e8f7247ea86c4cb7" - integrity sha512-DWTRyfOA85sZ4IiXPHhiRIOs3fW5U6Msrp+gElXARa6EpoQTXPyHQmh7hr+ssw2nx9FtOQWnAMJKgL5vaJqILw== +date-fns@^2.16.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" + integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== dateformat@^2.0.0: version "2.2.0" From 2fffdaf97c037329d81003c704c6605b745b4a8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Mon, 31 Aug 2020 18:17:27 +0000 Subject: [PATCH 150/582] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 870f2196a9..6623993c6a 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1366,5 +1366,18 @@ "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ě.", - "PlaybackRate": "Rychlost přehrávání" + "PlaybackRate": "Rychlost přehrávání", + "Video": "Video", + "ThumbCard": "Karta náhledu", + "Subtitle": "Titulky", + "SpecialFeatures": "Zvláštní funkce", + "SelectServer": "Vybrat server", + "Restart": "Restartovat", + "ResetPassword": "Obnovit heslo", + "Profile": "Profil", + "PosterCard": "Karta plakátu", + "Poster": "Plakát", + "MusicVideos": "Hudební videa", + "Image": "Obrázek", + "Data": "Datumy" } From 04cac0c4078a683ddc78796a9e0a0482c4e6d1ba Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Mon, 31 Aug 2020 15:19:06 -0400 Subject: [PATCH 151/582] Fix iPad detection --- src/scripts/browser.js | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/scripts/browser.js b/src/scripts/browser.js index 618d930ec8..9f81ec7561 100644 --- a/src/scripts/browser.js +++ b/src/scripts/browser.js @@ -75,10 +75,24 @@ function hasKeyboard(browser) { 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)]; + const tests = [ + // Original test for getting full iOS version number in iOS 2.0+ + /OS (\d+)_(\d+)_?(\d+)?/, + // Test for iPads running iOS 13+ that can only get the major OS version + /Version\/(\d+)/ + ]; + for (const test of tests) { + const matches = (navigator.appVersion).match(test); + if (matches) { + return [ + parseInt(matches[1], 10), + parseInt(matches[2] || 0, 10), + parseInt(matches[3] || 0, 10) + ]; + } + } } + return []; } let _supportsCssAnimation; @@ -196,6 +210,15 @@ if (!browser.chrome && !browser.edgeChromium && !browser.edge && !browser.opera browser.safari = true; } +browser.osx = userAgent.toLowerCase().indexOf('os x') !== -1; + +// This is a workaround to detect iPads on iOS 13+ that report as desktop Safari +// This may break in the future if Apple releases a touchscreen Mac +// https://forums.developer.apple.com/thread/119186 +if (browser.osx && !browser.iphone && !browser.ipod && !browser.ipad && navigator.maxTouchPoints > 1) { + browser.ipad = true; +} + if (userAgent.toLowerCase().indexOf('playstation 4') !== -1) { browser.ps4 = true; browser.tv = true; @@ -242,7 +265,6 @@ if (typeof document !== 'undefined') { 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) { From 6e4051409e8551d065bb4562d08ac8f420f4b064 Mon Sep 17 00:00:00 2001 From: Reto Wyss Date: Mon, 31 Aug 2020 19:39:53 +0000 Subject: [PATCH 152/582] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index da904b08fe..09b6ae3820 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1366,5 +1366,14 @@ "LabelSubtitleVerticalPosition": "Vertikale Position:", "MessageGetInstalledPluginsError": "Beim Abrufen der Liste der derzeit installierten Plugins ist ein Fehler aufgetreten.", "MessagePluginInstallError": "Bei der Installation des Plugins ist ein Fehler aufgetreten.", - "PlaybackRate": "Wiedergabegeschwindigkeit" + "PlaybackRate": "Wiedergabegeschwindigkeit", + "Video": "Video", + "Subtitle": "Untertitel", + "SelectServer": "Server auswählen", + "Restart": "Neustarten", + "ResetPassword": "Passwort zurücksetzten", + "Profile": "Profil", + "MusicVideos": "Musikvideos", + "Image": "Bild", + "Data": "Daten" } From fec8ff646cbd04838dbd9b0ee1ff173611d4f5a2 Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Tue, 1 Sep 2020 00:34:16 +0000 Subject: [PATCH 153/582] 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 | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index c07d72b3df..9b5420ac20 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1365,5 +1365,19 @@ "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" + "LabelUnstable": "Inestable", + "Video": "Video", + "ThumbCard": "Tarjeta de pulgar", + "Subtitle": "Subtítulo", + "SpecialFeatures": "Características especiales", + "SelectServer": "Seleccionar servidor", + "Restart": "Reiniciar", + "ResetPassword": "Restablecer contraseña", + "Profile": "Perfil", + "PosterCard": "Tarjeta de cartel", + "Poster": "Póster", + "PlaybackRate": "Tasa de reproducción", + "MusicVideos": "Videos musicales", + "Image": "Imagen", + "Data": "Datos" } From 82b8465101bafb8ab1aed29c7aec6ce52811d0c9 Mon Sep 17 00:00:00 2001 From: Pascal Bourgault Date: Tue, 1 Sep 2020 00:27:01 +0000 Subject: [PATCH 154/582] Translated using Weblate (French (Canada)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr_CA/ --- src/strings/fr-ca.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index c58d0ecaaa..08c47a9188 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -221,5 +221,6 @@ "CommunityRating": "Évaluation de la communauté", "ColorTransfer": "Transfert de couleur", "ColorSpace": "Espace colorimétrique", - "ColorPrimaries": "Primaires colorimétriques" + "ColorPrimaries": "Primaires colorimétriques", + "EnablePhotos": "Voir les photos" } From bdb5075fdc837f89eb3a223f388f4a9ea63a899b Mon Sep 17 00:00:00 2001 From: fernando012 Date: Tue, 1 Sep 2020 01:21:39 +0000 Subject: [PATCH 155/582] Translated using Weblate (Spanish (Dominican Republic)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_DO/ --- src/strings/es_DO.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/es_DO.json b/src/strings/es_DO.json index 9f5d299631..cf6f0c5256 100644 --- a/src/strings/es_DO.json +++ b/src/strings/es_DO.json @@ -13,5 +13,10 @@ "Albums": "Álbumes", "Artists": "Artistas", "Channels": "Canales", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "Aired": "Emitido", + "AirDate": "Fecha de Emisión", + "AddedOnValue": "Añadido {0}", + "AddToPlayQueue": "Añadir a la lista de reproducción", + "AddToCollection": "Añadir a la Colección" } From 7aa7b6259198f404989275dd1d295e2783a91cb1 Mon Sep 17 00:00:00 2001 From: fernando012 Date: Tue, 1 Sep 2020 01:53:07 +0000 Subject: [PATCH 156/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index f336157603..cc14d6bd29 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -18,7 +18,7 @@ "AllowMediaConversionHelp": "Concede o deniega el acceso a la función de conversión de medios.", "AllowOnTheFlySubtitleExtraction": "Permitir la extracción de subtítulos sobre la marcha", "AllowOnTheFlySubtitleExtractionHelp": "Cuando el cliente sea compatible, los subtítulos pueden extraerse durante la reproducción para evitar convertir el vídeo. Sin embargo, y en algunos servidores, esto puede llevar mucho tiempo y hacer que la reproducción tenga cortes durante el proceso. Deshabilita esta opción para grabar los subtítulos directamente en el vídeo cuando no sean compatibles de forma nativa con el cliente.", - "AllowRemoteAccess": "Permitir conexiones remotas a este servidor Jellyfin.", + "AllowRemoteAccess": "Permitir conexiones remotas a este servidor.", "AllowRemoteAccessHelp": "Si no está activado, todas las conexiones remotas serán bloqueadas.", "AllowedRemoteAddressesHelp": "Lista separada por comas de direcciones IP o entradas de IP / máscara de red para redes a las que se les permitirá conectarse de forma remota. Si se deja en blanco, se permitirán todas las direcciones remotas.", "AlwaysPlaySubtitles": "Siempre mostrar subtítulos", @@ -93,7 +93,7 @@ "CinemaModeConfigurationHelp": "El modo cine proporciona la experiencia del cine directamente en su sala con la capacidad de reproducir tráilers e introducciones personalizadas antes de la función principal.", "Collections": "Colecciones", "Composer": "Compositor", - "ConfigureDateAdded": "Configura como la fecha añadida se determina en el Panel de Control del servidor Jellyfin en los ajustes de la biblioteca", + "ConfigureDateAdded": "Configure cómo se determinará la fecha añadido en el panel bajo la configuración de la biblioteca", "ConfirmDeleteImage": "¿Borrar imagen?", "ConfirmDeleteItem": "Al borrar este elemento se borrará del sistema de archivos y de la biblioteca. ¿Quieres continuar?", "ConfirmDeleteItems": "Al borrar este elemento se borrará del sistema de archivos y de la biblioteca. ¿Quieres continuar?", @@ -144,7 +144,7 @@ "EndsAtValue": "Termina a las {0}", "Episodes": "Episodios", "ErrorAddingListingsToSchedulesDirect": "Ha habido un error añadiendo la alineación a tu cuenta de Schedules Direct. Schedules Direct solo permite un determinado número de alineaciones por cuenta. Necesitarás iniciar sesión en la web de Schedules Direct y quitar otras listas de tu cuenta antes de proceder.", - "ErrorAddingMediaPathToVirtualFolder": "Ha habido un error añadiendo la ruta de los medios. Por favor, asegúrate de que la ruta es válida y que el proceso del servidor Jellyfin tiene acceso a esa ubicación.", + "ErrorAddingMediaPathToVirtualFolder": "Ha habido un error añadiendo la ruta de los Medios. Por favor, asegúrate de que la ruta es válida y el servidor Jellyfin tiene acceso a esa ubicación.", "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.", @@ -308,7 +308,7 @@ "HeaderSecondsValue": "{0} segundos", "HeaderSelectCertificatePath": "Elige la ruta del certificado", "HeaderSelectMetadataPath": "Seleccione la ruta para las etiquetas", - "HeaderSelectMetadataPathHelp": "Busque o escriba la ruta donde almacenar las etiquetas. La carpeta debe tener permiso de escritura.", + "HeaderSelectMetadataPathHelp": "Busque o escriba la ruta de acceso que desea utilizar para los metadatos.. La carpeta debe tener permiso de escritura.", "HeaderSelectPath": "Elige ruta", "HeaderSelectServerCachePath": "Seleccione la ruta para el caché del servidor", "HeaderSelectServerCachePathHelp": "Navega o introduce la ruta para alojar los archivos caché del servidor. Tienes que tener permisos de escritura en esa carpeta.", @@ -389,10 +389,10 @@ "LabelAudioLanguagePreference": "Idioma de audio preferido:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Actualizar las etiquetas automáticamente desde Internet:", "LabelBindToLocalNetworkAddress": "Vincular a la dirección de red local:", - "LabelBindToLocalNetworkAddressHelp": "Anule la dirección IP local para enlazar el servidor HTTP. Si se deja vacío, el servidor se enlazará a todas las direcciones disponibles. Para cambiar este valor, debe reiniciar el servidor Jellyfin.", + "LabelBindToLocalNetworkAddressHelp": "Anule la dirección IP local para enlazar el servidor HTTP. Si se deja vacío, el servidor se enlazará a todas las direcciones disponibles. Este cambio requiere reiniciar.", "LabelBirthDate": "Fecha de nacimiento:", "LabelBirthYear": "Año de nacimiento:", - "LabelBlastMessageInterval": "Intervalo para mensajes en vivo (segundos)", + "LabelBlastMessageInterval": "Intervalo para mensajes en vivo", "LabelBlastMessageIntervalHelp": "Determina la duración en segundos entre los mensajes en vivo.", "LabelBlockContentWithTags": "Bloquear artículos sin etiquetas:", "LabelCache": "Caché:", @@ -411,7 +411,7 @@ "LabelCustomCertificatePath": "Ruta del certificado SSL personalizado:", "LabelCustomCertificatePathHelp": "Ruta a un archivo PKCS # 12 que contiene un certificado y una clave privada para habilitar el soporte de TLS en un dominio personalizado.", "LabelCustomCss": "CSS personalizado:", - "LabelCustomCssHelp": "Aplicar su propio CSS personalizado a la interfaz de la web.", + "LabelCustomCssHelp": "Aplicar su propio CSS personalizados en la interfaz web.", "LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre para mostrar o déjelo vacío para usar el nombre proporcionado por el dispositivo.", "LabelCustomRating": "Valoración pesonalizada:", "LabelDateAdded": "Fecha de añadido:", @@ -440,8 +440,8 @@ "LabelEnableAutomaticPortMapHelp": "Reenvia automáticamente los puertos públicos de su Router a los puertos locales de su servidor a través de UPnP. Es posible que esto no funcione con algunos modelos de Routers o configuraciones de red. Los cambios no se aplicarán hasta después de reiniciar el servidor.", "LabelEnableBlastAliveMessages": "Explotar mensajes en vivo", "LabelEnableBlastAliveMessagesHelp": "Active aquí si el servidor no es detectado correctamente por otros dispositivos UPnP en su red.", - "LabelEnableDlnaClientDiscoveryInterval": "Intervalo de detección de cliente (segundos)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duración en segundos entre la búsqueda SSDP hechas por Jellyfin.", + "LabelEnableDlnaClientDiscoveryInterval": "Intervalo de detección de cliente", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duración en segundos entre la búsqueda SSDP.", "LabelEnableDlnaDebugLogging": "Activar el registro de depuración de DLNA", "LabelEnableDlnaDebugLoggingHelp": "Crear archivos de registro de gran tamaño. Solo debe ser utilizado cuando sea necesario para solucionar problemas.", "LabelEnableDlnaPlayTo": "Activar la reproducción en DLNAi", @@ -450,7 +450,7 @@ "LabelEnableDlnaServerHelp": "Permite a los dispositivos UPnP en su red local explorar y reproducir contenidos.", "LabelEnableHardwareDecodingFor": "Activar decodificación por hardware para:", "LabelEnableRealtimeMonitor": "Activar la monitorización en tiempo real", - "LabelEnableRealtimeMonitorHelp": "Los cambios se procesarán inmediatamente, en sistemas de archivo que lo soporten.", + "LabelEnableRealtimeMonitorHelp": "Los cambios se procesarán inmediatamente en sistemas de archivo que lo soporten.", "LabelEnableSingleImageInDidlLimit": "Limitar a una imagen integrada", "LabelEnableSingleImageInDidlLimitHelp": "Algunos dispositivos no renderizan correctamente si hay muchas imágenes integradas en Didl.", "LabelEndDate": "Fecha de fin:", @@ -468,14 +468,14 @@ "LabelFriendlyName": "Nombre amigable:", "LabelServerNameHelp": "Este nombre se utilizará para identificar el servidor, por defecto será el nombre del ordenador.", "LabelGroupMoviesIntoCollections": "Agrupar películas en colecciones", - "LabelGroupMoviesIntoCollectionsHelp": "Cuando se muestran las listas de películas, las películas pertenecientes a una colección se mostrarán como un elemento agrupado.", + "LabelGroupMoviesIntoCollectionsHelp": "Al mostrar las listas de películas, las películas pertenecientes a una colección se mostrarán como un elemento agrupado.", "LabelH264Crf": "H264 que codifica CRF:", "LabelEncoderPreset": "Configuración de codificación H264:", "LabelHardwareAccelerationType": "Aceleración por hardware:", "LabelHardwareAccelerationTypeHelp": "La aceleración por hardware requiere configuración adicional.", "LabelHomeScreenSectionValue": "Sección de la pantalla de inicio {0}:", "LabelHttpsPort": "Puerto local HTTPS:", - "LabelHttpsPortHelp": "Puerto TCP al que el servidor HTTPS de Jellyfin debe de ser enlazado.", + "LabelHttpsPortHelp": "El número de puerto TCP para el servidor HTTPS.", "LabelIconMaxHeight": "Altura máxima de icono:", "LabelIconMaxHeightHelp": "Resolución máxima de los iconos expuestos vía upnp:icon.", "LabelIconMaxWidth": "Anchura máxima de icono:", @@ -503,7 +503,7 @@ "LabelLanguage": "Idioma:", "LabelLineup": "Reparto:", "LabelLocalHttpServerPortNumber": "Puerto local HTTP:", - "LabelLocalHttpServerPortNumberHelp": "Puerto TCP al que el servidor de HTTP de Jellyfin debe de ser enlazado.", + "LabelLocalHttpServerPortNumberHelp": "El número de puerto TCP para el servidor HTTP.", "LabelLockItemToPreventChanges": "Bloquear este elemento para evitar futuros cambios", "LabelLoginDisclaimer": "Descargo de responsabilidad de inicio de sesión:", "LabelLoginDisclaimerHelp": "Mensaje que se mostrará en la parte inferior de la página de inicio de sesión.", @@ -529,7 +529,7 @@ "LabelMetadataReaders": "Lectores de etiquetas:", "LabelMetadataReadersHelp": "Ordena los proveedores de etiquetas locales por prioridad. Se leerá el primer archivo encontrado.", "LabelMetadataSavers": "Formato de etiquetas:", - "LabelMetadataSaversHelp": "Elige el formato de archivo para guardar las etiquetas.", + "LabelMetadataSaversHelp": "Elija los formatos de archivo que desea utilizar al guardar los metadatos.", "LabelMethod": "Método:", "LabelMinBackdropDownloadWidth": "Anchura mínima de descarga de imágenes de fondo:", "LabelMinResumeDuration": "Duración mínima de reanudación:", @@ -1102,7 +1102,7 @@ "EnableNextVideoInfoOverlayHelp": "Al finalizar un vídeo, mostrar información sobre el siguiente de la lista de reproducción actual.", "EnableThemeSongsHelp": "Reproducir las canciones temáticas de fondo mientras se explora la biblioteca.", "EnableThemeVideosHelp": "Reproducir vídeos temáticos de fondo mientras se explora la biblioteca.", - "ErrorDeletingItem": "Se ha producido un error eliminando el elemento del servidor Jellyfin. Por favor, comprueba que el servidor Jellyfin tiene permisos de escritura y prueba de nuevo.", + "ErrorDeletingItem": "Se ha producido un error eliminando el elemento del servidor. Por favor, comprueba que Jellyfin tiene permisos de escritura y prueba de nuevo.", "Extras": "Extras", "Features": "Características", "Filters": "Filtros", @@ -1162,7 +1162,7 @@ "OptionDvd": "DVD", "OptionIsHD": "HD", "OptionIsSD": "SD", - "AuthProviderHelp": "Selecciona un proveedor de autenticación a utilizar para autenticar la contraseña de este usuario.", + "AuthProviderHelp": "Seleccione un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.", "LabelAuthProvider": "Proveedor de autenticación:", "LabelPasswordResetProvider": "Proveedor de restablecimiento de contraseña:", "LabelServerName": "Nombre del servidor:", @@ -1230,7 +1230,7 @@ "LabelPlayMethod": "Método de reproducción:", "LabelPlayer": "Reproductor:", "LabelFolder": "Carpeta:", - "LabelBaseUrlHelp": "Puede agregar aquí un subdirectorio personalizado para el acceso al servidor a través de una URL única.", + "LabelBaseUrlHelp": "Puede agregar aquí un subdirectorio personalizado para el acceso al servidor a través de una URL.Por ejemplo: http://ejemplo.com/<baseurl>", "LabelBaseUrl": "URL base:", "LabelBitrate": "Bitrate:", "LabelAudioSampleRate": "Frecuencia de muestreo de audio:", @@ -1363,5 +1363,7 @@ "MessageGetInstalledPluginsError": "Ha ocurrido un error al recuperar la lista de plugins instalados.", "MessagePluginInstallError": "Ha ocurrido un error al instalar este plugin.", "NextTrack": "Saltar al siguiente", - "LabelUnstable": "Inestable" + "LabelUnstable": "Inestable", + "Image": "Imagen", + "Data": "Datos" } From e161be93dca2e73bf09b6717b78a9865d32b7817 Mon Sep 17 00:00:00 2001 From: fernando012 Date: Tue, 1 Sep 2020 02:28:00 +0000 Subject: [PATCH 157/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 63 ++++++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index cc14d6bd29..36a01a72df 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -416,7 +416,7 @@ "LabelCustomRating": "Valoración pesonalizada:", "LabelDateAdded": "Fecha de añadido:", "LabelDateAddedBehavior": "Comportamiento de la fecha añadida para contenido nuevo:", - "LabelDateAddedBehaviorHelp": "Si el elemento tiene etiquetas que contengan información sobre la fecha de creación, independientemente de lo seleccionado aquí, se utilizarán para ordenar el contenido.", + "LabelDateAddedBehaviorHelp": "Si el elemento tiene etiquetas que contengan información sobre la fecha de creación independientemente de lo seleccionado aquí, se utilizarán para ordenar el contenido.", "LabelDay": "Día:", "LabelDeathDate": "Fecha de muerte:", "LabelDefaultUser": "Usuario por defecto:", @@ -466,7 +466,7 @@ "LabelForgotPasswordUsernameHelp": "Introduce tu nombre de usuario, si te acuerdas.", "LabelFormat": "Formato:", "LabelFriendlyName": "Nombre amigable:", - "LabelServerNameHelp": "Este nombre se utilizará para identificar el servidor, por defecto será el nombre del ordenador.", + "LabelServerNameHelp": "Este nombre se utilizará para identificar el servidor, por defecto será el nombre del ordenador.", "LabelGroupMoviesIntoCollections": "Agrupar películas en colecciones", "LabelGroupMoviesIntoCollectionsHelp": "Al mostrar las listas de películas, las películas pertenecientes a una colección se mostrarán como un elemento agrupado.", "LabelH264Crf": "H264 que codifica CRF:", @@ -545,9 +545,9 @@ "LabelMovieCategories": "Categorías de películas:", "LabelMoviePrefix": "Prefijo de película:", "LabelMoviePrefixHelp": "Si se aplica un prefijo a títulos de películas, escríbalo para que el servidor pueda manejarlo correctamente.", - "LabelMovieRecordingPath": "Ruta de grabaciones de películas (opcional):", + "LabelMovieRecordingPath": "Ruta de grabaciones de películas:", "LabelMusicStreamingTranscodingBitrate": "Tasa de bits para la reproducción de música:", - "LabelMusicStreamingTranscodingBitrateHelp": "Tasa de bits máxima para la música.", + "LabelMusicStreamingTranscodingBitrateHelp": "Especifique una tasa de bits máxima al transmitir música.", "LabelName": "Nombre:", "LabelNewName": "Nuevo nombre:", "LabelNewPassword": "Nueva contraseña:", @@ -557,7 +557,7 @@ "LabelNumber": "Número:", "LabelNumberOfGuideDays": "Número de días a descargar de la guía:", "LabelNumberOfGuideDaysHelp": "Descargar más días de la guía ofrece la posibilidad de programar grabaciones con mayor antelación y ver más listas, pero también tarda más en descargarse. Auto elegirá en función del número de canales.", - "LabelOptionalNetworkPath": "(Opcional) Carpeta de red compartida:", + "LabelOptionalNetworkPath": "Carpeta de red compartida:", "LabelOptionalNetworkPathHelp": "Si esta carpeta se comparte en la red, el suministro de la ruta de acceso compartido de red puede permitir a las aplicaciones Jellyfin de otros dispositivos acceder directamente a los archivos multimedia.", "LabelOriginalAspectRatio": "Relación de aspecto original:", "LabelOriginalTitle": "Título original:", @@ -597,7 +597,7 @@ "LabelReleaseDate": "Fecha de lanzamiento:", "LabelRemoteClientBitrateLimit": "Límite de la transmisión de tasa de bits por internet (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Especifica el bitrate máximo para los dispositivos que se encuentren fuera de la red local. Esto es útil para permitir la reproducción del contenido que tengas con una tasa de bits muy alta cuando la conexión a internet de tu servidor o la del cliente no sea lo suficientemente rápida. Esto ocasionará mayor carga, ya que el contenido que supere esta tasa de bits se convertirá para que esté dentro del límite establecido.", - "LabelRuntimeMinutes": "Tiempo de ejecución (minutos):", + "LabelRuntimeMinutes": "Tiempo de ejecución:", "LabelSaveLocalMetadata": "Guardar imágenes y etiquetas en las carpetas de medios", "LabelSaveLocalMetadataHelp": "Guardar imágenes y etiquetas directamente en las carpetas en las que estén los elementos hará que se puedan editar más fácilmente.", "LabelScheduledTaskLastRan": "Última ejecución {0}, tardando {1}.", @@ -609,7 +609,7 @@ "LabelSelectVersionToInstall": "Seleccionar versión a instalar:", "LabelSendNotificationToUsers": "Enviar la notificación a:", "LabelSerialNumber": "Número de serie", - "LabelSeriesRecordingPath": "Ruta de grabaciones de series (opcional):", + "LabelSeriesRecordingPath": "Ruta de grabaciones de Series:", "LabelServerHostHelp": "192.168.1.100:8096 o https://miservidor.com", "LabelSimultaneousConnectionLimit": "Límite de transmisiones simultáneas:", "LabelSkipIfAudioTrackPresent": "Omitir si la pista de audio por defecto coincide con el idioma de descarga", @@ -713,7 +713,7 @@ "MessageConfirmProfileDeletion": "¿Está seguro que desea eliminar este perfil?", "MessageConfirmRecordingCancellation": "¿Está seguro que desea cancelar esta grabación?", "MessageConfirmRemoveMediaLocation": "¿Estás seguro que quieres quitar esta ubicación?", - "MessageConfirmRestart": "¿Está seguro de que quieres reiniciar el servidor?", + "MessageConfirmRestart": "¿Está seguro de que quieres reiniciar Jellyfin?", "MessageConfirmRevokeApiKey": "¿Está seguro de que quieres revocar esta clave API? Las conexiones de aplicaciones que usen la API se terminarán.", "MessageConfirmShutdown": "¿Está seguro que quiere apagar el servidor?", "MessageContactAdminToResetPassword": "Por favor, contacta con el administrador del sistema para restablecer tu contraseña.", @@ -799,7 +799,7 @@ "OptionAllowVideoPlaybackRemuxing": "Activar el cambio de contenedor para el contenido cuyo audio y vídeo es compatible, pero no lo es su contenedor", "OptionAllowVideoPlaybackTranscoding": "Activar la conversión del vídeo", "OptionAutomaticallyGroupSeries": "Combinar automáticamente series que se distribuyen en varias carpetas", - "OptionAutomaticallyGroupSeriesHelp": "Si está activada, las series que se distribuyen entre varias carpetas dentro de esta biblioteca se fusionarán automáticamente en una sola serie.", + "OptionAutomaticallyGroupSeriesHelp": "Las series que se distribuyen entre varias carpetas dentro de esta biblioteca se fusionarán automáticamente en una sola serie.", "OptionCommunityRating": "Valoración de la comunidad", "OptionCriticRating": "Valoración de la crítica", "OptionCustomUsers": "A medida", @@ -809,12 +809,12 @@ "OptionDateAddedImportTime": "Usar fecha escaneada de la biblioteca", "OptionDatePlayed": "Fecha de reproducción", "OptionDisableUser": "Deshabilitar este usuario", - "OptionDisableUserHelp": "Si está deshabilitado, el servidor no aceptará conexiones de este usuario. Si existen conexiones de este usuario, finalizarán inmediatamente.", + "OptionDisableUserHelp": "El servidor no aceptará conexiones de este usuario. Si existen conexiones de este usuario, finalizarán inmediatamente.", "OptionDislikes": "No me gusta", "OptionDisplayFolderView": "Mostrar una vista de carpeta para ver las carpetas de medios en plano", "OptionDisplayFolderViewHelp": "Mostrar carpetas junto con tus otras bibliotecas de medios. Esto es útil si te gustar tener una vista plana de carpetas.", "OptionDownloadImagesInAdvance": "Descargar imágenes con antelación", - "OptionDownloadImagesInAdvanceHelp": "Por defecto, la mayoría de las imágenes solo se descargan cuando lo solicita una aplicación Jellyfin. Activa esta opción para descargar todas las imágenes por adelantado, a medida que se importan nuevos medios. Esto puede causar escaneos de biblioteca significativamente más largos.", + "OptionDownloadImagesInAdvanceHelp": "Por defecto, la mayoría de las imágenes solo se descargan cuando son solicitadas por un cliente. Activa esta opción para descargar todas las imágenes por adelantado, a medida que se importan nuevos medios. Esto puede causar escaneos de biblioteca significativamente más largos.", "OptionEmbedSubtitles": "Integrado con el contenedor", "OptionEnableAccessFromAllDevices": "Habilitar acceso desde todos los equipos", "OptionEnableAccessToAllChannels": "Habilitar acceso a todos los canales", @@ -835,7 +835,7 @@ "OptionHideUserFromLoginHelp": "Útil para privado o cuentas de administradores escondidos. El usuario tendrá que acceder entrando su nombre de usuario y contraseña manualmente.", "OptionHlsSegmentedSubtitles": "Subtítulos segmentados HLS", "OptionIgnoreTranscodeByteRangeRequests": "En las conversiones, ignorar las solicitudes de un intervalo específico de bytes", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "Si está activado, estas solicitudes serán atendidas pero ignorarán el encabezado de intervalo de bytes.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Estas solicitudes serán atendidas pero ignorarán el encabezado de intervalo de bytes.", "OptionImdbRating": "Valoración IMDb", "OptionLikes": "Me gusta", "OptionMax": "Máximo", @@ -844,9 +844,9 @@ "OptionOnInterval": "En un intervalo", "OptionParentalRating": "Clasificación parental", "OptionPlainStorageFolders": "Ver todas las carpetas como carpetas de almacenamiento sin formato", - "OptionPlainStorageFoldersHelp": "Si está activado, todas las carpetas se representan en DIDL como \"object.container.storageFolder\" en lugar de un tipo más específico, como por ejemplo \"object.container.person.musicArtist\".", + "OptionPlainStorageFoldersHelp": "Todas las carpetas se representan en DIDL como \"object.container.storageFolder\" en lugar de un tipo más específico, como por ejemplo \"object.container.person.musicArtist\".", "OptionPlainVideoItems": "Mostrar todos los videos como elementos de video sin formato", - "OptionPlainVideoItemsHelp": "Si está habilitado, todos los vídeos están representados en DIDL como \"object.item.videoItem\" en lugar de un tipo más específico, como por ejemplo \"object.item.videoItem.movie\".", + "OptionPlainVideoItemsHelp": "Todos los vídeos están representados en DIDL como \"object.item.videoItem\" en lugar de un tipo más específico, como por ejemplo \"object.item.videoItem.movie\".", "OptionPlayCount": "Número de reproducciones", "OptionPremiereDate": "Fecha de estreno", "OptionProfilePhoto": "Foto", @@ -860,7 +860,7 @@ "OptionResElement": "Elemento res", "OptionResumable": "Se puede continuar", "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.", + "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 el servidor.", "OptionSpecialEpisode": "Especiales", "OptionTrackName": "Nombre de pista", "OptionTvdbRating": "Valoración TVDB", @@ -892,9 +892,9 @@ "PleaseAddAtLeastOneFolder": "Por favor añade al menos una carpeta a esta biblioteca haciendo clic en el botón Añadir.", "PleaseConfirmPluginInstallation": "Por favor haz clic en OK para confirmar que has leído lo de arriba y quieres proceder con la instalación del complemento.", "PleaseEnterNameOrId": "Introduzca un nombre o un identificador externo.", - "PleaseRestartServerName": "Por favor, reinicie el Servidor de Jellyfin - {0}.", + "PleaseRestartServerName": "Por favor, reinicie Jellyfin en {0}.", "PleaseSelectTwoItems": "Seleccione al menos dos elementos.", - "MessagePluginInstalled": "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 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", @@ -952,10 +952,10 @@ "SeriesRecordingScheduled": "Grabación de series programada.", "SeriesSettings": "Ajustes de series", "SeriesYearToPresent": "{0} - Actualidad", - "ServerNameIsRestarting": "El servidor Jellyfin - {0} se esta reiniciando.", - "ServerNameIsShuttingDown": "El servidor Jellyfin - {0} se esta apagando.", - "ServerRestartNeededAfterPluginInstall": "El servidor Jellyfin necesitará ser reiniciado tras instalarse un complemento.", - "ServerUpdateNeeded": "El servidor necesita actualizarse. Para descargar la última versión visita {0}", + "ServerNameIsRestarting": "El servidor en {0} se está reiniciando.", + "ServerNameIsShuttingDown": "El servidor en {0} se está apagando.", + "ServerRestartNeededAfterPluginInstall": "Jellyfin necesitará ser reiniciado tras instalarse un complemento.", + "ServerUpdateNeeded": "El servidor necesita ser actualizado. Para descargar la última versión, por favor visita {0}", "Settings": "Ajustes", "SettingsSaved": "Configuración guardada.", "SettingsWarning": "Cambiar estos valores puede causar inestabilidad o fallos de conectividad. Si experimenta algún problema, le recomendamos que cambie de nuevo a su valor predeterminado.", @@ -1186,14 +1186,14 @@ "OptionProtocolHttp": "HTTP", "OptionRegex": "Regex (expresión regular)", "OptionSubstring": "Subcadena", - "PasswordResetProviderHelp": "Elige un proveedor de restablecimiento de contraseña que se utilizará cuando este usuario solicite un restablecimiento de contraseña", + "PasswordResetProviderHelp": "Elige un proveedor de restablecimiento de contraseña que se utilizará cuando este usuario solicite un restablecimiento de contraseña.", "PerfectMatch": "Coincidencia perfecta", "PictureInPicture": "Imagen sobre imagen", "PlaybackData": "Datos de reproducción", "PlayCount": "Reproducciones", "Premiere": "Estreno", "Raised": "Elevación", - "RefreshDialogHelp": "Las etiquetas se actualizan basándose en las configuraciones y los servicios de internet activados desde el panel de control de Jellyfin.", + "RefreshDialogHelp": "Las etiquetas se actualizan basándose en las configuraciones y los servicios de Internet activados desde el panel de control.", "Series": "Series", "SeriesDisplayOrderHelp": "Ordena los episodios por fecha de emisión, orden de DVD o número absoluto.", "ShowTitle": "Mostrar título", @@ -1305,7 +1305,7 @@ "LabelEnableHttps": "Activar HTTPS", "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", + "EnableBlurHashHelp": "Las imágenes que aún se están cargando se mostrarán con un marcador de posición único.", "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.", @@ -1318,7 +1318,7 @@ "MessageSyncPlayGroupDoesNotExist": "No se pudo unir al grupo porque no existe.", "MessageSyncPlayPlaybackPermissionRequired": "Requiere permiso para reproducir.", "MessageSyncPlayNoGroupsAvailable": "No hay grupos disponibles. Reproduce algo primero.", - "MessageSyncPlayGroupWait": "{0} se está cargando...", + "MessageSyncPlayGroupWait": "{0} se está cargando…", "MessageSyncPlayUserLeft": "{0} abandonó el grupo.", "MessageSyncPlayUserJoined": "{0} se ha unido al grupo.", "MessageSyncPlayDisabled": "SyncPlay inactivo.", @@ -1365,5 +1365,16 @@ "NextTrack": "Saltar al siguiente", "LabelUnstable": "Inestable", "Image": "Imagen", - "Data": "Datos" + "Data": "Datos", + "Poster": "Ilustración", + "PlaybackRate": "Tasa de reproducción", + "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.", + "Preview": "Vista previa", + "Video": "Video", + "Subtitle": "Subtitulo", + "SpecialFeatures": "Características Especiales", + "SelectServer": "Seleccionar Servidor", + "Restart": "Reiniciar", + "ResetPassword": "Reiniciar Contraseña", + "Profile": "Perfil" } From f4491c66c30fd5f803e78a79c7832c2d6bfdac71 Mon Sep 17 00:00:00 2001 From: Cameron Date: Mon, 31 Aug 2020 16:28:05 +0100 Subject: [PATCH 158/582] Hide image on even smaller screens data-type is added to keep images for music playlists This reverts commit 0982c15c3c670a19214c8b0d97b801f6ab7ea547. --- src/components/listview/listview.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/listview/listview.css b/src/components/listview/listview.css index edb8a1a97a..063eb74de5 100644 --- a/src/components/listview/listview.css +++ b/src/components/listview/listview.css @@ -191,6 +191,13 @@ } } +@media all and (max-width: 40em) { + [data-type='Movie'] .listItemImage, + [data-type='Series'] .listItemImage { + display: none; + } +} + .listItemImage-large-tv { width: 30vw !important; height: 20vw !important; From fec73157634101462be48d89b0e2cc84f3622165 Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 1 Sep 2020 09:47:30 +0100 Subject: [PATCH 159/582] Fix accessing subtitles and playback data --- src/components/dialogHelper/dialogHelper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index e1a267fed2..eb46d98b12 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -375,7 +375,7 @@ import 'scrollStyles'; dlg.setAttribute('data-lockscroll', 'true'); } - if (options.enableHistory !== false) { + if (options.enableHistory === true) { dlg.setAttribute('data-history', 'true'); } From 8900da42d8f08b1700e04e3296203c49f2dd7aac Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 1 Sep 2020 10:07:06 +0100 Subject: [PATCH 160/582] Hide Alphapicker when not sorting alphabetically (movies --- src/controllers/movies/movies.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index 91b428ec68..d48812cb94 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -26,6 +26,11 @@ import 'emby-itemscontainer'; const updateFilterControls = () => { if (this.alphaPicker) { this.alphaPicker.value(query.NameStartsWithOrGreater); + if (query.SortBy.indexOf('SortName') === 0) { + this.alphaPicker.visible(true); + } else { + this.alphaPicker.visible(false); + } } }; From 477ecfdc9fd8fe2185a8aab9e7c0b06152f8887e Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 1 Sep 2020 10:09:22 +0100 Subject: [PATCH 161/582] Hide Alphapicker when not sorting alphabetically (TV) --- src/controllers/shows/tvshows.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/controllers/shows/tvshows.js b/src/controllers/shows/tvshows.js index 281c921e48..31ef72621d 100644 --- a/src/controllers/shows/tvshows.js +++ b/src/controllers/shows/tvshows.js @@ -198,7 +198,16 @@ import 'emby-itemscontainer'; function updateFilterControls(tabContent) { const query = getQuery(tabContent); - self.alphaPicker.value(query.NameStartsWithOrGreater); + + if (self.alphaPicker) { + self.alphaPicker.value(query.NameStartsWithOrGreater); + + if (query.SortBy.indexOf('SortName') === 0) { + self.alphaPicker.visible(true); + } else { + self.alphaPicker.visible(false); + } + } } const self = this; From d8cb6068940d56034a92314754d2b3fdb0d08cef Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 1 Sep 2020 10:09:28 +0100 Subject: [PATCH 162/582] Hide Alphapicker when not sorting alphabetically (Music) --- src/controllers/music/musicalbums.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index 7ea8fa254a..5bb8546e76 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -186,7 +186,16 @@ import 'emby-itemscontainer'; const updateFilterControls = (tabContent) => { const query = getQuery(); - this.alphaPicker.value(query.NameStartsWithOrGreater); + + if (this.alphaPicker) { + this.alphaPicker.value(query.NameStartsWithOrGreater); + + if (query.SortBy.indexOf('SortName') === 0) { + this.alphaPicker.visible(true); + } else { + this.alphaPicker.visible(false); + } + } }; let savedQueryKey; From ab7fafa891b5c26ec758424a91c594fed7e03efb Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 1 Sep 2020 10:12:10 +0100 Subject: [PATCH 163/582] Remove ailiasing this --- src/controllers/shows/tvshows.js | 47 ++++++++++++++++---------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/src/controllers/shows/tvshows.js b/src/controllers/shows/tvshows.js index 31ef72621d..17407e4c5d 100644 --- a/src/controllers/shows/tvshows.js +++ b/src/controllers/shows/tvshows.js @@ -54,8 +54,8 @@ import 'emby-itemscontainer'; return context.savedQueryKey; } - function onViewStyleChange() { - const viewStyle = self.getCurrentViewStyle(); + const onViewStyleChange = () => { + const viewStyle = this.getCurrentViewStyle(); const itemsContainer = tabContent.querySelector('.itemsContainer'); if (viewStyle == 'List') { @@ -67,13 +67,13 @@ import 'emby-itemscontainer'; } itemsContainer.innerHTML = ''; - } + }; - function reloadItems(page) { + const reloadItems = (page) => { loading.show(); isLoading = true; const query = getQuery(page); - ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) { + ApiClient.getItems(ApiClient.getCurrentUserId(), query).then((result) => { function onNextPageClick() { if (isLoading) { return; @@ -109,7 +109,7 @@ import 'emby-itemscontainer'; sortButton: false, filterButton: false }); - const viewStyle = self.getCurrentViewStyle(); + const viewStyle = this.getCurrentViewStyle(); if (viewStyle == 'Thumb') { html = cardBuilder.getCardsHtml({ items: result.Items, @@ -196,25 +196,24 @@ import 'emby-itemscontainer'; }); } - function updateFilterControls(tabContent) { + const updateFilterControls = (tabContent) => { const query = getQuery(tabContent); - if (self.alphaPicker) { - self.alphaPicker.value(query.NameStartsWithOrGreater); + if (this.alphaPicker) { + this.alphaPicker.value(query.NameStartsWithOrGreater); if (query.SortBy.indexOf('SortName') === 0) { - self.alphaPicker.visible(true); + this.alphaPicker.visible(true); } else { - self.alphaPicker.visible(false); + this.alphaPicker.visible(false); } } - } + }; - const self = this; const data = {}; let isLoading = false; - self.showFilterMenu = function () { + this.showFilterMenu = function () { import('components/filterdialog/filterdialog').then(({default: filterDialogFactory}) => { const filterDialog = new filterDialogFactory({ query: getQuery(tabContent), @@ -229,11 +228,11 @@ import 'emby-itemscontainer'; }); }; - self.getCurrentViewStyle = function () { + this.getCurrentViewStyle = function () { return getPageData(tabContent).view; }; - function initPage(tabContent) { + const initPage = (tabContent) => { const alphaPickerElement = tabContent.querySelector('.alphaPicker'); const itemsContainer = tabContent.querySelector('.itemsContainer'); @@ -244,7 +243,7 @@ import 'emby-itemscontainer'; query.StartIndex = 0; reloadItems(tabContent); }); - self.alphaPicker = new AlphaPicker({ + this.alphaPicker = new AlphaPicker({ element: alphaPickerElement, valueChangeEvent: 'click' }); @@ -253,8 +252,8 @@ import 'emby-itemscontainer'; alphaPickerElement.classList.add('alphaPicker-fixed-right'); itemsContainer.classList.add('padded-right-withalphapicker'); - tabContent.querySelector('.btnFilter').addEventListener('click', function () { - self.showFilterMenu(); + tabContent.querySelector('.btnFilter').addEventListener('click', () => { + this.showFilterMenu(); }); tabContent.querySelector('.btnSort').addEventListener('click', function (e) { libraryBrowser.showSortMenu({ @@ -286,8 +285,8 @@ import 'emby-itemscontainer'; }); }); const btnSelectView = tabContent.querySelector('.btnSelectView'); - btnSelectView.addEventListener('click', function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); + btnSelectView.addEventListener('click', (e) => { + libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; @@ -297,17 +296,17 @@ import 'emby-itemscontainer'; onViewStyleChange(); reloadItems(tabContent); }); - } + }; initPage(tabContent); onViewStyleChange(); - self.renderTab = function () { + this.renderTab = function () { reloadItems(tabContent); updateFilterControls(tabContent); }; - self.destroy = function () {}; + this.destroy = function () {}; } /* eslint-enable indent */ From 840ef01a1303582584b914a31c650822fe57c6b5 Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 1 Sep 2020 10:13:15 +0100 Subject: [PATCH 164/582] Replace loops for for..of --- src/controllers/shows/tvshows.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/controllers/shows/tvshows.js b/src/controllers/shows/tvshows.js index 17407e4c5d..7d76c78faa 100644 --- a/src/controllers/shows/tvshows.js +++ b/src/controllers/shows/tvshows.js @@ -169,18 +169,18 @@ import 'emby-itemscontainer'; let elems = tabContent.querySelectorAll('.paging'); - for (let i = 0, length = elems.length; i < length; i++) { - elems[i].innerHTML = pagingHtml; + for (const elem of elems) { + elem.innerHTML = pagingHtml; } elems = tabContent.querySelectorAll('.btnNextPage'); - for (let i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener('click', onNextPageClick); + for (const elem of elems) { + elem.addEventListener('click', onNextPageClick); } elems = tabContent.querySelectorAll('.btnPreviousPage'); - for (let i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener('click', onPreviousPageClick); + for (const elem of elems) { + elem.addEventListener('click', onPreviousPageClick); } const itemsContainer = tabContent.querySelector('.itemsContainer'); @@ -194,7 +194,7 @@ import 'emby-itemscontainer'; autoFocuser.autoFocus(page); }); }); - } + }; const updateFilterControls = (tabContent) => { const query = getQuery(tabContent); From 4968f71858834e0ad29f9ad446698d0faa2e808d Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 1 Sep 2020 10:14:14 +0100 Subject: [PATCH 165/582] Replace loops for for..of --- src/controllers/music/musicalbums.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index 5bb8546e76..5ecb553024 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -155,20 +155,21 @@ import 'emby-itemscontainer'; overlayPlayButton: true }); } + let elems = tabContent.querySelectorAll('.paging'); - for (let i = 0, length = elems.length; i < length; i++) { - elems[i].innerHTML = pagingHtml; + for (const elem of elems) { + elem.innerHTML = pagingHtml; } elems = tabContent.querySelectorAll('.btnNextPage'); - for (let i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener('click', onNextPageClick); + for (const elem of elems) { + elem.addEventListener('click', onNextPageClick); } elems = tabContent.querySelectorAll('.btnPreviousPage'); - for (let i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener('click', onPreviousPageClick); + for (const elem of elems) { + elem.addEventListener('click', onPreviousPageClick); } const itemsContainer = tabContent.querySelector('.itemsContainer'); @@ -209,10 +210,12 @@ import 'emby-itemscontainer'; mode: 'albums', serverId: ApiClient.serverId() }); + events.on(filterDialog, 'filterchange', function () { getQuery().StartIndex = 0; reloadItems(tabContent); }); + filterDialog.show(); }); }; @@ -232,6 +235,7 @@ import 'emby-itemscontainer'; query.StartIndex = 0; reloadItems(tabContent); }); + this.alphaPicker = new AlphaPicker({ element: alphaPickerElement, valueChangeEvent: 'click' @@ -244,6 +248,7 @@ import 'emby-itemscontainer'; tabContent.querySelector('.btnFilter').addEventListener('click', () => { this.showFilterMenu(); }); + tabContent.querySelector('.btnSort').addEventListener('click', (e) => { libraryBrowser.showSortMenu({ items: [{ @@ -276,10 +281,12 @@ import 'emby-itemscontainer'; button: e.target }); }); + const btnSelectView = tabContent.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', (e) => { libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); + btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; getPageData().view = viewStyle; @@ -288,6 +295,7 @@ import 'emby-itemscontainer'; onViewStyleChange(); reloadItems(tabContent); }); + tabContent.querySelector('.btnPlayAll').addEventListener('click', playAll); tabContent.querySelector('.btnShuffle').addEventListener('click', shuffle); }; From f7d0b9491619262a8e420552872d16a6a5b9ca49 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 1 Sep 2020 13:32:12 +0300 Subject: [PATCH 166/582] Babel libarchive --- webpack.dev.js | 2 +- webpack.prod.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/webpack.dev.js b/webpack.dev.js index 3d0c2a48a0..33e171daa8 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -15,7 +15,7 @@ module.exports = merge(common, { rules: [ { test: /\.js$/, - exclude: /node_modules[\\/](?!date-fns|epubjs|jellyfin-apiclient|query-string|split-on-first|strict-uri-encode|xmldom)/, + exclude: /node_modules[\\/](?!date-fns|epubjs|libarchive|jellyfin-apiclient|query-string|split-on-first|strict-uri-encode|xmldom)/, use: { loader: 'babel-loader', options: { diff --git a/webpack.prod.js b/webpack.prod.js index 52d6d0a865..408eb4bb59 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -8,7 +8,7 @@ module.exports = merge(common, { rules: [ { test: /\.js$/, - exclude: /node_modules[\\/](?!date-fns|epubjs|jellyfin-apiclient|query-string|split-on-first|strict-uri-encode|xmldom)/, + exclude: /node_modules[\\/](?!date-fns|epubjs|libarchive|jellyfin-apiclient|query-string|split-on-first|strict-uri-encode|xmldom)/, use: { loader: 'babel-loader', options: { From 1a768f9335bfd200862a65a3d61aa0f5a8573c96 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 1 Sep 2020 12:13:30 +0000 Subject: [PATCH 167/582] Bump @babel/core from 7.11.4 to 7.11.5 Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.11.4 to 7.11.5. - [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.5/packages/babel-core) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 62 ++++++++++++++++++++++++++-------------------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index cb6c0dbbbb..2b941d5ff1 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.11.4", + "@babel/core": "^7.11.5", "@babel/eslint-parser": "^7.11.4", "@babel/eslint-plugin": "^7.11.3", "@babel/plugin-proposal-class-properties": "^7.10.1", diff --git a/yarn.lock b/yarn.lock index 51cad78150..c77614b392 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.11.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.4.tgz#4301dfdfafa01eeb97f1896c5501a3f0655d4229" - integrity sha512-5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg== +"@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.5.tgz#6ad96e2f71899ea3f9b651f0a911e85205d1ff6d" + integrity sha512-fsEANVOcZHzrsV6dMVWqpSeXClq3lNbYrfFGme6DE25FQWe7pyeYpXyx9guqUnpy466JLzZ8z4uwSr2iv60V5Q== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.4" + "@babel/generator" "^7.11.5" "@babel/helper-module-transforms" "^7.11.0" "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.4" + "@babel/parser" "^7.11.5" "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.0" - "@babel/types" "^7.11.0" + "@babel/traverse" "^7.11.5" + "@babel/types" "^7.11.5" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -38,7 +38,7 @@ lodash "^4.17.19" resolve "^1.3.2" semver "^5.4.1" - source-map "^0.5.0" + source-map "^0.6.1" "@babel/eslint-parser@^7.11.4": version "7.11.4" @@ -56,14 +56,14 @@ dependencies: eslint-rule-composer "^0.3.0" -"@babel/generator@^7.11.0", "@babel/generator@^7.11.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.4.tgz#1ec7eec00defba5d6f83e50e3ee72ae2fee482be" - integrity sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g== +"@babel/generator@^7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.5.tgz#a5582773425a468e4ba269d9a1f701fbca6a7a82" + integrity sha512-9UqHWJ4IwRTy4l0o8gq2ef8ws8UPzvtMkVKjTLAiRmza9p9V6Z+OfuNd9fB1j5Q67F+dVJtPC2sZXI8NM9br4g== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.11.5" jsesc "^2.5.1" - source-map "^0.5.0" + source-map "^0.6.1" "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" @@ -281,10 +281,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.11.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.4.tgz#6fa1a118b8b0d80d0267b719213dc947e88cc0ca" - integrity sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA== +"@babel/parser@^7.10.4", "@babel/parser@^7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" + integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== "@babel/plugin-proposal-async-generator-functions@^7.10.4": version "7.10.4" @@ -838,25 +838,25 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" -"@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== +"@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" + integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.0" + "@babel/generator" "^7.11.5" "@babel/helper-function-name" "^7.10.4" "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.0" - "@babel/types" "^7.11.0" + "@babel/parser" "^7.11.5" + "@babel/types" "^7.11.5" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" -"@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== +"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.4.4": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" + integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== dependencies: "@babel/helper-validator-identifier" "^7.10.4" lodash "^4.17.19" @@ -10334,7 +10334,7 @@ source-map@^0.4.2: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6: +source-map@^0.5.1, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= From 2e59af82ac3eeb195fc7990d13d6ad1e7762c51e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 1 Sep 2020 13:15:37 +0000 Subject: [PATCH 168/582] Bump @babel/preset-env from 7.11.0 to 7.11.5 Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.11.0 to 7.11.5. - [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.5/packages/babel-preset-env) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index cb6c0dbbbb..7408543876 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,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.11.0", + "@babel/preset-env": "^7.11.5", "autoprefixer": "^9.8.6", "babel-loader": "^8.0.6", "browser-sync": "^2.26.12", diff --git a/yarn.lock b/yarn.lock index 51cad78150..2e7828362f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -737,10 +737,10 @@ core-js "^2.6.5" regenerator-runtime "^0.13.4" -"@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== +"@babel/preset-env@^7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.5.tgz#18cb4b9379e3e92ffea92c07471a99a2914e4272" + integrity sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA== dependencies: "@babel/compat-data" "^7.11.0" "@babel/helper-compilation-targets" "^7.10.4" @@ -804,7 +804,7 @@ "@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.11.0" + "@babel/types" "^7.11.5" browserslist "^4.12.0" core-js-compat "^3.6.2" invariant "^2.2.2" @@ -853,10 +853,10 @@ globals "^11.1.0" lodash "^4.17.19" -"@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== +"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.4.4": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" + integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== dependencies: "@babel/helper-validator-identifier" "^7.10.4" lodash "^4.17.19" From f2e559540bb619479d4efc0cfb5c73ce6b15704a Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 1 Sep 2020 15:48:22 +0000 Subject: [PATCH 169/582] Bump hls.js from 0.14.10 to 0.14.11 Bumps [hls.js](https://github.com/video-dev/hls.js) from 0.14.10 to 0.14.11. - [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.10...v0.14.11) 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 cb6c0dbbbb..45187c35fb 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "fast-text-encoding": "^1.0.3", "flv.js": "^1.5.0", "headroom.js": "^0.11.0", - "hls.js": "^0.14.10", + "hls.js": "^0.14.11", "howler": "^2.2.0", "intersection-observer": "^0.11.0", "jellyfin-apiclient": "^1.4.1", diff --git a/yarn.lock b/yarn.lock index 51cad78150..60c2a6ff1b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5477,10 +5477,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.10: - version "0.14.10" - resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.10.tgz#51365ecc2764066e6b4379587aee64c1e181f683" - integrity sha512-muBt5Gxhapgk2uV8aEKRYe9GJ6AI5niFfDuOd8ZXHga519RNJ0+QAeRPdEpl1QKMqj1lT/6r/WKVnLL+ePB6ow== +hls.js@^0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.11.tgz#b3d123c45b1feb8c5c19f70574074fa0a77e016b" + integrity sha512-l7fm8AAEIIVc9r+RZbVAPcpccWIk6oludZ7R78B/ZJsYvuL5LJF8h0o8iayoIcbPT8ArM8vBhOkWFbe9q46Kew== dependencies: eventemitter3 "^4.0.3" url-toolkit "^2.1.6" From a335246f5d1d68b4151ef0c36034aafa6bad9bd0 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 1 Sep 2020 16:15:52 +0000 Subject: [PATCH 170/582] Bump eslint from 7.7.0 to 7.8.0 Bumps [eslint](https://github.com/eslint/eslint) from 7.7.0 to 7.8.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.7.0...v7.8.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 53 ++++++++++++++++++++++++++-------------------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index cb6c0dbbbb..bfdff8873a 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "css-loader": "^4.2.2", "cssnano": "^4.1.10", "del": "^5.1.0", - "eslint": "^7.7.0", + "eslint": "^7.8.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 51cad78150..b32a92dd26 100644 --- a/yarn.lock +++ b/yarn.lock @@ -867,6 +867,16 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== +"@eslint/eslintrc@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.0.tgz#3d1f19fb797d42fb1c85458c1c73541eeb1d9e76" + integrity sha512-bfL5365QSCmH6cPeFT7Ywclj8C7LiF7sO6mUGzZhtAMV7iID1Euq6740u/SRi4C80NOnVz/CEfK8/HO+nCAPJg== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + import-fresh "^3.2.1" + strip-json-comments "^3.1.1" + "@gulp-sourcemaps/identity-map@1.X": version "1.0.2" resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9" @@ -1258,10 +1268,10 @@ acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" - integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== +acorn@^7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" + integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== after@0.8.2: version "0.8.2" @@ -1291,17 +1301,7 @@ ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.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== - 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.12.4: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.5.5: version "6.12.4" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== @@ -4051,12 +4051,13 @@ 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.7.0: - version "7.7.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.7.0.tgz#18beba51411927c4b64da0a8ceadefe4030d6073" - integrity sha512-1KUxLzos0ZVsyL81PnRN335nDtQ8/vZUD6uMtWbF+5zDtjKcsklIi78XoE0MVL93QvWTu+E5y44VyyCsOMBrIg== +eslint@^7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.8.0.tgz#9a3e2e6e4d0a3f8c42686073c25ebf2e91443e8a" + integrity sha512-qgtVyLZqKd2ZXWnLQA4NtVbOyH56zivOAdBFWE54RFkSZjokzNrcP4Z0eVWsZ+84ByXv+jL9k/wE1ENYe8xRFw== dependencies: "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.1.0" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -4066,7 +4067,7 @@ eslint@^7.7.0: eslint-scope "^5.1.0" eslint-utils "^2.1.0" eslint-visitor-keys "^1.3.0" - espree "^7.2.0" + espree "^7.3.0" esquery "^1.2.0" esutils "^2.0.2" file-entry-cache "^5.0.1" @@ -4093,12 +4094,12 @@ eslint@^7.7.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -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== +espree@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" + integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== dependencies: - acorn "^7.3.1" + acorn "^7.4.0" acorn-jsx "^5.2.0" eslint-visitor-keys "^1.3.0" @@ -10738,7 +10739,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.0: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 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== From d898c1676a89fd90b3e2446b1649d9cdea235b97 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Tue, 1 Sep 2020 13:20:26 -0400 Subject: [PATCH 171/582] Fix old iOS devices that do not support AC-3 --- src/scripts/browserDeviceProfile.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/scripts/browserDeviceProfile.js b/src/scripts/browserDeviceProfile.js index 67c75da901..9e4a410cea 100644 --- a/src/scripts/browserDeviceProfile.js +++ b/src/scripts/browserDeviceProfile.js @@ -70,6 +70,12 @@ define(['browser'], function (browser) { return true; } + // iPhones 5c and older and old model iPads do not support AC-3/E-AC-3 + // These models can only run iOS 10.x or lower + if (browser.iOS && browser.iOSVersion < 11) { + return false; + } + return videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/, ''); } @@ -78,6 +84,12 @@ define(['browser'], function (browser) { return true; } + // iPhones 5c and older and old model iPads do not support AC-3/E-AC-3 + // These models can only run iOS 10.x or lower + if (browser.iOS && browser.iOSVersion < 11) { + return false; + } + return videoTestElement.canPlayType('audio/mp4; codecs="ec-3"').replace(/no/, ''); } From 8bc84fba3cfc0bc0c0a323ee394ee947e84863ec Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Tue, 1 Sep 2020 14:45:54 +0000 Subject: [PATCH 172/582] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 186b02dfa1..920265f15b 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1380,5 +1380,18 @@ "PersonRole": "{0} என", "ListPaging": "{0} - {2} இன் {1}", "WriteAccessRequired": "ஜெல்லிஃபினுக்கு இந்த கோப்புறையில் எழுத அணுகல் தேவை. எழுதும் அணுகலை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.", - "PlaybackRate": "பின்னணி வீதம்" + "PlaybackRate": "பின்னணி வீதம்", + "Video": "காணொளி", + "ThumbCard": "சிறுபடம்", + "Subtitle": "வசன வரிகள்", + "SpecialFeatures": "சிறப்பு அம்சங்கள்", + "SelectServer": "சேவையகத்தைத் தேர்ந்தெடுக்கவும்", + "Restart": "மறுதொடக்கம்", + "ResetPassword": "கடவுச்சொல்லை மீட்டமைக்க", + "Profile": "சுயவிவரம்", + "PosterCard": "சுவரொட்டி அட்டை", + "Poster": "சுவரொட்டி", + "MusicVideos": "இசை கானொளி", + "Image": "படம்", + "Data": "தகவல்கள்" } From 909228ff73dc4108cb4fe3dd0e95aa6f82cdc94c Mon Sep 17 00:00:00 2001 From: sp0ken Date: Tue, 1 Sep 2020 19:46:22 +0000 Subject: [PATCH 173/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 45c287298b..42419fbd62 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1366,5 +1366,14 @@ "LabelSubtitleVerticalPosition": "Position verticale :", "MessageGetInstalledPluginsError": "Une erreur est survenue lors de la récupération de la liste des extensions installées.", "MessagePluginInstallError": "Une erreur est survenue durant l'installation de l'extension.", - "PlaybackRate": "Vitesse de lecture" + "PlaybackRate": "Vitesse de lecture", + "Subtitle": "Sous-titre", + "SelectServer": "Choisissez un serveur", + "Restart": "Redémarrer", + "ResetPassword": "Réinitialiser le mot de passe", + "Profile": "Profil", + "Poster": "Affiche", + "MusicVideos": "Clips musicaux", + "Image": "Image", + "Data": "Données" } From eccaad366e6150c7dfa2010275714ee8dba8aa07 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 1 Sep 2020 23:52:27 +0300 Subject: [PATCH 174/582] Add timeout for polyfilled CustomElements (webOS 1.2) --- src/components/viewContainer.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/viewContainer.js b/src/components/viewContainer.js index 9d64130cdb..6be8cfd19b 100644 --- a/src/components/viewContainer.js +++ b/src/components/viewContainer.js @@ -82,7 +82,8 @@ import 'css!components/viewManager/viewContainer'; } allPages[pageIndex] = view; - setControllerClass(view, options).then(() => { + // Timeout for polyfilled CustomElements (webOS 1.2) + setControllerClass(view, options).then(() => new Promise((resolve) => setTimeout(resolve, 0))).then(() => { if (onBeforeChange) { onBeforeChange(view, false, options); } From 748592fa9310732bff082466a3308a51f24740bb Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Wed, 2 Sep 2020 01:06:07 +0300 Subject: [PATCH 175/582] Remove nested Promise --- src/components/viewContainer.js | 75 +++++++++++++++++---------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/src/components/viewContainer.js b/src/components/viewContainer.js index 6be8cfd19b..bbec0c0e65 100644 --- a/src/components/viewContainer.js +++ b/src/components/viewContainer.js @@ -36,54 +36,56 @@ import 'css!components/viewManager/viewContainer'; const newViewInfo = normalizeNewView(options, isPluginpage); const newView = newViewInfo.elem; - return new Promise((resolve) => { - 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.$) { - mainAnimatedPages.removeChild(currentPage); - view = $(view).appendTo(mainAnimatedPages)[0]; - } else { - mainAnimatedPages.replaceChild(view, currentPage); - } + if (currentPage) { + if (newViewInfo.hasScript && window.$) { + mainAnimatedPages.removeChild(currentPage); + view = $(view).appendTo(mainAnimatedPages)[0]; } else { - if (newViewInfo.hasScript && window.$) { - view = $(view).appendTo(mainAnimatedPages)[0]; - } else { - mainAnimatedPages.appendChild(view); - } + mainAnimatedPages.replaceChild(view, currentPage); } - - if (options.type) { - view.setAttribute('data-type', options.type); + } else { + if (newViewInfo.hasScript && window.$) { + view = $(view).appendTo(mainAnimatedPages)[0]; + } else { + mainAnimatedPages.appendChild(view); } + } - const properties = []; + if (options.type) { + view.setAttribute('data-type', options.type); + } - if (options.fullscreen) { - properties.push('fullscreen'); - } + const properties = []; - if (properties.length) { - view.setAttribute('data-properties', properties.join(',')); - } + if (options.fullscreen) { + properties.push('fullscreen'); + } - allPages[pageIndex] = view; + if (properties.length) { + view.setAttribute('data-properties', properties.join(',')); + } + + allPages[pageIndex] = view; + + return setControllerClass(view, options) // Timeout for polyfilled CustomElements (webOS 1.2) - setControllerClass(view, options).then(() => new Promise((resolve) => setTimeout(resolve, 0))).then(() => { + .then(() => new Promise((resolve) => setTimeout(resolve, 0))) + .then(() => { if (onBeforeChange) { onBeforeChange(view, false, options); } @@ -101,9 +103,8 @@ import 'css!components/viewManager/viewContainer'; $.mobile.activePage = view; } - resolve(view); + return view; }); - }); } } From 459d6907d5e644a95155df29898af667575c374c Mon Sep 17 00:00:00 2001 From: dkanada Date: Wed, 2 Sep 2020 14:54:54 +0900 Subject: [PATCH 176/582] fix a common error message and update some strings --- src/components/playback/playbackmanager.js | 20 ++++++------- src/controllers/dashboard/dlna/profile.html | 32 ++++++++++----------- src/controllers/dashboard/library.js | 14 ++++----- src/strings/en-us.json | 5 ++++ 4 files changed, 36 insertions(+), 35 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 4554956415..82bce8075e 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -639,22 +639,18 @@ function supportsDirectPlay(apiClient, item, mediaSource) { function validatePlaybackInfoResult(instance, result) { if (result.ErrorCode) { - showPlaybackInfoErrorMessage(instance, result.ErrorCode); + showPlaybackInfoErrorMessage(instance, 'PlaybackError' + result.ErrorCode); return false; } return true; } -function showPlaybackInfoErrorMessage(instance, errorCode, playNextTrack) { +function showPlaybackInfoErrorMessage(instance, errorCode) { import('alert').then(({ default: alert }) => { alert({ - text: globalize.translate('PlaybackError' + errorCode), + text: globalize.translate(errorCode), title: globalize.translate('HeaderPlaybackError') - }).then(function () { - if (playNextTrack) { - instance.nextTrack(); - } }); }); } @@ -1701,7 +1697,7 @@ class PlaybackManager { streamInfo.lastMediaInfoQuery = lastMediaInfoQuery; if (!streamInfo.url) { - showPlaybackInfoErrorMessage(self, 'NoCompatibleStream', true); + showPlaybackInfoErrorMessage(self, 'PlaybackErrorNoCompatibleStream'); return; } @@ -2061,7 +2057,7 @@ class PlaybackManager { // If it's still null then there's nothing to play if (!firstItem) { - showPlaybackInfoErrorMessage(self, 'NoCompatibleStream', false); + showPlaybackInfoErrorMessage(self, 'PlaybackErrorNoCompatibleStream'); return Promise.reject(); } @@ -2110,7 +2106,7 @@ class PlaybackManager { function playInternal(item, playOptions, onPlaybackStartedFn) { if (item.IsPlaceHolder) { loading.hide(); - showPlaybackInfoErrorMessage(self, 'PlaceHolder', true); + showPlaybackInfoErrorMessage(self, 'PlaybackErrorPlaceHolder'); return Promise.reject(); } @@ -2479,7 +2475,7 @@ class PlaybackManager { return mediaSource; } } else { - showPlaybackInfoErrorMessage(self, 'NoCompatibleStream'); + showPlaybackInfoErrorMessage(self, 'PlaybackErrorNoCompatibleStream'); return Promise.reject(); } }); @@ -2968,7 +2964,7 @@ class PlaybackManager { } if (displayErrorCode && typeof (displayErrorCode) === 'string') { - showPlaybackInfoErrorMessage(self, displayErrorCode, nextItem); + showPlaybackInfoErrorMessage(self, 'PlaybackError' + displayErrorCode); } else if (nextItem) { self.nextTrack(); } else { diff --git a/src/controllers/dashboard/dlna/profile.html b/src/controllers/dashboard/dlna/profile.html index 1850076a79..22edffed99 100644 --- a/src/controllers/dashboard/dlna/profile.html +++ b/src/controllers/dashboard/dlna/profile.html @@ -33,11 +33,11 @@ @@ -144,19 +144,19 @@
    -
    ${LabelAlbumArtMaxWidthHelp}
    +
    ${LabelAlbumArtMaxResHelp}
    -
    ${LabelAlbumArtMaxHeightHelp}
    +
    ${LabelAlbumArtMaxResHelp}
    -
    ${LabelIconMaxWidthHelp}
    +
    ${LabelIconMaxResHelp}
    -
    ${LabelIconMaxHeightHelp}
    +
    ${LabelIconMaxResHelp}
    @@ -280,8 +280,8 @@
    @@ -328,8 +328,8 @@
    @@ -404,8 +404,8 @@
    @@ -434,8 +434,8 @@

    ${HeaderCodecProfileHelp}

    @@ -463,8 +463,8 @@
    diff --git a/src/controllers/dashboard/library.js b/src/controllers/dashboard/library.js index d2bf379ebc..0abda33b6e 100644 --- a/src/controllers/dashboard/library.js +++ b/src/controllers/dashboard/library.js @@ -218,29 +218,29 @@ import 'emby-itemrefreshindicator'; name: '', value: '' }, { - name: globalize.translate('FolderTypeMovies'), + name: globalize.translate('Movies'), value: 'movies', message: getLink('MovieLibraryHelp', 'https://docs.jellyfin.org/general/server/media/movies.html') }, { - name: globalize.translate('FolderTypeMusic'), + name: globalize.translate('TabMusic'), value: 'music', message: getLink('MusicLibraryHelp', 'https://docs.jellyfin.org/general/server/media/music.html') }, { - name: globalize.translate('FolderTypeTvShows'), + name: globalize.translate('Shows'), value: 'tvshows', message: getLink('TvLibraryHelp', 'https://docs.jellyfin.org/general/server/media/shows.html') }, { - name: globalize.translate('FolderTypeBooks'), + name: globalize.translate('Books'), value: 'books', message: getLink('BookLibraryHelp', 'https://docs.jellyfin.org/general/server/media/books.html') }, { name: globalize.translate('Photos'), value: 'homevideos' }, { - name: globalize.translate('FolderTypeMusicVideos'), + name: globalize.translate('MusicVideos'), value: 'musicvideos' }, { - name: globalize.translate('FolderTypeUnset'), + name: globalize.translate('Other'), value: 'mixed', message: globalize.translate('MessageUnsetContentHelp') }]; @@ -326,7 +326,7 @@ import 'emby-itemrefreshindicator'; let typeName = getCollectionTypeOptions().filter(function (t) { return t.value == virtualFolder.CollectionType; })[0]; - typeName = typeName ? typeName.name : globalize.translate('FolderTypeUnset'); + typeName = typeName ? typeName.name : globalize.translate('Other'); html += "
    "; if (virtualFolder.showType === false) { diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 894a8aaefb..a6df7052d1 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -244,6 +244,7 @@ "General": "General", "Genre": "Genre", "Genres": "Genres", + "Other": "Other", "GroupBySeries": "Group by series", "GroupVersions": "Group versions", "GuestStar": "Guest star", @@ -467,6 +468,7 @@ "LabelAirsBeforeEpisode": "Airs before episode:", "LabelAirsBeforeSeason": "Airs before season:", "LabelAlbum": "Album:", + "LabelAlbumArtMaxResHelp": "Maximum resolution of album art exposed via the upnp:albumArtURI property.", "LabelAlbumArtHelp": "PN used for album art, within the dlna:profileID attribute on upnp:albumArtURI. Some devices require a specific value, regardless of the size of the image.", "LabelAlbumArtMaxHeight": "Album art max height:", "LabelAlbumArtMaxHeightHelp": "Max resolution of album art exposed via upnp:albumArtURI.", @@ -593,6 +595,7 @@ "LabelHomeScreenSectionValue": "Home screen section {0}:", "LabelHttpsPort": "Local HTTPS port number:", "LabelHttpsPortHelp": "The TCP port number for the HTTPS server.", + "LabelIconMaxResHelp": "Maximum resolution of icons exposed via the upnp:icon property.", "LabelIconMaxHeight": "Icon maximum height:", "LabelIconMaxHeightHelp": "Maximum resolution of icons exposed via upnp:icon.", "LabelIconMaxWidth": "Icon maximum width:", @@ -1115,6 +1118,7 @@ "PerfectMatch": "Perfect match", "Person": "Person", "Photos": "Photos", + "Photo": "Photo", "PictureInPicture": "Picture in picture", "PinCodeResetComplete": "The pin code has been reset.", "PinCodeResetConfirmation": "Are you sure you wish to reset the pin code?", @@ -1337,6 +1341,7 @@ "ValueVideoCodec": "Video Codec: {0}", "Vertical": "Vertical", "Video": "Video", + "VideoAudio": "Video Audio", "ViewAlbum": "View album", "ViewAlbumArtist": "View album artist", "ViewPlaybackInfo": "View playback info", From a1a149178e6b168d53e7f1989c02bd78096c5ec7 Mon Sep 17 00:00:00 2001 From: dkanada Date: Wed, 2 Sep 2020 14:58:56 +0900 Subject: [PATCH 177/582] update translation files --- src/strings/ar.json | 13 ------------- src/strings/bg-bg.json | 13 ------------- src/strings/ca.json | 8 -------- src/strings/cs.json | 13 ------------- src/strings/da.json | 13 ------------- src/strings/de.json | 13 ------------- src/strings/el.json | 11 ----------- src/strings/en-gb.json | 13 ------------- src/strings/en-us.json | 13 ------------- src/strings/es-ar.json | 13 ------------- src/strings/es-mx.json | 13 ------------- src/strings/es.json | 13 ------------- src/strings/es_419.json | 13 ------------- src/strings/fa.json | 13 ------------- src/strings/fi.json | 9 --------- src/strings/fr-ca.json | 1 - src/strings/fr.json | 13 ------------- src/strings/gsw.json | 5 ----- src/strings/he.json | 9 --------- src/strings/hr.json | 12 ------------ src/strings/hu.json | 13 ------------- src/strings/id.json | 6 ------ src/strings/is-is.json | 6 ------ src/strings/it.json | 13 ------------- src/strings/ja.json | 13 ------------- src/strings/kk.json | 13 ------------- src/strings/ko.json | 13 ------------- src/strings/lt-lt.json | 8 -------- src/strings/lv.json | 13 ------------- src/strings/ms.json | 1 - src/strings/nb.json | 13 ------------- src/strings/nl.json | 13 ------------- src/strings/pl.json | 13 ------------- src/strings/pr.json | 2 -- src/strings/pt-br.json | 13 ------------- src/strings/pt-pt.json | 13 ------------- src/strings/pt.json | 13 ------------- src/strings/ro.json | 13 ------------- src/strings/ru.json | 13 ------------- src/strings/sk.json | 13 ------------- src/strings/sl-si.json | 13 ------------- src/strings/sv.json | 13 ------------- src/strings/ta.json | 13 ------------- src/strings/tr.json | 9 --------- src/strings/uk.json | 4 ---- src/strings/vi.json | 10 ---------- src/strings/zh-cn.json | 13 ------------- src/strings/zh-hk.json | 6 ------ src/strings/zh-tw.json | 13 ------------- 49 files changed, 536 deletions(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index 67845cc458..27966775fc 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -87,12 +87,6 @@ "FileNotFound": "الملف غير موجود.", "FileReadCancelled": "تم الغاء قراءة الملف.", "FileReadError": "حدث خطأ بقراءة الملف.", - "FolderTypeBooks": "كتب", - "FolderTypeMovies": "أفلام", - "FolderTypeMusic": "موسيقى", - "FolderTypeMusicVideos": "الفيديوهات الموسيقية", - "FolderTypeTvShows": "تلفاز", - "FolderTypeUnset": "غير مخصص (خليط محتويات)", "Friday": "الجمعة", "Fullscreen": "الشاشة كاملة", "GuideProviderLogin": "تسجيل الدخول", @@ -242,9 +236,7 @@ "LabelAlbum": "الألبوم:", "LabelAlbumArtHelp": "PN المستخدمة في رسومات الألبوم، داخل سمة dlna:profileID في upnp:albumArtURI. بعض الأجهزة تحتاج قيمة محددة، مهما كان حجم الصورة.", "LabelAlbumArtMaxHeight": "الارتفاع الأقصى لرسومات الألبوم:", - "LabelAlbumArtMaxHeightHelp": "الدقة القصوى لرسومات الألبوم المظهّرة عبر سمة upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "العرض الأقصى لرسوم الألبوم:", - "LabelAlbumArtMaxWidthHelp": "الدقة القصوى لرسومات الألبوم المظهّرة عبر سمة upnp:albumArtURI.", "LabelAlbumArtPN": "رسومات الألبوم PN:", "LabelAlbumArtists": "فنانو الألبومات:", "LabelAllowHWTranscoding": "السماح بالتشفير البيني بعتاد الحاسب", @@ -326,9 +318,7 @@ "LabelHttpsPort": "رقم منفذ https المحتلي:", "LabelHttpsPortHelp": "رقم منفذ tcp المتوجب على بروتوكول https أن يرتبط من خلاله في خادم أمبي.", "LabelIconMaxHeight": "الارتفاع الأقصى للأيقونة.", - "LabelIconMaxHeightHelp": "الدقة القصوى للأيقونة المظهّرة عبر سمة upnp:icon.", "LabelIconMaxWidth": "العرض الأقصى للأيقونة:", - "LabelIconMaxWidthHelp": "الدقة القصوى لرسومات الألبوم المظهّرة عبر سمة upnp:icon.", "LabelImageFetchersHelp": "مكّن ورتّب جالبات الصور التي تفضلها حسب أولوية التفضيل.", "LabelImageType": "صيغة الصورة:", "LabelImportOnlyFavoriteChannels": "أحصر العرض على القنوات المعلّمة كمفضلات", @@ -624,9 +614,6 @@ "OptionPlainVideoItemsHelp": "عند التفعيل، فإن جميع الفيديوهات ستُمثّل في مخطط DIDL كالتالي: \"كائن.عنصر.عنصر_فيديو\" بدلاً من النوع الأكثر تخصيصاً كما يلي \"كائن.عنصر.عنصر_فيديو.فيلم\".", "OptionPlayCount": "مرات التشغيل", "OptionPremiereDate": "تاريخ العرض", - "OptionProfilePhoto": "صور", - "OptionProfileVideo": "الفيديو", - "OptionProfileVideoAudio": "صوتي مرئي", "OptionProtocolHls": "البت الحي عبر http", "OptionReleaseDate": "تاريخ الإنتاج", "OptionReportByteRangeSeekingWhenTranscoding": "قرّر ما إذا كان الخادم يدعم البحث عن البايت حال التشفير", diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index b26c68f993..73180bb247 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -96,12 +96,6 @@ "Favorites": "Любими", "File": "Файл", "Filters": "Филтри", - "FolderTypeBooks": "Книги", - "FolderTypeMovies": "Филми", - "FolderTypeMusic": "Музика", - "FolderTypeMusicVideos": "Музикални клипове", - "FolderTypeTvShows": "Сериали", - "FolderTypeUnset": "Смесено съдържание", "FormatValue": "Формат: {0}", "Friday": "Петък", "Fullscreen": "Цял екран", @@ -484,9 +478,6 @@ "OptionPlainVideoItems": "Показвай всички видео клипове като обикновени", "OptionPlayCount": "Брой пускания", "OptionPremiereDate": "Дата на премиера", - "OptionProfilePhoto": "Снимка", - "OptionProfileVideo": "Видео", - "OptionProfileVideoAudio": "Видео Аудио", "OptionReleaseDate": "Дата на издаване", "OptionRequirePerfectSubtitleMatch": "Да се изтеглят само субтитри, които пасват идеално на файловете ми", "OptionResumable": "Възобновляемост", @@ -903,8 +894,6 @@ "LabelAllowedRemoteAddressesMode": "Режим на филтъра за външни ИП адреси:", "LabelAllowedRemoteAddresses": "Филтър за външни ИП адреси:", "LabelAllowHWTranscoding": "Разреши хардуерно транскодиране", - "LabelAlbumArtMaxWidthHelp": "Максимална резолюция на обложките за албуми показани чрез upnp:albumArtURI.", - "LabelAlbumArtMaxHeightHelp": "Максимална резолюция на обложките за албуми показани чрез upnp:albumArtURI.", "LabelAlbumArtMaxHeight": "Максимална височина на обложките за албуми:", "LabelAlbumArtHelp": "PN се използва за обложки на албуми dlna:profileID attribute on upnp:albumArtURI.Някои устройства се нуждаят от определена стойност ,независимо от размера на картината.", "LabelAirsBeforeSeason": "Ще бъде излъчен преди сезон:", @@ -998,9 +987,7 @@ "LabelInNetworkSignInWithEasyPassword": "Включи вписване в мрежата с лесен пин код", "LabelImportOnlyFavoriteChannels": "Ограничи до канали обозначени ,като любими", "LabelImageFetchersHelp": "Включете и подредете любимите ви услуги за извличане на изображения по важност.", - "LabelIconMaxWidthHelp": "Максимална резолюция на иконите показани чрез upnp:icon.", "LabelIconMaxWidth": "Максимална ширина на икона:", - "LabelIconMaxHeightHelp": "Максимална резолюция на иконите показани чрез upnp:icon.", "LabelIconMaxHeight": "Максимална височина на икона:", "LabelHardwareAccelerationTypeHelp": "Хардуерното ускорение се нуждае от допълнителни настройки.", "LabelEncoderPreset": "Шаблон за енкодиране чрез H264 и H265 :", diff --git a/src/strings/ca.json b/src/strings/ca.json index 0c660ca028..7c2356e87e 100644 --- a/src/strings/ca.json +++ b/src/strings/ca.json @@ -84,12 +84,6 @@ "FileNotFound": "Arxiu no trobat.", "FileReadCancelled": "La lectura de l'arxiu ha estat cancel·lada.", "FileReadError": "S'ha produït un error en llegir el fitxer.", - "FolderTypeBooks": "Llibres", - "FolderTypeMovies": "Pel·lícules", - "FolderTypeMusic": "Música", - "FolderTypeMusicVideos": "Vídeos musicals", - "FolderTypeTvShows": "TV", - "FolderTypeUnset": "No definit (contingut mesclat)", "Friday": "Divendres", "Fullscreen": "Pantalla completa", "Genres": "Gèneres", @@ -465,8 +459,6 @@ "OptionOnInterval": "En un interval", "OptionParentalRating": "Classificació Parental", "OptionPlayCount": "Nombre de Reproduccions", - "OptionProfilePhoto": "Foto", - "OptionProfileVideo": "Vídeo", "OptionReleaseDate": "Data de Publicació", "OptionResumable": "Continuable", "OptionSaveMetadataAsHidden": "Desa les metadades i les imatges com a fitxers ocults", diff --git a/src/strings/cs.json b/src/strings/cs.json index 6623993c6a..98000ccc87 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -162,12 +162,6 @@ "FileNotFound": "Soubor nebyl nalezen.", "FileReadCancelled": "Čtení souboru bylo zrušeno.", "FileReadError": "Nastala chyba při načítání souboru.", - "FolderTypeBooks": "Knihy", - "FolderTypeMovies": "Filmy", - "FolderTypeMusic": "Hudba", - "FolderTypeMusicVideos": "Hudební videa", - "FolderTypeTvShows": "TV", - "FolderTypeUnset": "Nenastaveno (smíšený obsah)", "FormatValue": "Formát: {0}", "Friday": "Pátek", "Fullscreen": "Celá obrazovka", @@ -364,9 +358,7 @@ "LabelAirsBeforeSeason": "Vysíláno před sezónou:", "LabelAlbumArtHelp": "PN používá obrázek alba v rámci technologie dlna:profileID atributu upnp:albumArtURI. Někteří klienti vyžadují konkrétní hodnoty, bez ohledu na velikost obrázku.", "LabelAlbumArtMaxHeight": "Maximální výška alba:", - "LabelAlbumArtMaxHeightHelp": "Maximální rozlišení alb nabízených prostřednictvím upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Maximální výška alba:", - "LabelAlbumArtMaxWidthHelp": "Maximální rozlišení alb nabízených prostřednictvím upnp:albumArtURI.", "LabelAlbumArtPN": "Alba PN:", "LabelAlbumArtists": "Alba umělce:", "LabelAllowHWTranscoding": "Povolit hardwarové překódování", @@ -458,9 +450,7 @@ "LabelHttpsPort": "Lokální HTTPS port:", "LabelHttpsPortHelp": "Číslo portu TCP serveru HTTPS.", "LabelIconMaxHeight": "Maximální výška ikon:", - "LabelIconMaxHeightHelp": "Maximální rozlišení ikon nabízené prostřednictvím upnp:icon.", "LabelIconMaxWidth": "Maximální šířka ikon:", - "LabelIconMaxWidthHelp": "Maximální rozlišení ikon nabízené prostřednictvím upnp:icon.", "LabelIdentificationFieldHelp": "Bez rozlišení velikosti písmen podřetězců nebo regulárních výrazů.", "LabelImageFetchersHelp": "Povolí řazení stahovačů obrázků dle priority.", "LabelImageType": "Typ obrázku:", @@ -811,7 +801,6 @@ "OptionPlainVideoItemsHelp": "Všechna videa jsou prezentována v DIDL jako \"object.item.videoItem\" místo konkrétnějšího typu, například \"object.item.videoItem.movie\".", "OptionPlayCount": "Počet přehrání", "OptionPremiereDate": "Datum premiéry", - "OptionProfilePhoto": "Fotografie", "OptionRegex": "Regexp", "OptionReleaseDate": "Datum vydání", "OptionReportByteRangeSeekingWhenTranscoding": "Hlásit, že server podporuje vyhledávání bajtů při překódování", @@ -1169,8 +1158,6 @@ "OptionLoginAttemptsBeforeLockout": "Určuje, kolik chybných pokusů o přihlášení lze provést před zablokováním.", "OptionLoginAttemptsBeforeLockoutHelp": "0 znamená zdědění výchozí hodnoty 3 pokusů pro běžné uživatele a 5 pro administrátory. Nastavení na -1 deaktivuje funkci.", "OptionMax": "Max", - "OptionProfileVideo": "Video", - "OptionProfileVideoAudio": "Video Audio", "OptionProtocolHls": "Přímý přenos z internetu", "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ů.", diff --git a/src/strings/da.json b/src/strings/da.json index 3989da7ecb..a63a94b2ce 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -134,12 +134,6 @@ "FileNotFound": "Filen blev ikke fundet.", "FileReadCancelled": "Læsning af filen er annulleret.", "FileReadError": "Der opstod en fejl i forsøget på at læse filen.", - "FolderTypeBooks": "Bøger", - "FolderTypeMovies": "Film", - "FolderTypeMusic": "Musik", - "FolderTypeMusicVideos": "Musik Videoer", - "FolderTypeTvShows": "TV", - "FolderTypeUnset": "Blandet Indhold", "Friday": "Fredag", "Fullscreen": "Fuldskærm", "General": "Generel", @@ -328,9 +322,7 @@ "LabelAirsBeforeSeason": "Sendes før sæson:", "LabelAlbumArtHelp": "PN til album art, i dlna:profileID attributten på upnp:albumArtURI. Nogle enheder påkræver en specifik værdi uanset størrelsen på billedet.", "LabelAlbumArtMaxHeight": "Album billede max. højde:", - "LabelAlbumArtMaxHeightHelp": "Maksimumopløsningen på album billede der bliver vist med upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Album art max. bredde:", - "LabelAlbumArtMaxWidthHelp": "Maksimumopløsningen på album billede der bliver vist med upnp:albumArtURI.", "LabelAlbumArtPN": "Album billede PN:", "LabelAlbumArtists": "Albumartister:", "LabelAllowHWTranscoding": "Tillad hardware-omkodning", @@ -421,9 +413,7 @@ "LabelHttpsPort": "Lokalt HTTPS portnummer:", "LabelHttpsPortHelp": "Det TCP-portnummer, som Jellyfins HTTPS-server skal benytte.", "LabelIconMaxHeight": "Maximal højde af ikoner:", - "LabelIconMaxHeightHelp": "Maksimalopløsningen af ikoner, der bliver vist med upnp:icon.", "LabelIconMaxWidth": "Maximal bredde på ikoner:", - "LabelIconMaxWidthHelp": "Maksimalopløsningen på ikoner der bliver vist med upnp:icon.", "LabelIdentificationFieldHelp": "En case-insensitive substring eller regex ekspression.", "LabelImageFetchersHelp": "Aktiver og ranger dine fortrukne billede-hentere i en prioriteret rækkefølge.", "LabelImageType": "Billedtype:", @@ -754,8 +744,6 @@ "OptionPlainVideoItemsHelp": "Når dette er aktiveret, bliver alle videoer vist i DIDL som \"object.item.videoItem\" i stedet for mere specifikke typer, som f. eks. \"object.item.videoItem.movie\".", "OptionPlayCount": "Gange afspillet", "OptionPremiereDate": "Præmieredato", - "OptionProfilePhoto": "Foto", - "OptionProfileVideoAudio": "Video lyd", "OptionReleaseDate": "Udgivelsesdato", "OptionReportByteRangeSeekingWhenTranscoding": "Angiv at serveren understøtter bytes øgning nrdeå r transkodes", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Dette er krævet for nogle enheder der ikke er særligt gode til tidssøgning.", @@ -1130,7 +1118,6 @@ "OptionIsHD": "HD", "OptionIsSD": "SD", "OptionLikes": "Favoritter", - "OptionProfileVideo": "Video", "OptionProtocolHls": "Web Live Streaming", "OptionProtocolHttp": "Web", "OptionRegex": "Regex", diff --git a/src/strings/de.json b/src/strings/de.json index 09b6ae3820..1f1a7a424d 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -190,11 +190,6 @@ "FileReadCancelled": "Dateiimport wurde abgebrochen.", "FileReadError": "Beim Lesen der Datei ist ein Fehler aufgetreten.", "Filters": "Filter", - "FolderTypeBooks": "Bücher", - "FolderTypeMovies": "Filme", - "FolderTypeMusic": "Musik", - "FolderTypeMusicVideos": "Musikvideos", - "FolderTypeUnset": "Keine Auswahl (gemischter Inhalt)", "Folders": "Verzeichnisse", "Friday": "Freitag", "Fullscreen": "Vollbild", @@ -405,9 +400,7 @@ "LabelAirsBeforeSeason": "Ausstrahlungen vor Staffel:", "LabelAlbumArtHelp": "Die genutzte PN für Alben-Fankunst innerhalb der dlna:profileID-Eigenschaften auf upnp:albumArtURL. Manche Abspielgeräte benötigen einen bestimmten Wert, unabhängig von der Bildgröße.", "LabelAlbumArtMaxHeight": "Maximale Höhe für Album Art:", - "LabelAlbumArtMaxHeightHelp": "Maximale Auflösung für durch UPnP übermittelte Album Art:albumArtURI.", "LabelAlbumArtMaxWidth": "Maximale Breite für Album Art:", - "LabelAlbumArtMaxWidthHelp": "Maximale Auflösung für durch UPnP übermittelte Album Art:albumArtURI.", "LabelAlbumArtPN": "Alben-Cover PN:", "LabelAlbumArtists": "Alben Interpreten:", "LabelAllowHWTranscoding": "Erlaube Hardware Transkodierung", @@ -511,9 +504,7 @@ "LabelHttpsPort": "Lokale HTTPS-Portnummer:", "LabelHttpsPortHelp": "Die TCP-Portnummer für den HTTPS-Server.", "LabelIconMaxHeight": "Maximale Iconhöhe:", - "LabelIconMaxHeightHelp": "Maximale Auflösung für durch UPnP übermittelte Icons:icon.", "LabelIconMaxWidth": "Maximale Iconbreite:", - "LabelIconMaxWidthHelp": "Maximale Auflösung der Icons, die über upnp:icon angezeigt werden.", "LabelIdentificationFieldHelp": "Ein Teilstring oder Regex Ausdruck, der keine Groß- und Kleinschreibung berücksichtigt.", "LabelImageFetchersHelp": "Aktiviere und ordne deine bevorzugten Bildquellen nach Präferenzen.", "LabelImageType": "Bildtyp:", @@ -1116,7 +1107,6 @@ "Desktop": "Desktop", "Download": "Download", "Extras": "Extras", - "FolderTypeTvShows": "TV Serien", "FormatValue": "Format: {0}", "Genre": "Genre", "Genres": "Genres", @@ -1164,8 +1154,6 @@ "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionIsHD": "HD", "OptionIsSD": "SD", - "OptionProfilePhoto": "Foto", - "OptionProfileVideo": "Video", "OptionProtocolHls": "HTTP-Live-Streaming", "OptionProtocolHttp": "HTTP", "OptionRegex": "Reguläre Ausdrücke", @@ -1188,7 +1176,6 @@ "LabelTag": "Tag:", "LabelTagline": "Markierungen:", "OptionMax": "Maximum", - "OptionProfileVideoAudio": "Video Audio", "OptionSubstring": "Teilzeichenfolge", "Premiere": "Premiere", "Smart": "Schlau", diff --git a/src/strings/el.json b/src/strings/el.json index 6c76672225..fe25734f1b 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -184,12 +184,6 @@ "FileReadCancelled": "Η ανάγνωση αρχείου ακυρώθηκε.", "FileReadError": "Παρουσιάστηκε σφάλμα κατά την ανάγνωση του αρχείου.", "Filters": "Φίλτρα", - "FolderTypeBooks": "Βιβλία", - "FolderTypeMovies": "Ταινίες", - "FolderTypeMusic": "Μουσική", - "FolderTypeMusicVideos": "Μουσικά Βίντεο", - "FolderTypeTvShows": "Τηλεόραση", - "FolderTypeUnset": "Αναίρεση (μικτό περιεχόμενο)", "Folders": "Φάκελοι", "FormatValue": "Φορμάτ: {0}", "Friday": "Παρασκευή", @@ -371,9 +365,7 @@ "LabelAlbum": "Άλμπουμ:", "LabelAlbumArtHelp": "PN που χρησιμοποιείται για την τέχνη άλμπουμ, μέσα στο χαρακτηριστικό dlna: profileID στο upnp: albumArtURI. Ορισμένες συσκευές απαιτούν συγκεκριμένη τιμή, ανεξάρτητα από το μέγεθος της εικόνας.", "LabelAlbumArtMaxHeight": "Μέγιστο ύψος του άλμπουμ art:", - "LabelAlbumArtMaxHeightHelp": "Μέγιστη ανάλυση του άλμπουμ art που εκτίθεται μέσω του upnp: albumArtURI.", "LabelAlbumArtMaxWidth": "Μέγιστο πλάτος του άλμπουμ art:", - "LabelAlbumArtMaxWidthHelp": "Μέγιστη ανάλυση του άλμπουμ art που εκτίθεται μέσω του upnp: albumArtURI.", "LabelAlbumArtPN": "PN άλμπουμ art:", "LabelAlbumArtists": "Καλλιτέχνες του 'Αλμπουμ:", "LabelAppName": "Όνομα App", @@ -464,9 +456,7 @@ "LabelHttpsPort": "Τοπικός αριθμός θύρας http:", "LabelHttpsPortHelp": "Ο αριθμός θύρας tcp που πρέπει να συνδέσει ο διακομιστής http του Jellyfin.", "LabelIconMaxHeight": "Μέγιστο ύψος εικονιδίου:", - "LabelIconMaxHeightHelp": "Μέγιστη ανάλυση των εικονιδίων που εκτίθενται μέσω του στοιχείου upnp: εικονίδιο.", "LabelIconMaxWidth": "Μέγιστο πλάτος εικονιδίου:", - "LabelIconMaxWidthHelp": "Μέγιστη ανάλυση των εικονιδίων που εκτίθενται μέσω του στοιχείου upnp: εικονίδιο.", "LabelImageType": "Τύπος Εικόνας:", "LabelInNetworkSignInWithEasyPassword": "Ενεργοποίηση εισόδου στο δίκτυο με τον εύκολο κωδικό PIN", "LabelInNetworkSignInWithEasyPasswordHelp": "Εάν ενεργοποιηθεί, θα μπορείτε να χρησιμοποιείται τον εύκολο κωδικό PIN για να συνδεθείτε στις εφαρμογές Jellyfin μέσα από το οικιακό σας δίκτυο. Ο κανονικός κωδικός πρόσβασής σας θα απαιτείται μόνο μακριά από το σπίτι. Εάν ο κωδικός PIN παραμείνει κενός, δεν θα χρειαστείτε κωδικό πρόσβασης στο οικιακό σας δίκτυο.", @@ -778,7 +768,6 @@ "OptionPlainVideoItemsHelp": "Εάν ενεργοποιηθεί, όλα τα βίντεο αντιπροσωπεύονται στο DIDL ως \"object.item.videoItem\" αντί για έναν πιο συγκεκριμένο τύπο, όπως \"object.item.videoItem.movie\".", "OptionPlayCount": "Φορές Αναπαραγωγής", "OptionPremiereDate": "Ημερομηνία πρεμιέρας", - "OptionProfileVideo": "Βίντεο", "OptionReleaseDate": "Ημερομηνία Προβολής", "OptionResumable": "Αναληπτέος", "OptionSaveMetadataAsHidden": "Αποθηκεύστε τα μεταδεδομένα και τις εικόνες ως κρυφά αρχεία", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 4ef5c732b4..234e900d61 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -241,12 +241,6 @@ "FileReadCancelled": "The file read has been cancelled.", "FileReadError": "An error occurred while reading the file.", "Filters": "Filters", - "FolderTypeBooks": "Books", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeMusicVideos": "Music Videos", - "FolderTypeTvShows": "TV Shows", - "FolderTypeUnset": "Mixed Content", "FormatValue": "Format: {0}", "Friday": "Friday", "Fullscreen": "Full screen", @@ -538,7 +532,6 @@ "OptionReportByteRangeSeekingWhenTranscodingHelp": "This is required for some devices that don't time seek very well.", "OptionReportByteRangeSeekingWhenTranscoding": "Report that the server supports byte seeking when transcoding", "OptionRegex": "Regex", - "OptionProfileVideo": "Video", "OptionPremiereDate": "Premiere Date", "OptionPlayCount": "Play Count", "OptionPlainVideoItemsHelp": "All videos are represented in DIDL as \"object.item.videoItem\" instead of a more specific type, such as \"object.item.videoItem.movie\".", @@ -941,9 +934,7 @@ "LabelImageType": "Image type:", "LabelImageFetchersHelp": "Enable and rank your preferred image fetchers in order of priority.", "LabelIdentificationFieldHelp": "A case-insensitive substring or regex expression.", - "LabelIconMaxWidthHelp": "Maximum resolution of icons exposed via upnp:icon.", "LabelIconMaxWidth": "Icon maximum width:", - "LabelIconMaxHeightHelp": "Maximum resolution of icons exposed via upnp:icon.", "LabelIconMaxHeight": "Icon maximum height:", "LabelHttpsPortHelp": "The TCP port number for the HTTPS server.", "LabelHttpsPort": "Local HTTPS port number:", @@ -1019,8 +1010,6 @@ "LabelAllowHWTranscoding": "Allow hardware transcoding", "LabelAlbumArtists": "Album artists:", "LabelAlbumArtPN": "Album art PN:", - "LabelAlbumArtMaxWidthHelp": "Max resolution of album art exposed via upnp:albumArtURI.", - "LabelAlbumArtMaxHeightHelp": "Max resolution of album art exposed via upnp:albumArtURI.", "LabelAlbumArtHelp": "PN used for album art, within the dlna:profileID attribute on upnp:albumArtURI. Some devices require a specific value, regardless of the size of the image.", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsBeforeEpisode": "Airs before episode:", @@ -1068,7 +1057,6 @@ "Whitelist": "Whitelist", "ServerNameIsRestarting": "The server at {0} is restarting.", "OptionProtocolHls": "HTTP Live Streaming", - "OptionProfileVideoAudio": "Video Audio", "OneChannel": "One channel", "MediaInfoChannels": "Channels", "MediaInfoBitDepth": "Bit depth", @@ -1104,7 +1092,6 @@ "Studios": "Studios", "StopRecording": "Stop recording", "Sports": "Sports", - "OptionProfilePhoto": "Photo", "OptionPlainStorageFolders": "Display all folders as plain storage folders", "OptionDisableUserHelp": "The server will not allow any connections from this user. Existing connections will be abruptly terminated.", "OptionDateAdded": "Date Added", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index a6df7052d1..b3e6a50fbf 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -231,12 +231,6 @@ "FileReadCancelled": "The file read has been canceled.", "FileReadError": "An error occurred while reading the file.", "Filters": "Filters", - "FolderTypeBooks": "Books", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeMusicVideos": "Music Videos", - "FolderTypeTvShows": "TV Shows", - "FolderTypeUnset": "Mixed Content", "Folders": "Folders", "FormatValue": "Format: {0}", "Friday": "Friday", @@ -471,9 +465,7 @@ "LabelAlbumArtMaxResHelp": "Maximum resolution of album art exposed via the upnp:albumArtURI property.", "LabelAlbumArtHelp": "PN used for album art, within the dlna:profileID attribute on upnp:albumArtURI. Some devices require a specific value, regardless of the size of the image.", "LabelAlbumArtMaxHeight": "Album art max height:", - "LabelAlbumArtMaxHeightHelp": "Max resolution of album art exposed via upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Album art max width:", - "LabelAlbumArtMaxWidthHelp": "Max resolution of album art exposed via upnp:albumArtURI.", "LabelAlbumArtPN": "Album art PN:", "LabelAlbumArtists": "Album artists:", "LabelAllowHWTranscoding": "Allow hardware transcoding", @@ -597,9 +589,7 @@ "LabelHttpsPortHelp": "The TCP port number for the HTTPS server.", "LabelIconMaxResHelp": "Maximum resolution of icons exposed via the upnp:icon property.", "LabelIconMaxHeight": "Icon maximum height:", - "LabelIconMaxHeightHelp": "Maximum resolution of icons exposed via upnp:icon.", "LabelIconMaxWidth": "Icon maximum width:", - "LabelIconMaxWidthHelp": "Maximum resolution of icons exposed via upnp:icon.", "LabelIdentificationFieldHelp": "A case-insensitive substring or regex expression.", "LabelImageFetchersHelp": "Enable and rank your preferred image fetchers in order of priority.", "LabelImageType": "Image type:", @@ -1078,9 +1068,6 @@ "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", "OptionPremiereDate": "Premiere Date", - "OptionProfilePhoto": "Photo", - "OptionProfileVideo": "Video", - "OptionProfileVideoAudio": "Video Audio", "OptionProtocolHls": "HTTP Live Streaming", "OptionProtocolHttp": "HTTP", "OptionRandom": "Random", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 9b5420ac20..8f13415ab9 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -2,7 +2,6 @@ "ButtonQuickStartGuide": "Guía de inicio rápido", "ButtonSignOut": "Cerrar sesión", "EnableHardwareEncoding": "Habilitar la codificación de hardware", - "FolderTypeTvShows": "TV", "HeaderLatestEpisodes": "Últimos capítulos", "LabelFinish": "Terminar", "LabelYoureDone": "Ha terminado!", @@ -238,11 +237,6 @@ "FileReadCancelled": "La lectura del archivo se ha cancelado.", "FileReadError": "Ocurrió un error al leer el archivo.", "Filters": "Filtros", - "FolderTypeBooks": "Libros", - "FolderTypeMovies": "Películas", - "FolderTypeMusic": "Música", - "FolderTypeMusicVideos": "Vídeos Musicales", - "FolderTypeUnset": "Contenido Mixto", "FormatValue": "Formato: {0}", "Friday": "Viernes", "Fullscreen": "Pantalla Completa", @@ -515,9 +509,7 @@ "LabelImageType": "Tipo de imagen:", "LabelImageFetchersHelp": "Habilite y clasifique sus buscadores de imágenes preferidos en orden de prioridad.", "LabelIdentificationFieldHelp": "Una subcadena que no distingue entre mayúsculas y minúsculas o expresión regular.", - "LabelIconMaxWidthHelp": "Resolución máxima de íconos expuestos a través de comentarios UPnP.", "LabelIconMaxWidth": "Ancho máximo del ícono:", - "LabelIconMaxHeightHelp": "Resolución máxima de íconos expuestos a través de comentarios UPnP.", "LabelIconMaxHeight": "Altura máxima del ícono:", "LabelHttpsPortHelp": "El número de puerto TCP al que debe unirse el servidor HTTPS de Jellyfin.", "LabelHttpsPort": "Número de puerto HTTPS local:", @@ -604,9 +596,7 @@ "LabelCorruptedFrames": "Marcos corruptos:", "LabelCachePathHelp": "Especifique una ubicación personalizada para los archivos de caché del servidor, como las imágenes. Déjelo en blanco para usar el servidor predeterminado.", "LabelAppNameExample": "Ejemplo: Sickbeard, Sonarr", - "LabelAlbumArtMaxWidthHelp": "Resolución máxima de la carátula del álbum expuesta a través upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Ancho máximo de la carátula del álbum:", - "LabelAlbumArtMaxHeightHelp": "Resolución máxima de la carátula del álbum expuesta a través de upnp:albumArtURI.", "LabelAlbumArtMaxHeight": "Altura máxima de la carátula del álbum:", "ImportMissingEpisodesHelp": "Si está habilitado, la información sobre capítulos faltantes se importará a su base de datos Jellyfin y se mostrará dentro de temporadas y series. Esto puede causar escaneos de bibliotecas significativamente más largos.", "HeaderSyncPlayEnabled": "SyncPlay habilitado", @@ -1140,9 +1130,6 @@ "OptionRandom": "Aleatorio", "OptionProtocolHttp": "HTTP", "OptionProtocolHls": "Transmisión en vivo HTTP", - "OptionProfileVideoAudio": "Video Audio", - "OptionProfileVideo": "Video", - "OptionProfilePhoto": "Foto", "OptionPremiereDate": "Fecha de estreno", "OptionPlayCount": "Cuento de reproducciones", "OptionPlainVideoItemsHelp": "Si está habilitado, todos los videos se representan en DIDL como \"object.item.videoItem\" en lugar de un tipo más específico, como \"object.item.videoItem.movie\".", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index b26683f77f..e7bc48b6af 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -201,12 +201,6 @@ "FileReadCancelled": "La lectura del archivo ha sido cancelada.", "FileReadError": "Ha ocurrido un error al leer el archivo.", "Filters": "Filtros", - "FolderTypeBooks": "Libros", - "FolderTypeMovies": "Películas", - "FolderTypeMusic": "Música", - "FolderTypeMusicVideos": "Videos musicales", - "FolderTypeTvShows": "Series de TV", - "FolderTypeUnset": "Contenido variado", "Folders": "Carpetas", "FormatValue": "Formato: {0}", "Friday": "Viernes", @@ -424,9 +418,7 @@ "LabelAlbum": "Álbum:", "LabelAlbumArtHelp": "PN usado para el arte del álbum, dentro del atributo dlna:profileID en upnp:albumArtURI. Algunos dispositivos requieren valores específicos, independientemente del tamaño de la imagen.", "LabelAlbumArtMaxHeight": "Altura máxima del arte del álbum:", - "LabelAlbumArtMaxHeightHelp": "Resolución máxima del arte del álbum expuesta vía upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Ancho máximo del arte del álbum:", - "LabelAlbumArtMaxWidthHelp": "Resolución máxima del arte del álbum expuesta vía upnp:albumArtURI.", "LabelAlbumArtPN": "PN del arte del álbum:", "LabelAlbumArtists": "Artistas del álbum:", "LabelAllowHWTranscoding": "Permitir transcodificación por hardware", @@ -533,9 +525,7 @@ "LabelHttpsPort": "Número de puerto local HTTPS:", "LabelHttpsPortHelp": "El número de puerto TCP al que el servidor HTTPS de Jellyfin debería enlazar.", "LabelIconMaxHeight": "Altura máxima del ícono:", - "LabelIconMaxHeightHelp": "Resolución máxima de los íconos expuestos vía upnp:icon.", "LabelIconMaxWidth": "Ancho máximo del ícono:", - "LabelIconMaxWidthHelp": "Resolución máxima de los íconos expuestos vía upnp:icon.", "LabelIdentificationFieldHelp": "Una subcadena indiferente a las mayúsculas y minúsculas o una expresión regular (regex).", "LabelImageFetchersHelp": "Habilita y prioriza tus recolectores de imágenes preferidos.", "LabelImageType": "Tipo de imagen:", @@ -922,8 +912,6 @@ "OptionPlainVideoItemsHelp": "Si se habilita, 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».", "OptionPlayCount": "Contador de reproducciones", "OptionPremiereDate": "Fecha de estreno", - "OptionProfilePhoto": "Foto", - "OptionProfileVideoAudio": "Audio del video", "OptionProtocolHls": "Transmisión en vivo por HTTP", "OptionReleaseDate": "Fecha de estreno", "OptionReportByteRangeSeekingWhenTranscoding": "Reportar que el servidor soporta la búsqueda de bytes cuando se transcodifica", @@ -1205,7 +1193,6 @@ "OptionIsSD": "SD", "OptionLoginAttemptsBeforeLockout": "Determina cuantos intentos de inicio de sesión incorrectos se pueden hacer antes de que ocurra el bloqueo.", "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.", - "OptionProfileVideo": "Video", "OptionProtocolHttp": "HTTP", "OptionRegex": "Expresión regular", "PasswordResetProviderHelp": "Elige un proveedor de restablecimiento de contraseña para usar cuando este usuario solicite un restablecimiento de contraseña", diff --git a/src/strings/es.json b/src/strings/es.json index 36a01a72df..d1712ffbd2 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -163,12 +163,6 @@ "FileNotFound": "Archivo no encontrado.", "FileReadCancelled": "La lectura del archivo se ha cancelado.", "FileReadError": "Se encontró un error al leer el archivo.", - "FolderTypeBooks": "Libros", - "FolderTypeMovies": "Películas", - "FolderTypeMusic": "Música", - "FolderTypeMusicVideos": "Vídeos Musicales", - "FolderTypeTvShows": "Programas de TV", - "FolderTypeUnset": "Contenido Mixto", "FormatValue": "Formato: {0}", "Friday": "Viernes", "Fullscreen": "Pantalla completa", @@ -374,9 +368,7 @@ "LabelAlbum": "Álbum:", "LabelAlbumArtHelp": "PN utilizado para la carátula del álbum, dentro del atributo dlna: profileID en upnp: albumArtURI. Algunos dispositivos requieren un valor específico, independientemente del tamaño de la imagen.", "LabelAlbumArtMaxHeight": "Altura máxima de la carátula del album:", - "LabelAlbumArtMaxHeightHelp": "Resolución máxima de la carátula del álbum expuesta a través de upnp: albumArtURI.", "LabelAlbumArtMaxWidth": "Anchura máxima de la carátula del album:", - "LabelAlbumArtMaxWidthHelp": "Resolución máxima de la carátula del álbum expuesta a través de upnp: albumArtURI.", "LabelAlbumArtPN": "Carátula del album PN:", "LabelAlbumArtists": "Artistas de los álbumes:", "LabelAllowHWTranscoding": "Activar la conversión acelerada por hardware", @@ -477,9 +469,7 @@ "LabelHttpsPort": "Puerto local HTTPS:", "LabelHttpsPortHelp": "El número de puerto TCP para el servidor HTTPS.", "LabelIconMaxHeight": "Altura máxima de icono:", - "LabelIconMaxHeightHelp": "Resolución máxima de los iconos expuestos vía upnp:icon.", "LabelIconMaxWidth": "Anchura máxima de icono:", - "LabelIconMaxWidthHelp": "Resolución máxima de los iconos expuestos vía upnp:icon.", "LabelIdentificationFieldHelp": "Una subcadena insensible a mayúsculas o minúsculas o una expresión regex.", "LabelImageFetchersHelp": "Activa y ordena tus buscadores de imágenes en orden de prioridad.", "LabelImageType": "Tipo de imagen:", @@ -849,8 +839,6 @@ "OptionPlainVideoItemsHelp": "Todos los vídeos están representados en DIDL como \"object.item.videoItem\" en lugar de un tipo más específico, como por ejemplo \"object.item.videoItem.movie\".", "OptionPlayCount": "Número de reproducciones", "OptionPremiereDate": "Fecha de estreno", - "OptionProfilePhoto": "Foto", - "OptionProfileVideoAudio": "Vídeo y audio", "OptionProtocolHls": "Emisión HTTP en directo", "OptionReleaseDate": "Fecha de lanzamiento", "OptionReportByteRangeSeekingWhenTranscoding": "Indicar que el servidor soporta la búsqueda de byte al convertir", @@ -1182,7 +1170,6 @@ "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionLoginAttemptsBeforeLockout": "Determina cuántos intentos de inicio de sesión fallidos se pueden realizar antes de que se produzca el bloqueo.", "OptionLoginAttemptsBeforeLockoutHelp": "El valor cero implica heredar el valor por defecto de tres intentos para usuarios y cinco intentos para administradores. El valor -1 desactiva esta funcionalidad.", - "OptionProfileVideo": "Vídeo", "OptionProtocolHttp": "HTTP", "OptionRegex": "Regex (expresión regular)", "OptionSubstring": "Subcadena", diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 54ffbc53c2..56d8ff35a3 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -560,9 +560,6 @@ "OptionRandom": "Aleatorio", "OptionProtocolHttp": "HTTP", "OptionProtocolHls": "Transmisión en vivo por HTTP", - "OptionProfileVideoAudio": "Audio del video", - "OptionProfileVideo": "Video", - "OptionProfilePhoto": "Foto", "OptionPremiereDate": "Fecha de estreno", "LabelSize": "Tamaño:", "LabelSimultaneousConnectionLimit": "Límite de transmisiones simultáneas:", @@ -674,9 +671,7 @@ "LabelImageType": "Tipo de imagen:", "LabelImageFetchersHelp": "Habilita y prioriza tus recolectores de imágenes preferidos.", "LabelIdentificationFieldHelp": "Una subcadena indiferente a las mayúsculas y minúsculas o una expresión regular (regex).", - "LabelIconMaxWidthHelp": "Resolución máxima de los íconos expuestos vía upnp:icon.", "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 para el servidor HTTPS.", "LabelHttpsPort": "Número de puerto local HTTPS:", @@ -855,9 +850,7 @@ "LabelAllowHWTranscoding": "Permitir transcodificación por hardware", "LabelAlbumArtists": "Artistas del álbum:", "LabelAlbumArtPN": "PN del arte del álbum:", - "LabelAlbumArtMaxWidthHelp": "Resolución máxima del arte del álbum expuesta vía upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Ancho máximo del arte del álbum:", - "LabelAlbumArtMaxHeightHelp": "Resolución máxima del arte del álbum expuesta vía upnp:albumArtURI.", "LabelAlbumArtMaxHeight": "Altura máxima del arte del álbum:", "LabelAlbumArtHelp": "PN usado para el arte del álbum, dentro del atributo dlna:profileID en upnp:albumArtURI. Algunos dispositivos requieren valores específicos, independientemente del tamaño de la imagen.", "LabelAlbum": "Álbum:", @@ -1115,12 +1108,6 @@ "Fullscreen": "Pantalla completa", "Friday": "Viernes", "FormatValue": "Formato: {0}", - "FolderTypeUnset": "Contenido variado", - "FolderTypeTvShows": "Series de TV", - "FolderTypeMusicVideos": "Videos musicales", - "FolderTypeMusic": "Música", - "FolderTypeMovies": "Películas", - "FolderTypeBooks": "Libros", "Filters": "Filtros", "FileReadError": "Ha ocurrido un error al leer el archivo.", "FileReadCancelled": "La lectura del archivo ha sido cancelada.", diff --git a/src/strings/fa.json b/src/strings/fa.json index 663b4ef385..764e305b58 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -11,11 +11,6 @@ "ButtonQuickStartGuide": "راهنمای شروع سریع", "ButtonSignOut": "Sign out", "DeleteMedia": "حذف رسانه", - "FolderTypeBooks": "کتاب‌ها", - "FolderTypeMovies": "فیلم‌ها", - "FolderTypeMusic": "موسیقی‌ها", - "FolderTypeMusicVideos": "موزیک ویدیوها", - "FolderTypeTvShows": "سریال‌های تلویزیونی", "HeaderContinueWatching": "ادامه تماشا", "HeaderCustomDlnaProfiles": "پروفایل های سفارشی", "HeaderDeviceAccess": "دسترسی دستگاه", @@ -64,7 +59,6 @@ "OptionEnableAccessToAllChannels": "فعالسازی دسترسی به همه ی کانال ها", "OptionEnableAccessToAllLibraries": "فعالسازی دسترسی به همه ی کتابخانه ها", "OptionLikes": "پسندها", - "OptionProfileVideo": "ویدیو", "ShowAdvancedSettings": "نمایش تنظیمات پیشرفته", "TabAccess": "دسترسی", "TabAdvanced": "پیشرفته", @@ -372,7 +366,6 @@ "Fullscreen": "تمام صفحه", "Friday": "جمعه", "FormatValue": "قالب‌ها: {0}", - "FolderTypeUnset": "محتواهای مخلوط", "TabMyPlugins": "افزونه‌های من", "TabMusic": "موسیقی‌ها", "TabLogs": "واقعه نگار‌ها", @@ -516,8 +509,6 @@ "OptionRandom": "تصادفی", "OptionProtocolHttp": "HTTP", "OptionProtocolHls": "پخش مستقیم HTTP", - "OptionProfileVideoAudio": "صوتی تصویری", - "OptionProfilePhoto": "عکس", "OptionPremiereDate": "تاریخ پخش", "OptionPlayCount": "تعداد پخش", "OptionPlainVideoItems": "نمایش همه فیلم‌ها به عنوان موارد ویدیویی ساده", @@ -830,8 +821,6 @@ "LabelHardwareAccelerationType": "Hardware acceleration:", "LabelHomeScreenSectionValue": "Home screen section {0}:", "LabelHttpsPortHelp": "The TCP port number that Jellyfin's HTTPS server should bind to.", - "LabelIconMaxHeightHelp": "Maximum resolution of icons exposed via upnp:icon.", - "LabelIconMaxWidthHelp": "Maximum resolution of icons exposed via upnp:icon.", "LabelIdentificationFieldHelp": "A case-insensitive substring or regex expression.", "LabelImageFetchersHelp": "Enable and rank your preferred image fetchers in order of priority.", "LabelInNetworkSignInWithEasyPassword": "Enable in-network sign in with my easy pin code", @@ -957,9 +946,7 @@ "LabelAlbum": "Album:", "LabelAlbumArtHelp": "PN used for album art, within the dlna:profileID attribute on upnp:albumArtURI. Some devices require a specific value, regardless of the size of the image.", "LabelAlbumArtMaxHeight": "Album art max height:", - "LabelAlbumArtMaxHeightHelp": "Max resolution of album art exposed via upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Album art max width:", - "LabelAlbumArtMaxWidthHelp": "Max resolution of album art exposed via upnp:albumArtURI.", "LabelAlbumArtPN": "Album art PN:", "LabelAlbumArtists": "Album artists:", "LabelAllowHWTranscoding": "Allow hardware transcoding", diff --git a/src/strings/fi.json b/src/strings/fi.json index b48d5337d6..2782cfe8a4 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -11,7 +11,6 @@ "FileNotFound": "Tiedostoa ei löydy.", "FileReadCancelled": "Tiedoston luku on peruutettu.", "FileReadError": "Virhe tiedoston luvun aikana.", - "FolderTypeTvShows": "TV-sarjat", "LabelAudioLanguagePreference": "Äänen ensisijainen kieli:", "LabelCountry": "Maa:", "LabelCurrentPassword": "Tämän hetkinen salsana:", @@ -264,9 +263,6 @@ "OptionRandom": "Satunnainen", "OptionProtocolHttp": "HTTP", "OptionProtocolHls": "HTTP Suoratoisto", - "OptionProfileVideoAudio": "Video Audio", - "OptionProfileVideo": "Video", - "OptionProfilePhoto": "Kuva", "OptionPremiereDate": "Ensi-iltapäivä", "OptionPlayCount": "Toistokerrat", "OptionNew": "Uusi…", @@ -837,10 +833,6 @@ "LabelRuntimeMinutes": "Pituus (minuutteja):", "LabelReleaseDate": "Julkaisupäivä:", "Genre": "Tyylilaji", - "FolderTypeBooks": "Kirjat", - "FolderTypeMusicVideos": "Musiikkivideot", - "FolderTypeMusic": "Musiikki", - "FolderTypeMovies": "Elokuvat", "File": "Tiedosto", "Favorite": "Suosikki", "Extras": "Extrat", @@ -1022,7 +1014,6 @@ "DeinterlaceMethodHelp": "Valitse lomituksen poistomenetelmä, jota käytetään lomitetun sisällön transkoodaukseen.", "FormatValue": "Muoto: {0}", "General": "Yleinen", - "FolderTypeUnset": "Sekalainen sisältö", "FetchingData": "Noudetaan lisätietoja", "Features": "Ominaisuudet", "ErrorStartHourGreaterThanEnd": "Loppumisajan on oltava myöhemmin kuin aloitusaika.", diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index 08c47a9188..b1f78ad066 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -14,7 +14,6 @@ "EnableDisplayMirroring": "Duplication d'écran", "EndsAtValue": "Se termine à {0}", "File": "Fichier", - "FolderTypeTvShows": "Séries TV", "Friday": "Vendredi", "HeaderAddToCollection": "Ajouter à la Collection", "HeaderAddToPlaylist": "Ajouter à la liste de lecture", diff --git a/src/strings/fr.json b/src/strings/fr.json index 42419fbd62..fd60a53d27 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -202,12 +202,6 @@ "FileReadCancelled": "La lecture du fichier a été annulée.", "FileReadError": "Une erreur est survenue pendant la lecture du fichier.", "Filters": "Filtres", - "FolderTypeBooks": "Livres", - "FolderTypeMovies": "Films", - "FolderTypeMusic": "Musique", - "FolderTypeMusicVideos": "Vidéos musicales", - "FolderTypeTvShows": "TV", - "FolderTypeUnset": "Contenu mixte", "Folders": "Dossiers", "FormatValue": "Format : {0}", "Friday": "Vendredi", @@ -423,9 +417,7 @@ "LabelAlbum": "Album :", "LabelAlbumArtHelp": "PN utilisé pour les images d'album, dans l’attribut dlna:profileID de upnp:albumArtURi. Certains appareils nécessitent une valeur spécifique, peu importe la taille de l'image.", "LabelAlbumArtMaxHeight": "Hauteur maximum des images d'album :", - "LabelAlbumArtMaxHeightHelp": "Résolution maximum des images d'album exposée par upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Largeur maximum des images d'album :", - "LabelAlbumArtMaxWidthHelp": "Résolution maximum des images d'album exposée par upnp:albumArtURI.", "LabelAlbumArtPN": "PN d'images d'album :", "LabelAlbumArtists": "Artistes de l'album :", "LabelAllowHWTranscoding": "Autoriser le transcodage matériel", @@ -533,9 +525,7 @@ "LabelHttpsPort": "Numéro de port HTTPS local :", "LabelHttpsPortHelp": "Le numéro de port TCP pour le serveur HTTPS.", "LabelIconMaxHeight": "Hauteur maximum des icônes :", - "LabelIconMaxHeightHelp": "Résolution maximum des icônes exposée par upnp:icon.", "LabelIconMaxWidth": "Largeur maximum des icônes :", - "LabelIconMaxWidthHelp": "Résolution maximum des icônes exposée par upnp:icon.", "LabelIdentificationFieldHelp": "Une sous-chaîne ou expression régulière insensible à la casse.", "LabelImageFetchersHelp": "Activez cette option pour classer vos récupérateurs d'images par ordre de priorité.", "LabelImageType": "Type d'image :", @@ -922,8 +912,6 @@ "OptionPlainVideoItemsHelp": "Toutes les vidéos seront affichées dans le DIDL en tant que \"object.item.videoItem\" au lieu de formats plus spécifiques comme, par exemple \"object.item.videoItem.movie\".", "OptionPlayCount": "Nombre de lectures", "OptionPremiereDate": "Date de la première", - "OptionProfileVideo": "Vidéo", - "OptionProfileVideoAudio": "Vidéo Audio", "OptionProtocolHls": "Streaming Http en direct", "OptionReleaseDate": "Date de sortie", "OptionReportByteRangeSeekingWhenTranscoding": "Signaler que le serveur prend en charge la recherche d'octets lors du transcodage", @@ -1179,7 +1167,6 @@ "OptionBluray": "Blu-ray", "OptionIsHD": "HD", "OptionIsSD": "SD", - "OptionProfilePhoto": "Photo", "OptionProtocolHttp": "HTTP", "OptionRegex": "Expression régulière", "Premiere": "Première", diff --git a/src/strings/gsw.json b/src/strings/gsw.json index 21bf0bd51b..f55a860f3a 100644 --- a/src/strings/gsw.json +++ b/src/strings/gsw.json @@ -8,11 +8,6 @@ "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.", "Ended": "Beendent", - "FolderTypeBooks": "Büecher", - "FolderTypeMovies": "Film", - "FolderTypeMusic": "Musig", - "FolderTypeMusicVideos": "Musigvideos", - "FolderTypeTvShows": "TV", "Friday": "Friitig", "HeaderDeviceAccess": "Grät Zuegriff", "HeaderEasyPinCode": "Eifache Pin Code", diff --git a/src/strings/he.json b/src/strings/he.json index 1fd73d3906..9cd60a8a72 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -59,10 +59,6 @@ "FileNotFound": "קובץ לא נמצא.", "FileReadCancelled": "קריאת הקובץ בוטלה.", "FileReadError": "חלה שגיאה בקריאת הקובץ.", - "FolderTypeMovies": "סרטים", - "FolderTypeMusic": "מוזיקה", - "FolderTypeMusicVideos": "קליפים", - "FolderTypeTvShows": "תוכניות טלויזיה", "Friday": "שישי", "Genres": "ז'אנרים", "GroupVersions": "גרסאות קבוצתיות", @@ -295,9 +291,6 @@ "OptionParentalRating": "דירוג בקרת הורים", "OptionPlayCount": "כמות ניגונים", "OptionPremiereDate": "תאריך בכורה", - "OptionProfilePhoto": "תמונה", - "OptionProfileVideo": "וידאו", - "OptionProfileVideoAudio": "צליל וידאו", "OptionResumable": "ניתן להמשיך", "OptionSpecialEpisode": "ספיישלים", "OptionTrackName": "שם הרצועה", @@ -538,8 +531,6 @@ "Genre": "ז'אנר", "General": "כללי", "Fullscreen": "מסך מלא", - "FolderTypeUnset": "תוכן מעורבב", - "FolderTypeBooks": "ספרים", "Filters": "מסננים", "Rewind": "הרצה לאחור", "FastForward": "הרצה קדימה", diff --git a/src/strings/hr.json b/src/strings/hr.json index 93404cd222..d250eb449b 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -109,12 +109,6 @@ "FileNotFound": "Datoteka nije pronađena.", "FileReadCancelled": "Učitavanje datoteke je prekinuto.", "FileReadError": "Prilikom učitavanja datoteke dogodila se greška.", - "FolderTypeBooks": "Knjige", - "FolderTypeMovies": "Filmovi", - "FolderTypeMusic": "Glazba", - "FolderTypeMusicVideos": "Glazbeni spotovi", - "FolderTypeTvShows": "TV", - "FolderTypeUnset": "Miješani sadržaj", "Friday": "Petak", "Genres": "Žanrovi", "GroupVersions": "Verzija grupe", @@ -277,9 +271,7 @@ "LabelAirsBeforeSeason": "Emitiranje prije sezone:", "LabelAlbumArtHelp": "PN se koristi za grafiku albuma sa dlna:profileID atributom na upnp:albumArtURI. Neki uređaji zahtijevaju specifičnu vrijednost bez obzira na veličinu slike.", "LabelAlbumArtMaxHeight": "Maksimalna visina Album art-a:", - "LabelAlbumArtMaxHeightHelp": "Maksimalna rezolucija albuma izloženih putem UPnP:albumArtURI.", "LabelAlbumArtMaxWidth": "Maksimalna širina Album art-a:", - "LabelAlbumArtMaxWidthHelp": "Maksimalna rezolucija albuma izloženih putem UPnP:albumArtURI.", "LabelAlbumArtPN": "Grafika albuma PN:", "LabelAlbumArtists": "Izvođači albuma:", "LabelAllowHWTranscoding": "Dopusti hardversko konvertiranje", @@ -364,9 +356,7 @@ "LabelHttpsPort": "Lokalni broj https porta:", "LabelHttpsPortHelp": "Broj TCP porta na koji se Jellyfin https server treba vezati.", "LabelIconMaxHeight": "Maksimalna visina ikona:", - "LabelIconMaxHeightHelp": "Maksimalna rezolucija ikona izloženih putem UPnP:icon.", "LabelIconMaxWidth": "Maksimalna širina ikona:", - "LabelIconMaxWidthHelp": "Maksimalna rezolucija ikona izloženih putem UPnP:icon.", "LabelIdentificationFieldHelp": "Spis-neosjetljivi podniz ili regex izraz.", "LabelImageFetchersHelp": "Omogućite i poredajte željene dohvatače slika po redu prioriteta.", "LabelImageType": "Tip slike:", @@ -681,7 +671,6 @@ "OptionPlainVideoItemsHelp": "Ako je omogućeno, sav video se prezentira u DIDL-u kao \"objekt.stavka.videoStavka\" umjesto više specijaliziranog tipa kao \"objekt.stavka.videoStavka.film\".", "OptionPlayCount": "Broju izvođenja", "OptionPremiereDate": "Datum premijere", - "OptionProfilePhoto": "Slika", "OptionProtocolHls": "Http strujanje uživo", "OptionReleaseDate": "Datum izdavanja", "OptionReportByteRangeSeekingWhenTranscoding": "Izvješće da li poslužitelj podržava bajt traženja kada se konvertira", @@ -910,7 +899,6 @@ "AskAdminToCreateLibrary": "Traži administratora da kreira biblioteku.", "PictureInPicture": "Slika u slici", "OptionProtocolHttp": "HTTP", - "OptionProfileVideo": "Video", "OptionIsSD": "SD", "OptionIsHD": "HD", "OptionDvd": "DVD", diff --git a/src/strings/hu.json b/src/strings/hu.json index 4a846c67a3..7623ffbea2 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -79,12 +79,6 @@ "Features": "Jellemzők", "FileNotFound": "Fájl nem található.", "Filters": "Szűrők", - "FolderTypeBooks": "Könyvek", - "FolderTypeMovies": "Filmek", - "FolderTypeMusic": "Zenék", - "FolderTypeMusicVideos": "Zenei Videók", - "FolderTypeTvShows": "TV Műsorok", - "FolderTypeUnset": "Vegyes Tartalom", "Folders": "Könyvtárak", "Friday": "Péntek", "Fullscreen": "Teljes képernyő", @@ -333,7 +327,6 @@ "OptionNew": "Új…", "OptionParentalRating": "Korhatár besorolás", "OptionPlayCount": "Lejátszások száma", - "OptionProfileVideo": "Videó", "OptionReleaseDate": "Megjelenés dátuma", "OptionResumable": "Folytatható", "OptionTrackName": "Sáv Címe", @@ -974,8 +967,6 @@ "OptionPlainStorageFolders": "Az összes mappa megjelenítése egyszerű tároló mappaként", "OptionPlainVideoItems": "Az összes videó megjelenítése egyszerű videófelvételként", "OptionPremiereDate": "Premier dátuma", - "OptionProfilePhoto": "Fénykép", - "OptionProfileVideoAudio": "Videó Audió", "OptionProtocolHls": "HTTP Live Streaming", "OptionProtocolHttp": "HTTP", "OptionRegex": "Regex", @@ -1133,9 +1124,7 @@ "ImportFavoriteChannelsHelp": "Csak a tuner eszközön kedvencként megjelölt csatornák kerülnek importálásra.", "LabelAlbumArtHelp": "A használandó PN érték az albumborítók esetében, mely a upnp:albumArtURI dlna:profileID tulajdonságában szerepel. Néhány eszköz meghatározott értéket vár el, függetlenül a kép méretétől.", "LabelAlbumArtMaxHeight": "Albumborító maximális magasság:", - "LabelAlbumArtMaxHeightHelp": "Albumborító maximális magasság mely upnp:albumArtURI kiajánlásra kerül.", "LabelAlbumArtMaxWidth": "Albumborító maximális szélesség:", - "LabelAlbumArtMaxWidthHelp": "Albumborító maximális szélesség mely upnp:albumArtURI kiajánlásra kerül.", "LabelAlbumArtPN": "Albumborító PN:", "LabelAuthProvider": "Azonosítási Szolgáltató:", "LabelBurnSubtitles": "Feliratok beégetése:", @@ -1149,9 +1138,7 @@ "LabelEnableBlastAliveMessages": "Blast alive üzenetek", "LabelHttpsPortHelp": "A TCP port száma, melyen a HTTPS szerver figyel.", "LabelIconMaxHeight": "Ikon maximális magasság:", - "LabelIconMaxHeightHelp": "Ikon maximális magasság, mely az upnp:icon keresztül kiajánlásra kerül.", "LabelIconMaxWidth": "Ikon maximális szélesség:", - "LabelIconMaxWidthHelp": "Ikon maximális szélesség, mely az upnp:icon keresztül kiajánlásra kerül.", "LabelIdentificationFieldHelp": "Kis-és nagybetű különbséget figyelmen kívül hagyó szöveg vagy reguláris kifejezés.", "LabelKeepUpTo": "Őrizd meg:", "LabelKodiMetadataUser": "Mentsd el a következő felhasználó megtekintési adatát az NFO-ba:", diff --git a/src/strings/id.json b/src/strings/id.json index 57833761a4..1d5ef06332 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -1,7 +1,6 @@ { "ButtonQuickStartGuide": "Panduan cepat", "ButtonSignOut": "Sign out", - "FolderTypeTvShows": "TV", "HeaderEasyPinCode": "Kode Pin Mudah", "HeaderSetupLibrary": "Atur pustaka media Anda", "LabelContentType": "Tipe konten:", @@ -340,11 +339,6 @@ "Fullscreen": "Layar penuh", "Friday": "Jumat", "FormatValue": "Format: {0}", - "FolderTypeUnset": "Konten Campuran", - "FolderTypeMusicVideos": "Video musik", - "FolderTypeMusic": "Musik", - "FolderTypeMovies": "Film", - "FolderTypeBooks": "Buku", "Filters": "Filter", "FileReadError": "Terjadi kesalahan saat membaca file.", "FileReadCancelled": "Pembacaan file telah dibatalkan.", diff --git a/src/strings/is-is.json b/src/strings/is-is.json index 7c8757e141..fef4891499 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -5,11 +5,6 @@ "ButtonOk": "Í lagi", "ButtonSignOut": "Útskráning", "DeleteMedia": "Eyða margmiðlunarefni", - "FolderTypeBooks": "Bækur", - "FolderTypeMovies": "Kvikmyndir", - "FolderTypeMusic": "Tónlist", - "FolderTypeMusicVideos": "Tónlistarmyndbönd", - "FolderTypeTvShows": "Sjónvarpsþættir", "HeaderDeviceAccess": "Aðgangur tækja", "HeaderEasyPinCode": "Auðvelt Pin númer", "HeaderPaths": "Slóðir", @@ -140,7 +135,6 @@ "GuideProviderLogin": "Innskrá", "General": "Almennt", "Friday": "Föstudagur", - "FolderTypeUnset": "Blandað efni", "FileNotFound": "Skrá finnst ekki.", "File": "Skrá", "Episodes": "Þættir", diff --git a/src/strings/it.json b/src/strings/it.json index 0d71e75b05..d1710fafd3 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -192,11 +192,6 @@ "FileReadCancelled": "Il file letto è stato cancellato.", "FileReadError": "Errore durante la lettura del file.", "Filters": "Filtri", - "FolderTypeBooks": "Libri", - "FolderTypeMovies": "Film", - "FolderTypeMusic": "Musica", - "FolderTypeMusicVideos": "Video Musicali", - "FolderTypeUnset": "Contenuto Misto", "Folders": "Cartelle", "FormatValue": "Formato: {0}", "Friday": "Venerdì", @@ -408,9 +403,7 @@ "LabelAirsBeforeSeason": "In onda prima della stagione:", "LabelAlbumArtHelp": "PN utilizzato per le copertine degli album, all'interno dell'attributo dlna:profileID su upnp:albumArtURI. Alcuni dispositivi richiedono un valore specifico, indipendentemente dalla dimensione dell'immagine.", "LabelAlbumArtMaxHeight": "Altezza massima copertina Album:", - "LabelAlbumArtMaxHeightHelp": "Risoluzione massima copertina Album inviata tramite upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Larghezza massima copertina Album:", - "LabelAlbumArtMaxWidthHelp": "Risoluzione massima copertina album inviata tramite upnp:albumArtURI.", "LabelAlbumArtPN": "Copertine Album PN:", "LabelAlbumArtists": "Artisti album:", "LabelAllowHWTranscoding": "Consenti transcodifica hardware", @@ -515,9 +508,7 @@ "LabelHttpsPort": "Porta HTTPS locale:", "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:", - "LabelIconMaxWidthHelp": "Risoluzione massima delle icone esposte tramite upnp:icon.", "LabelIdentificationFieldHelp": "Una stringa o espressione regex sensibile a maiuscole e minuscole.", "LabelImageFetchersHelp": "Abilitare e classificare i tuoi Fetchers immagini preferite in ordine di priorità.", "LabelImageType": "Tipo immagine:", @@ -885,7 +876,6 @@ "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", "OptionPremiereDate": "Data della prima", - "OptionProfilePhoto": "Foto", "OptionReleaseDate": "Data di Uscita", "OptionReportByteRangeSeekingWhenTranscoding": "Segnala che il server supporta la ricerca di byte durante la transcodifica", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Questo è necessario per alcuni dispositivi che non hanno l'avanzamento rapido che funziona bene.", @@ -1129,7 +1119,6 @@ "ChangingMetadataImageSettingsNewContent": "I cambiamenti alle impostazioni dei download dei metadati verranno applicati solamente ai nuovi contenuti aggiunti alla libreria. Per applicare i cambiamenti ai titoli già esistenti devi ricaricare i metadati manualmente.", "DownloadsValue": "{0} scaricati", "File": "File", - "FolderTypeTvShows": "Serie TV", "General": "Generale", "HeaderApp": "Applicazione", "HeaderAppearsOn": "Appare In", @@ -1188,8 +1177,6 @@ "LabelBitrate": "Bitrate:", "LabelSize": "Dimensione:", "LabelTranscodePath": "Percorso di trascodifica:", - "OptionProfileVideo": "Video", - "OptionProfileVideoAudio": "Video Audio", "LabelFont": "Font:", "HeaderIdentificationHeader": "Header di Identificazione", "LabelAudioChannels": "Canali audio:", diff --git a/src/strings/ja.json b/src/strings/ja.json index bb48b4d409..f63441ac9c 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -214,12 +214,6 @@ "FileReadCancelled": "ファイルの読み込みをキャンセルしました。", "FileReadError": "ファイルの読み込み中にエラーが発生しました。", "Filters": "フィルタ", - "FolderTypeBooks": "ブック", - "FolderTypeMovies": "ムービー", - "FolderTypeMusic": "音楽", - "FolderTypeMusicVideos": "ミュージックビデオ", - "FolderTypeTvShows": "テレビ番組", - "FolderTypeUnset": "ミックスコンテンツ", "Folders": "フォルダー", "FormatValue": "フォーマット: {0}", "Friday": "金曜日", @@ -488,9 +482,6 @@ "NewCollection": "新しいコレクション", "OptionDatePlayed": "再生日", "OptionMissingEpisode": "所有してないエピソード", - "OptionProfilePhoto": "フォト", - "OptionProfileVideo": "ビデオ", - "OptionProfileVideoAudio": "ビデオオーディオ", "OptionProtocolHttp": "HTTP", "OptionRegex": "正規表現", "OptionReleaseDate": "公開日", @@ -970,8 +961,6 @@ "LabelCachePathHelp": "画像などのサーバーキャッシュファイルの場所を指定します。空欄にしておくと、サーバーのデフォルトを使います。", "LabelBlastMessageIntervalHelp": "ブラスト アライブ メッセージ間の時間を秒単位で指定します。", "LabelBindToLocalNetworkAddressHelp": "HTTP サーバー用のローカル IP アドレスを上書きします。空のままにしておくと、サーバーは利用可能なすべてのアドレスにバインドします。この値の変更を反映するには再起動が必要です。", - "LabelAlbumArtMaxWidthHelp": "upnp:albumArtURI で公開するアルバムアートの最大解像度。", - "LabelAlbumArtMaxHeightHelp": "upnp:albumArtURI で公開するアルバムアートの最大解像度。", "LabelAlbumArtHelp": "upnp:albumArtURI の dlna:profileID 属性で、アルバムアートに使われるPN。デバイスによっては、画像のサイズと無関係に特定の値を要求するものもあります。", "HeaderSyncPlayEnabled": "SyncPlay を有効にしました", "HeaderSyncPlaySelectGroup": "グループに参加", @@ -1047,8 +1036,6 @@ "LabelKeepUpTo": "最新:", "LabelInNetworkSignInWithEasyPasswordHelp": "ローカルネットワーク内では簡単なPINコードを利用してサインインするようにします。ローカル以外からのアクセスのときのみ通常のパスワードが必要になります。PINコードを空欄にした場合,ローカルネットワーク内からのアクセスではパスワードが不要になります。", "LabelInNetworkSignInWithEasyPassword": "簡単なPINコードを利用してネットワーク内からサインインする機能の有効化", - "LabelIconMaxWidthHelp": "upnp:icon として表示されるアイコンの最大解像度(幅)。", - "LabelIconMaxHeightHelp": "upnp:icon として表示されるアイコンの最大解像度(高さ)。", "ManageRecording": "録画管理", "LeaveBlankToNotSetAPassword": "このフィールドを空欄にすることでパスワード不要にできます。", "Large": "ラージ", diff --git a/src/strings/kk.json b/src/strings/kk.json index 7e2c15167d..fa005f55b8 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -208,12 +208,6 @@ "FileReadCancelled": "Faıl oqýy boldyrylmady.", "FileReadError": "Faıldy oqyp jatqanda qate paıda boldy.", "Filters": "Súzgiler", - "FolderTypeBooks": "Kitaptar", - "FolderTypeMovies": "Kıno", - "FolderTypeMusic": "Mýzyka", - "FolderTypeMusicVideos": "Mýzykalyq beıneler", - "FolderTypeTvShows": "TD-kórsetimder", - "FolderTypeUnset": "Aralas mazmun", "Folders": "Qaltalar", "FormatValue": "Pishim: {0}", "Friday": "juma", @@ -437,9 +431,7 @@ "LabelAlbum": "Álbom:", "LabelAlbumArtHelp": "PN álbom sýreti úshin upnp:albumArtURI ishindegi dlna:profileID tólsıpatymen birge paıdalanylady. Keıbir qurylǵylar úshin, sýrettiń ólshemine ańǵarýsyz, naqty mán qajet.", "LabelAlbumArtMaxHeight": "Álbom sýretiniń eń joǵary bıigi:", - "LabelAlbumArtMaxHeightHelp": "upnp:albumArtURI arqyly kórsetetin álbom sýretiniń eń joǵary ajyratylymdyǵy.", "LabelAlbumArtMaxWidth": "Álbom sýretiniń eń joǵary eni:", - "LabelAlbumArtMaxWidthHelp": "upnp:albumArtURI arqyly kórsetetin álbom sýretiniń eń joǵary ajyratylymdyǵy.", "LabelAlbumArtPN": "Álbom sýreti PN:", "LabelAlbumArtists": "Álbom oryndaýshylary:", "LabelAllowHWTranscoding": "Apparattyq qaıta kodtaýǵa ruqsat etý", @@ -546,9 +538,7 @@ "LabelHttpsPort": "Jergilikti HTTPS-port nómiri:", "LabelHttpsPortHelp": "Jellyfin HTTPS-serveri baılastyrylýǵa tıisti TCP-port nómiri.", "LabelIconMaxHeight": "Belgisheniń eń joǵary bıigi:", - "LabelIconMaxHeightHelp": "upnp:icon arqyly kórsetetin belgisheleriniń eń joǵary ajyratylymdyǵy.", "LabelIconMaxWidth": "Belgisheniń eń joǵary eni:", - "LabelIconMaxWidthHelp": "upnp:icon arqyly kórsetetin belgisheleriniń eń joǵary ajyratylymdyǵy.", "LabelIdentificationFieldHelp": "Regıstr eskermeıtin ishki jol nemese udaıy órnek.", "LabelImageFetchersHelp": "Teńshelgen sýret irikteýshilerin qosyńyz jáne basymdylyq reti boıynsha dáreje berińiz.", "LabelImageType": "Sýret túri:", @@ -940,9 +930,6 @@ "OptionPlainVideoItemsHelp": "Qosylǵanda, barlyq qaltalar DIDL ishinde \"object.item.videoItem.movie\" sıaqty naqtylaý túriniń ornyna \"object.item.videoItem\" bolyp beınelenedi.", "OptionPlayCount": "Oınatý esebi", "OptionPremiereDate": "Tusaýkeser kún-aıy", - "OptionProfilePhoto": "Foto", - "OptionProfileVideo": "Beıne", - "OptionProfileVideoAudio": "Beıne Dybys", "OptionProtocolHls": "HTTP Тікелей Тасымалдау", "OptionProtocolHttp": "HTTP", "OptionRegex": "Udaıy órnek", diff --git a/src/strings/ko.json b/src/strings/ko.json index 5c5bb4d13a..9cc0f7f6ae 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -79,11 +79,6 @@ "FastForward": "빨리 감기", "FileNotFound": "파일을 찾을 수 없습니다.", "FileReadError": "파일을 읽는 동안 오류가 발생하였습니다.", - "FolderTypeBooks": "도서", - "FolderTypeMovies": "영화", - "FolderTypeMusic": "음악", - "FolderTypeMusicVideos": "뮤직 비디오", - "FolderTypeTvShows": "TV", "Friday": "금요일", "Fullscreen": "전체화면", "GuideProviderLogin": "로그인", @@ -211,9 +206,7 @@ "LabelAlbum": "앨범:", "LabelAlbumArtHelp": "PN은 upnp:albumArtURI의 dlna:profileID 속성 내에서 앨범 아트에 사용되었습니다.\n일부 장치는 이미지의 크기에 상관 없이 특정 값을 필요로 합니다.", "LabelAlbumArtMaxHeight": "앨범 아트 최대 높이:", - "LabelAlbumArtMaxHeightHelp": "upnp:albumArtURI를 통해 노출된 앨범 아트의 최대 해상도.", "LabelAlbumArtMaxWidth": "앨범 아트 최대 넓이:", - "LabelAlbumArtMaxWidthHelp": "upnp:albumArtURI를 통해 노출된 앨범 아트의 최대 해상도.", "LabelAlbumArtPN": "앨범 아트 PN:", "LabelAlbumArtists": "앨범 아티스트:", "LabelAppName": "앱 이름", @@ -284,9 +277,7 @@ "LabelHttpsPort": "로컬 HTTPS 포트 번호:", "LabelHttpsPortHelp": "Jellyfin의 HTTPS 서버가 바인딩해야하는 TCP포트 번호", "LabelIconMaxHeight": "아이콘 최대 높이:", - "LabelIconMaxHeightHelp": "upnp:icon를 통해 노출되는 앨범 아트의 최대 해상도", "LabelIconMaxWidth": "아이콘 최대 너비:", - "LabelIconMaxWidthHelp": "upnp:icon를 통해 노출되는 앨범 아트의 최대 해상도", "LabelIdentificationFieldHelp": "대소문자를 구별하지 않는 부분 문자열 또는 정규 표현식.", "LabelImageFetchersHelp": "선호하는 이미지 수집기를 우선순위대로 활성화합니다.", "LabelImageType": "이미지 유형:", @@ -509,9 +500,6 @@ "OptionPlainVideoItemsHelp": "활성화 된 경우 모든 비디오는 \"object.item.videoItem.movie\"와 같이보다 구체적인 유형 대신 \"object.item.videoItem\"로 DIDL에 표시됩니다.", "OptionPlayCount": "재생 횟수", "OptionPremiereDate": "Premiere 일자", - "OptionProfilePhoto": "사진", - "OptionProfileVideo": "비디오", - "OptionProfileVideoAudio": "비디오 오디오", "OptionProtocolHls": "HTTP 실시간 스트리밍", "OptionReleaseDate": "개봉일", "OptionResElement": "res 요소", @@ -1033,7 +1021,6 @@ "HeaderDateIssued": "발행일", "ConfigureDateAdded": "라이브러리 설정의 Jellyfin 서버 대시보드에서 추가된 날짜를 결정하는 방법 구성", "EnableStreamLoopingHelp": "라이브 스트림에 몇 초의 데이터만 포함되어 있고 지속적으로 요청해야하는 경우, 이 옵션을 활성화하십시오. 필요하지 않은 경우, 이 기능을 사용하면 문제가 발생할 수 있습니다.", - "FolderTypeUnset": "혼합 콘텐츠", "BurnSubtitlesHelp": "영상을 트랜스코딩할 때 자막 포맷에 따라 서버에서 영상 안에 자막을 입힐지를 결정합니다. 영상에 자막을 입히지 않으면 서버 성능이 향상됩니다. 일부 ASS/SSA 자막을 포함하여 자막 포맷(VOBSUB, PGS, SUB/IDX 등)에 따라 자막을 영상에 입히려면 자동을 선택하십시오.", "EnableNextVideoInfoOverlay": "재생 중에 다음 비디오 정보 표시", "EnablePhotosHelp": "이미지가 다른 미디어 파일과 함께 감지되어 표시됩니다.", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index 8469c36c46..6c62ae9ca4 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -61,11 +61,6 @@ "ExtractChapterImagesHelp": "Skyrių paveikslų išgavimas padės Jellyfin programėlėms rodyti vaizdingas scenas pasirinkimo meniu. Procesas gana lėtas, naudoja daug procesoriaus pajėgumų ir gali sunaudoti kelis gigabaitus disko vietos. Jis vyksta atradus naujus vaizdo įrašus, bei atliekamas naktimis. Tvarkaraštį galima keisti numatytų užduočių skyriuje. Nerekomenduojama vykdyti šios užduoties vartojimo piko valandomis.", "Favorite": "Mėgstamas", "File": "Failas", - "FolderTypeBooks": "Knygos", - "FolderTypeMovies": "Filmai", - "FolderTypeMusic": "Muzika", - "FolderTypeMusicVideos": "Muzikiniai klipai", - "FolderTypeTvShows": "TV Serialai", "Friday": "Penktadienis", "Genres": "Žanrai", "GroupVersions": "Grupuoti versijas", @@ -644,7 +639,6 @@ "LabelDisplayLanguage": "Kalba:", "LabelDisplayName": "Rodomas vardas:", "EnableBackdropsHelp": "Rodyti fono dekoracijas naršant bibliotekoje.", - "FolderTypeUnset": "Įvairus turinys", "HeaderAddUpdateImage": "Pridėti/Įkelti atvaizdą", "LabelAlbumArtPN": "Albumo iliustracijos PN:", "LabelMatchType": "Atitikties tipas:", @@ -720,8 +714,6 @@ "Horizontal": "Horizontalus", "LabelAccessDay": "Savaitės diena:", "ImportMissingEpisodesHelp": "Jei įjungta, informacija apie trūkstamus epizodus bus importuota į jūsų „Jellyfin“ duomenų bazę ir rodoma serialuose. Tai gali įtakoti ilgesnį bibliotekos nuskaitymą.", - "LabelAlbumArtMaxHeightHelp": "Maksimali albumo iliustracijos, rodomos naudojant upnp:albumArtURI, skiriamoji geba.", - "LabelAlbumArtMaxWidthHelp": "Maksimali albumo iliustracijos, rodomos naudojant upnp:albumArtURI, skiriamoji geba.", "LabelAudioChannels": "Garso takeliai:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Automatiškai atnaujinti metaduomenis iš interneto:", "LabelAudioSampleRate": "Garso takelio diskr.sparta:", diff --git a/src/strings/lv.json b/src/strings/lv.json index f8e3daf2de..7ff61f2498 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -362,11 +362,6 @@ "Friday": "Piektdiena", "FormatValue": "Formāts: {0}", "Folders": "Mapes", - "FolderTypeTvShows": "TV Raidījumi", - "FolderTypeMusicVideos": "Mūzikas Video", - "FolderTypeMusic": "Mūzika", - "FolderTypeMovies": "Filmas", - "FolderTypeBooks": "Grāmatas", "Filters": "Filtri", "FileReadError": "Datnes lasīšanas laikā notika kļūda.", "FileReadCancelled": "Datnes lasīšana tika atcelta.", @@ -668,8 +663,6 @@ "OptionTvdbRating": "TVDB Reitings", "OptionRandom": "Nejaušs", "OptionProtocolHttp": "HTTP", - "OptionProfileVideoAudio": "Video Audio", - "OptionProfileVideo": "Video", "OptionParentalRating": "Vecāku Reitings", "OptionOnInterval": "Pēc intervāla", "OptionNew": "Jauns...", @@ -727,7 +720,6 @@ "LabelDeathDate": "Nāves datums:", "LabelDateTimeLocale": "Datuma un laika lokalizācija:", "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.", "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.", @@ -746,9 +738,7 @@ "LabelAudioChannels": "Audio kanāli:", "LabelAudioBitrate": "Audio bitu-ātrums:", "LabelAllowHWTranscoding": "Atļaut aparatūras trans-kodēšanu", - "LabelAlbumArtMaxWidthHelp": "Maksimālā albumu vāku izšķirtspēja caur upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Albumu vāku maksimālais platums:", - "LabelAlbumArtMaxHeightHelp": "Maksimālā albumu vāku izšķirtspēja caur upnp:albumArtURI.", "LabelAlbumArtMaxHeight": "Albumu vāku maksimālais augstums:", "LabelAbortedByServerShutdown": "(Atcelts dēļ servera izslēgšanas)", "ImportFavoriteChannelsHelp": "Ja iespējots, tikai kanāli, kas atzīmēti kā favorīti uztvērēja ierīcē tiks importēti.", @@ -847,8 +837,6 @@ "AllowFfmpegThrottling": "Ierobežot Trans-kodējumus", "AllowHWTranscodingHelp": "Atļaut uztvērējam trans-kodēt straumes tiešsaistē. Tas var atvieglot trans-kodēšanu, kas jāveic serverim.", "AirDate": "Tiešraides datums", - "LabelIconMaxWidthHelp": "Maksimālā ikonu izšķirtspēja caur upnp:icon.", - "LabelIconMaxHeightHelp": "Maksimālā ikonu izšķirtspēja caur upnp:icon.", "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.", @@ -987,7 +975,6 @@ "OptionRequirePerfectSubtitleMatch": "Lejupielādēt tikai subtitrus, kas perfekti sakrīt ar manām video datnēm", "OptionRegex": "Regex", "OptionProtocolHls": "HTTP Tiešraides Straumes", - "OptionProfilePhoto": "Attēls", "OptionPremiereDate": "Pirmizrādes Datums", "OptionPlayCount": "Atskaņošanas Skaits", "OptionMissingEpisode": "Trūkstošās Epizodes", diff --git a/src/strings/ms.json b/src/strings/ms.json index a8755792a8..04c4a3e8d1 100644 --- a/src/strings/ms.json +++ b/src/strings/ms.json @@ -1,7 +1,6 @@ { "ButtonSignOut": "Sign out", "Delete": "Padam", - "FolderTypeTvShows": "TV", "LabelFinish": "Habis", "LabelYoureDone": "Kamu Selesai!", "ParentalRating": "Parental Rating", diff --git a/src/strings/nb.json b/src/strings/nb.json index 7bde7f6b3f..d86c6d9433 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -145,12 +145,6 @@ "FileNotFound": "Fil ikke funnet.", "FileReadCancelled": "Lesing av filen ble avbrutt.", "FileReadError": "Det oppstod en feil mens filen ble lest.", - "FolderTypeBooks": "Bøker", - "FolderTypeMovies": "Filmer", - "FolderTypeMusic": "Musikk", - "FolderTypeMusicVideos": "Musikkvideoer", - "FolderTypeTvShows": "TV", - "FolderTypeUnset": "Blandet innhold", "Friday": "Fredag", "Fullscreen": "Fullskjerm", "Genres": "Sjangre", @@ -335,9 +329,7 @@ "LabelAirsBeforeEpisode": "Sendes før episode:", "LabelAirsBeforeSeason": "Sendes før sesong:", "LabelAlbumArtMaxHeight": "Maks høyde for albumomslag:", - "LabelAlbumArtMaxHeightHelp": "Maksoppløsning på albumomslag er eksonert via upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Maks bredde for albumomslag:", - "LabelAlbumArtMaxWidthHelp": "Maksoppløsning av albumomslag er eksponert via upnp:albumArtURI.", "LabelAlbumArtists": "Albumartister:", "LabelAllowHWTranscoding": "Tillat maskinvare-omkoding", "LabelAppName": "Applikasjonsnavn", @@ -427,9 +419,7 @@ "LabelHttpsPort": "Lokal HTTPS-port:", "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:", - "LabelIconMaxWidthHelp": "Maks oppløsning for ikoner eksponert via upnp:icon.", "LabelIdentificationFieldHelp": "Et regex-uttrykk eller en deltekst (skiller ikke mellom store og små bokstaver).", "LabelImageFetchersHelp": "Aktiver og ranger dine foretrukne kilder for omslagsbilder i prioritert rekkefølge.", "LabelImageType": "Bildetype:", @@ -757,8 +747,6 @@ "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", "OptionPremiereDate": "Premieredato", - "OptionProfilePhoto": "Bilde", - "OptionProfileVideoAudio": "Videolyd", "OptionReleaseDate": "Utgivelsesdato", "OptionReportByteRangeSeekingWhenTranscoding": "Rapporter at serveren støtter byte-søking ved omkoding", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Dette kreves for noen enheter som ikke tidssøker særlig bra.", @@ -1195,7 +1183,6 @@ "OptionDownloadImagesInAdvanceHelp": "Som standard vil de fleste bilder kun lastes ned når de blir forespurt av en klient. Aktiver denne innstillingen for å laste ned alle bilder på forhånd når ny media oppdages. Dette kan føre til at skanning av biblioteket tar betydelig lenger tid.", "OptionIsSD": "SD", "OptionLoginAttemptsBeforeLockout": "Bestemmer hvor mange mislykkede innloggingsførsøk som kan finne sted før brukeren blir utestengt.", - "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.", diff --git a/src/strings/nl.json b/src/strings/nl.json index 2c964bd49c..2326ccee2f 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -194,12 +194,6 @@ "FileNotFound": "Bestand niet gevonden.", "FileReadCancelled": "Bestand lezen is geannuleerd.", "FileReadError": "Er is een fout opgetreden bij het lezen van het bestand.", - "FolderTypeBooks": "Boeken", - "FolderTypeMovies": "Films", - "FolderTypeMusic": "Muziek", - "FolderTypeMusicVideos": "Muziek Video's", - "FolderTypeTvShows": "TV Series", - "FolderTypeUnset": "Gemengde Inhoud", "Folders": "Mappen", "FormatValue": "Formaat: {0}", "Friday": "Vrijdag", @@ -410,9 +404,7 @@ "LabelAirsBeforeSeason": "Uitgezonden voor seizoen:", "LabelAlbumArtHelp": "PN gebruikt voor album art, binnen het DLNA: profileID attribuut op UPnP: albumArtURI. Sommige apparaten vereisen een specifieke waarde, ongeacht de grootte van het beeld.", "LabelAlbumArtMaxHeight": "Albumhoes max. hoogte:", - "LabelAlbumArtMaxHeightHelp": "Max. resolutie van albumhoezen weergegeven via upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Albumhoes max. breedte:", - "LabelAlbumArtMaxWidthHelp": "Max. resolutie van albumhoezen weergegeven via upnp:albumArtURI.", "LabelAlbumArtPN": "Albumhoes PN:", "LabelAlbumArtists": "Album artiesten:", "LabelAllowHWTranscoding": "Hardware transcoding toestaan", @@ -516,9 +508,7 @@ "LabelHttpsPort": "Lokale HTTPS poort nummer:", "LabelHttpsPortHelp": "Het TCP poort nummer voor de HTTPS server.", "LabelIconMaxHeight": "Pictogram maximum hoogte:", - "LabelIconMaxHeightHelp": "Maximum resolutie van pictogrammen weergegeven via upnp:icon.", "LabelIconMaxWidth": "Pictogram maximum breedte:", - "LabelIconMaxWidthHelp": "Maximum resolutie van pictogrammen weergegeven via upnp:icon.", "LabelIdentificationFieldHelp": "Een niet-hoofdlettergevoelige subtekenreeks of regex expressie.", "LabelImageFetchersHelp": "Rangschik uw voorkeurs afbeeldingen downloader in volgorde van prioriteit.", "LabelImageType": "Afbeeldingstype:", @@ -879,8 +869,6 @@ "OptionPlainVideoItemsHelp": "Indien ingeschakeld worden alle video's in DIDL weergegeven als 'object.item.videoItem' in plaats van een meer specifiek type, zoals 'object.item.videoItem.movie'.", "OptionPlayCount": "Afspeel telling", "OptionPremiereDate": "Première Datum", - "OptionProfilePhoto": "Foto", - "OptionProfileVideoAudio": "Video geluid", "OptionReleaseDate": "Uitgave datum", "OptionReportByteRangeSeekingWhenTranscoding": "Rapporteer dat de server byte zoeken tijdens transcoderen ondersteunt", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Dit is vereist voor bepaalde apparaten die zo goed op tijd zoeken.", @@ -1241,7 +1229,6 @@ "OptionRegex": "Regex", "TabServer": "Server", "TabStreaming": "Streamen", - "OptionProfileVideo": "Video", "AlbumArtist": "Album Artiest", "Album": "Album", "DeinterlaceMethodHelp": "Selecteer de deinterlacingmethode die u wilt gebruiken bij het transcoderen van geïnterlinieerde inhoud.", diff --git a/src/strings/pl.json b/src/strings/pl.json index 5885911680..34d4112b4f 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -207,12 +207,6 @@ "FileReadCancelled": "Odczytywanie pliku zostało anulowane.", "FileReadError": "Podczas odczytywania pliku wystąpił błąd.", "Filters": "Filtry", - "FolderTypeBooks": "Książki", - "FolderTypeMovies": "Filmy", - "FolderTypeMusic": "Muzyka", - "FolderTypeMusicVideos": "Teledyski", - "FolderTypeTvShows": "Seriale", - "FolderTypeUnset": "Zawartość mieszana", "Folders": "Foldery", "Friday": "Piątek", "Fullscreen": "Pełny ekran", @@ -435,9 +429,7 @@ "LabelAlbum": "Album:", "LabelAlbumArtHelp": "PN używany jako okładka albumu z dlna:profileID w atrybucie upnp:albumArtURI. Niektóre urządzenia wymagają konkretnych wartości, niezależnie od rozmiaru obrazu.", "LabelAlbumArtMaxHeight": "Maksymalna wysokość okładki albumu:", - "LabelAlbumArtMaxHeightHelp": "Maksymalna rozdzielczość okładki albumu wystawiana przez upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Maksymalna szerokość okładki albumu:", - "LabelAlbumArtMaxWidthHelp": "Maksymalna rozdzielczość okładki albumu wystawiana przez upnp:albumArtURI.", "LabelAlbumArtPN": "PN okładki albumu:", "LabelAlbumArtists": "Wykonawcy albumów:", "LabelAllowHWTranscoding": "Zezwalaj na sprzętowe transkodowanie", @@ -543,9 +535,7 @@ "LabelHttpsPort": "Lokalny numer portu HTTPS:", "LabelHttpsPortHelp": "Numer portu TCP dla serwera HTTPS.", "LabelIconMaxHeight": "Maksymalna wysokość ikon:", - "LabelIconMaxHeightHelp": "Maksymalna rozdzielczość ikon wystawianych przez upnp:icon.", "LabelIconMaxWidth": "Maksymalna szerokość ikony:", - "LabelIconMaxWidthHelp": "Maksymalna rozdzielczość ikon wystawianych przez upnp:icon.", "LabelIdentificationFieldHelp": "String lub regex nie wrażliwy na wielkość liter.", "LabelImageFetchersHelp": "Aktywuj i uporządkuj preferowane źródła obrazów według ich priorytetu.", "LabelImageType": "Typ obrazu:", @@ -933,9 +923,6 @@ "OptionPlainVideoItemsHelp": "Wszystkie wideo są reprezentowane w DIDL jako \"object.item.videoitem\" zamiast bardziej dokładnych typów takich jak \"object.item.videoitem.movie\".", "OptionPlayCount": "Liczba odtworzeń", "OptionPremiereDate": "Data premiery", - "OptionProfilePhoto": "Fotografia", - "OptionProfileVideo": "Wideo", - "OptionProfileVideoAudio": "Wideo Audio", "OptionProtocolHls": "Strumieniowanie HTTP", "OptionProtocolHttp": "HTTP", "OptionRegex": "Wyrażenie regularne", diff --git a/src/strings/pr.json b/src/strings/pr.json index 579f867fc5..e95a323780 100644 --- a/src/strings/pr.json +++ b/src/strings/pr.json @@ -7,9 +7,7 @@ "HeaderCastAndCrew": "Mateys", "HeaderMusicQuality": "Sea Shanty Strength", "HeaderLatestMusic": "Latest Sea Shanties", - "FolderTypeMusic": "Sea Shanties", "HeaderAudioBooks": "Spoken Tales", - "FolderTypeBooks": "Tall Tales", "Books": "Tall Tales", "LabelHomeNetworkQuality": "Sail strength:", "Home": "Poop Deck", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index e219a92231..3e749fdfe7 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -197,12 +197,6 @@ "FileReadCancelled": "A leitura do arquivo foi cancelada.", "FileReadError": "Ocorreu um erro ao ler o arquivo.", "Filters": "Filtros", - "FolderTypeBooks": "Livros", - "FolderTypeMovies": "Filmes", - "FolderTypeMusic": "Música", - "FolderTypeMusicVideos": "Videoclipes", - "FolderTypeTvShows": "Séries", - "FolderTypeUnset": "Conteúdo Misto", "Folders": "Pastas", "FormatValue": "Formato: {0}", "Friday": "Sexta-feira", @@ -420,9 +414,7 @@ "LabelAlbum": "Álbum:", "LabelAlbumArtHelp": "PN usado para a arte do álbum, dentro do atributo dlna:profileID em upnp:albumArtURI. Alguns dispositivos requerem um valor específico, independente do tamanho da imagem.", "LabelAlbumArtMaxHeight": "Altura máxima da arte do álbum:", - "LabelAlbumArtMaxHeightHelp": "Resolução máxima da arte do álbum exposta via upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Largura máxima da arte do álbum:", - "LabelAlbumArtMaxWidthHelp": "Resolução máxima da arte do álbum exposta via upnp:albumArtURI.", "LabelAlbumArtPN": "PN da arte do álbum:", "LabelAlbumArtists": "Artistas do álbum:", "LabelAllowHWTranscoding": "Permitir a transcodificação de hardware", @@ -529,9 +521,7 @@ "LabelHttpsPort": "Número da porta local de HTTPS:", "LabelHttpsPortHelp": "O número da porta TCP do servidor HTTPS.", "LabelIconMaxHeight": "Altura máxima do ícone:", - "LabelIconMaxHeightHelp": "Resolução máxima do ícone que é exposto via upnp:icon.", "LabelIconMaxWidth": "Largura máxima do ícone:", - "LabelIconMaxWidthHelp": "Resolução máxima do ícone que é exposto via upnp:icon.", "LabelIdentificationFieldHelp": "Uma substring ou expressão regex que não diferencia maiúsculas de minúsculas.", "LabelImageFetchersHelp": "Ativa e classifica por ordem de prioridade seus buscadores de imagem preferidos.", "LabelImageType": "Tipo de imagem:", @@ -909,9 +899,6 @@ "OptionPlainVideoItemsHelp": "Todos os vídeos são representados no DIDL como \"object.item.videoItem\" ao invés de um tipo mais específico como, por exemplo, \"object.item.videoItem.movie\".", "OptionPlayCount": "Contagem de Reproduções", "OptionPremiereDate": "Data da Estréia", - "OptionProfilePhoto": "Foto", - "OptionProfileVideo": "Vídeo", - "OptionProfileVideoAudio": "Áudio do Vídeo", "OptionReleaseDate": "Data de Lançamento", "OptionReportByteRangeSeekingWhenTranscoding": "Reportar que o servidor suporta busca de byte quando transcodificar", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Isto é necessário para avançar ou retroceder o tempo em alguns dispositivos.", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index ebb9e5dae8..502f2952ba 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -74,11 +74,6 @@ "FileNotFound": "Ficheiro não encontrado.", "FileReadCancelled": "A leitura do ficheiro foi cancelada.", "FileReadError": "Ocorreu um erro ao ler o ficheiro.", - "FolderTypeBooks": "Livros", - "FolderTypeMovies": "Filmes", - "FolderTypeMusic": "Música", - "FolderTypeMusicVideos": "Videoclips", - "FolderTypeTvShows": "Programas TV", "Friday": "Sexta", "Fullscreen": "Ecrã inteiro", "GuideProviderSelectListings": "Selecionar Listas", @@ -217,9 +212,7 @@ "LabelAirsBeforeSeason": "Estreou antes da temporada:", "LabelAlbum": "Álbum:", "LabelAlbumArtMaxHeight": "Altura máxima da capa do álbum:", - "LabelAlbumArtMaxHeightHelp": "Resolução máxima da capa do álbum exposta via upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Largura máxima da capa do álbum:", - "LabelAlbumArtMaxWidthHelp": "Resolução máxima da capa do álbum exposta via upnp:albumArtURI.", "LabelAlbumArtPN": "PN da capa do álbum:", "LabelAlbumArtists": "Artistas do Álbum:", "LabelAppName": "Nome da aplicação", @@ -298,9 +291,7 @@ "LabelHttpsPort": "Número do porto HTTPS local:", "LabelHttpsPortHelp": "Número do porto TCP em que o servidor HTTPS do Jellyfin ficará à escuta.", "LabelIconMaxHeight": "Altura máxima do ícone:", - "LabelIconMaxHeightHelp": "Resolução máxima do ícone que é exposto via upnp:icon.", "LabelIconMaxWidth": "Largura máxima do ícone:", - "LabelIconMaxWidthHelp": "Resolução máxima do ícone que é exposto via upnp:icon.", "LabelIdentificationFieldHelp": "Uma substring ou expressão regex que não diferencia maiúscula de minúsculas.", "LabelImageType": "Tipo de imagem:", "LabelImportOnlyFavoriteChannels": "Restringir a canais marcados como favoritos", @@ -521,9 +512,6 @@ "OptionPlainVideoItemsHelp": "Se ativado, todos os vídeos são representados no DIDL como \"object.item.videoItem\" ao invés de um tipo mais específico como, por exemplo, \"object.item.videoItem.movie\".", "OptionPlayCount": "N.º de Visualizações", "OptionPremiereDate": "Data de Estreia", - "OptionProfilePhoto": "Fotografia", - "OptionProfileVideo": "Vídeo", - "OptionProfileVideoAudio": "Áudio do Vídeo", "OptionReleaseDate": "Data de Lançamento", "OptionReportByteRangeSeekingWhenTranscoding": "Reportar que o servidor suporta busca de byte quando transcodificar", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Isto é necessário para alguns dispositivos que não procuram o tempo muito bem.", @@ -724,7 +712,6 @@ "Genre": "Género", "General": "Geral", "FormatValue": "Formato: {0}", - "FolderTypeUnset": "Conteúdo Misto", "Filters": "Filtros", "File": "Ficheiro", "Favorite": "Favoritos", diff --git a/src/strings/pt.json b/src/strings/pt.json index 90aa1a5fd0..dd3dc6e960 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -157,9 +157,6 @@ "OptionReleaseDate": "Data de Lançamento", "OptionProtocolHttp": "HTTP", "OptionProtocolHls": "Emissão HTTP em direto", - "OptionProfileVideoAudio": "Áudio do Vídeo", - "OptionProfileVideo": "Vídeo", - "OptionProfilePhoto": "Fotografia", "OptionPremiereDate": "Data de Estreia", "OptionPlayCount": "N.º de Visualizações", "OptionPlainVideoItemsHelp": "Quando activado, todos os vídeos são representados no DIDL como \"object.item.videoItem\" ao invés de um tipo mais específico como, por exemplo, \"object.item.videoItem.movie\".", @@ -282,9 +279,7 @@ "LabelImportOnlyFavoriteChannels": "Restringir a canais marcados como favoritos", "LabelImageType": "Tipo de imagem:", "LabelIdentificationFieldHelp": "Uma subcadeia ou expressão regex que não diferencia maiúscula de minúsculas.", - "LabelIconMaxWidthHelp": "Resolução máxima do ícone que é exposto via upnp:icon.", "LabelIconMaxWidth": "Largura máxima do ícone:", - "LabelIconMaxHeightHelp": "Resolução máxima do ícone que é exposto via upnp:icon.", "LabelIconMaxHeight": "Altura máxima do ícone:", "LabelHttpsPortHelp": "Número da porta TCP em que o servidor HTTPS do Jellyfin ficará à escuta.", "LabelHttpsPort": "Número da porta HTTPS local:", @@ -406,9 +401,7 @@ "LabelAllowHWTranscoding": "Permitir transcodificação por hardware", "LabelAlbumArtists": "Artistas do Álbum:", "LabelAlbumArtPN": "PN da capa do álbum:", - "LabelAlbumArtMaxWidthHelp": "Resolução máxima da capa do álbum exposta via upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Largura máxima da capa do álbum:", - "LabelAlbumArtMaxHeightHelp": "Resolução máxima da capa do álbum exposta via upnp:albumArtURI.", "LabelAlbumArtMaxHeight": "Altura máxima da capa do álbum:", "LabelAlbumArtHelp": "PN utilizado para a capa do álbum no atributo dlna:profileID/upnp:albumArtURI. Alguns dispositivos requerem um valor específico, independentemente do tamanho da imagem.", "LabelAlbum": "Álbum:", @@ -722,7 +715,6 @@ "HeaderDetectMyDevices": "Detectar os Meus Dispositivos", "HeaderDeleteProvider": "Apagar Provedor", "HeaderDeleteItems": "Remover Itens", - "FolderTypeBooks": "Livros", "Filters": "Filtros", "FileReadError": "Ocorreu um erro ao ler o ficheiro.", "FileReadCancelled": "A leitura do ficheiro foi cancelada.", @@ -1020,11 +1012,6 @@ "Friday": "Sexta", "FormatValue": "Formato: {0}", "Folders": "Directórios", - "FolderTypeUnset": "Conteúdo Misto", - "FolderTypeTvShows": "Programas TV", - "FolderTypeMusicVideos": "Videoclips", - "FolderTypeMusic": "Música", - "FolderTypeMovies": "Filmes", "OptionIgnoreTranscodeByteRangeRequests": "Ignorar requisições de extensão do byte de transcodificação", "OptionEnableAccessToAllChannels": "Permitir acesso a todos os canais", "FetchingData": "Buscando Dados Adicionais", diff --git a/src/strings/ro.json b/src/strings/ro.json index 19834ac399..f0bc6f47b8 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -17,11 +17,6 @@ "DeviceAccessHelp": "Aceasta se aplică numai pentru dispozitive care pot fi identificate în mod unic și nu va împiedica accesul din navigatorul de internet. Filtrând accesul dispozitivelor utilizatorului va împiedica utilizarea noilor dispozitive până când acestea nu vor fi aprobate aici.", "Ended": "S-a sfârșit", "ExtractChapterImagesHelp": "Extragerea de imagini de capitol va permite aplicației client Jellyfin sa afișeze un meniu grafic de selecție a scenelor. Procesul poate fi lent, intensiv pentru procesor și poate necesita câțiva gigaocteți de spațiu de stocare. Acesta rulează atunci când fișiere media noi sunt detectate, și de asemenea ca o sarcină programată nocturnă. Programarea poate fi configurată în zona de activități programate. Nu este recomandat ca această sarcină să ruleze în timpul perioadelor de utilizare intensă de către utilizatori.", - "FolderTypeBooks": "Cărți", - "FolderTypeMovies": "Filme", - "FolderTypeMusic": "Muzică", - "FolderTypeMusicVideos": "Videoclipuri Muzicale", - "FolderTypeTvShows": "Seriale TV", "Friday": "Vineri", "HeaderActiveRecordings": "Înregistrări active", "HeaderContinueWatching": "Vizionează în continuare", @@ -306,7 +301,6 @@ "File": "Fișier", "FileReadError": "A apărut o eroare la citirea fișierului.", "Filters": "Filtre", - "FolderTypeUnset": "Conținut Mix", "Fullscreen": "Ecran Complet", "General": "General", "GuideProviderLogin": "Autentificare", @@ -656,9 +650,7 @@ "LabelImageType": "Tipul imaginii:", "LabelImageFetchersHelp": "Activați și clasificați colectorul de imagini preferat în ordinea priorității.", "LabelIdentificationFieldHelp": "Un substring cu majuscule, minuscule sau expresie regex.", - "LabelIconMaxWidthHelp": "Rezoluția maximă a pictogramelor expuse via upnp:icon.", "LabelIconMaxWidth": "Lățimea maximă a pictogramei:", - "LabelIconMaxHeightHelp": "Rezoluția maximă a pictogramelor expuse via upnp:icon.", "LabelIconMaxHeight": "Înălțimea maximă a pictogramei:", "LabelHttpsPortHelp": "Portul TCP pentru serverul HTTPS.", "LabelHttpsPort": "Portul local HTTPS:", @@ -765,9 +757,7 @@ "LabelAllowHWTranscoding": "Permite transcodare hardware", "LabelAlbumArtists": "Artiști album:", "LabelAlbumArtPN": "Artă album PN:", - "LabelAlbumArtMaxWidthHelp": "Rezoluție maximă a artei albumului expusă via upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Artă album lățime maximă:", - "LabelAlbumArtMaxHeightHelp": "Rezoluție maximă a artei albumului expusă via upnp:albumArtURI.", "LabelAlbumArtMaxHeight": "Artă album înălțime maximă:", "LabelAlbumArtHelp": "PN utilizat pentru art albumelor, în atributul dlna:profileID pe upnp:albumArtURI. Unele dispozitive necesită o valoare specifică, indiferent de dimensiunea imaginii.", "LabelAlbum": "Album:", @@ -1135,9 +1125,6 @@ "OptionRandom": "Aleator", "OptionProtocolHttp": "HTTP", "OptionProtocolHls": "Transmitere în direct HTTP", - "OptionProfileVideoAudio": "Audioul videoclipului", - "OptionProfileVideo": "Video", - "OptionProfilePhoto": "Fotografie", "OptionPlainVideoItemsHelp": "Toate videoclipurile sunt reprezentate în DIDL ca „object.item.videoItem” în loc de un tip mai specific, cum ar fi „object.item.videoItem.movie”.", "OptionPlainVideoItems": "Afișați toate videoclipurile ca elemente video simple", "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”.", diff --git a/src/strings/ru.json b/src/strings/ru.json index e005e26c83..828bdcacfd 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -209,12 +209,6 @@ "FileReadCancelled": "Чтение файла было отменено.", "FileReadError": "Произошла ошибка при чтении файла.", "Filters": "Фильтры", - "FolderTypeBooks": "Книги", - "FolderTypeMovies": "Фильмы", - "FolderTypeMusic": "Музыка", - "FolderTypeMusicVideos": "Музыкальные видео", - "FolderTypeTvShows": "Сериалы", - "FolderTypeUnset": "Разнородное содержание", "Folders": "Папки", "FormatValue": "Формат: {0}", "Friday": "пятница", @@ -438,9 +432,7 @@ "LabelAlbum": "Альбом:", "LabelAlbumArtHelp": "PN используемое для альбомных обложек, внутри атрибута dlna:profileID при upnp:albumArtURI. Некоторым устройствам требуется специфическое значение, вне зависимости от размера изображения.", "LabelAlbumArtMaxHeight": "Макс. высота облома альбома:", - "LabelAlbumArtMaxHeightHelp": "Максимальное разрешение обложек альбома, представляемых с помощью upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Макс. ширина обложки альбома:", - "LabelAlbumArtMaxWidthHelp": "Максимальное разрешение альбомных обложек представляемых с помощью upnp:albumArtURI.", "LabelAlbumArtPN": "PN альбомной обложки:", "LabelAlbumArtists": "Исполнители альбома:", "LabelAllowHWTranscoding": "Разрешить аппаратную перекодировку", @@ -547,9 +539,7 @@ "LabelHttpsPort": "Номер локального HTTPS-порта:", "LabelHttpsPortHelp": "Номер TCP-порта для HTTPS-сервера.", "LabelIconMaxHeight": "Макс. высота значка:", - "LabelIconMaxHeightHelp": "Максимальное разрешение значков представляемых с помощью upnp:icon.", "LabelIconMaxWidth": "Макс. ширина значка:", - "LabelIconMaxWidthHelp": "Максимальное разрешение значков представляемых с помощью upnp:icon.", "LabelIdentificationFieldHelp": "Подстрока без учёта регистра, либо регулярное выражение.", "LabelImageFetchersHelp": "Включите и ранжируйте предпочитаемые отборщики изображений в порядке приоритета.", "LabelImageType": "Тип изображения:", @@ -942,9 +932,6 @@ "OptionPlainVideoItemsHelp": "Все видео описываются в DIDL как «object.item.videoItem», вместо более специфичного типа, например, «object.item.videoItem.movie».", "OptionPlayCount": "Кол. воспроизведений", "OptionPremiereDate": "Дата премьеры", - "OptionProfilePhoto": "Фото", - "OptionProfileVideo": "Видео", - "OptionProfileVideoAudio": "Видео Аудио", "OptionProtocolHls": "Прямая трансляция по HTTP (HLS)", "OptionProtocolHttp": "HTTP", "OptionRegex": "Рег. выражение", diff --git a/src/strings/sk.json b/src/strings/sk.json index bc688de054..69e57a9569 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -122,12 +122,6 @@ "FileNotFound": "Súbor nebol nájdený.", "FileReadError": "Pri čítaní súboru nastala chyba.", "Filters": "Filtre", - "FolderTypeBooks": "Knihy", - "FolderTypeMovies": "Filmy", - "FolderTypeMusic": "Hudba", - "FolderTypeMusicVideos": "Hudobné videá", - "FolderTypeTvShows": "Seriály", - "FolderTypeUnset": "Zmiešaný obsah", "FormatValue": "Formát: {0}", "Friday": "Piatok", "Fullscreen": "Celá obrazovka", @@ -557,7 +551,6 @@ "OptionPlainVideoItems": "Zobraziť všetky videá ako obyčajné video položky", "OptionPlayCount": "Počet prehraní", "OptionPremiereDate": "Dátum premiéry", - "OptionProfilePhoto": "Fotografie", "OptionProtocolHttp": "HTTP", "OptionReleaseDate": "Dátum vydania", "OptionResumable": "Pozastaviteľný", @@ -812,7 +805,6 @@ "OptionIsHD": "HD", "OptionIsSD": "SD", "OptionMax": "Max", - "OptionProfileVideo": "Video", "OptionProtocolHls": "Živý HTTP stream", "OptionRequirePerfectSubtitleMatch": "Sťahovať iba titulky, ktoré perfektne sedia k mojim video súborom", "Rate": "Hodnotenie", @@ -1051,7 +1043,6 @@ "OptionReportByteRangeSeekingWhenTranscodingHelp": "Toto je vyžadované pre niektoré zariadenia, ktoré nevedia moc dobre časovo pretáčať.", "OptionReportByteRangeSeekingWhenTranscoding": "Hlásiť, že server podporuje bajtové pretáčanie pri transkódovaní", "OptionRandom": "Náhodne", - "OptionProfileVideoAudio": "Video Zvuk", "OptionPlainVideoItemsHelp": "Všetky videá sú reprezentované v DIDL ako \"object.item.videoItem\" namiesto viac špecifického typu, ako napríklad \"object.item.videoItem.movie\".", "OptionPlainStorageFoldersHelp": "Všetky priečinky sú reprezentované v DIDL ako \"object.container.storageFolder\" namiesto viac špecifického typu, ako napríklad \"object.container.person.musicArtist\".", "OptionPlainStorageFolders": "Zobraziť všetky priečinky ako jednoduché priečinky pre ukladanie", @@ -1215,8 +1206,6 @@ "LabelInternetQuality": "Internetová kvalita:", "LabelImageFetchersHelp": "Povolí a ohodnotí vaše preferované sťahovače obrázkov podľa priority.", "LabelIdentificationFieldHelp": "Podreťazec citlivý na veľkosť písmen alebo na regulárne výrazy.", - "LabelIconMaxWidthHelp": "Maximálne rozlíšenie ikon pomocou prostredníctvom upnp:icon.", - "LabelIconMaxHeightHelp": "Maximálne rozlíšenie ikon pomocou prostredníctvom upnp:icon.", "LabelHttpsPortHelp": "Číslo portu TCP serveru HTTPS.", "LabelHomeNetworkQuality": "Kvalita na domácej sieti:", "LabelEncoderPreset": "Prednastavené H264 enkódovanie:", @@ -1238,8 +1227,6 @@ "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.", "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.", "LabelAlbumArtHelp": "PN používa obrázok albumu, vrámci dlna:profileID atribútu upnp:albumArtURI. Niektoré zariadenia vyžadujú špecifickú hodnotu, bez ohľadu na veľkosť obrázku.", "HeaderDirectPlayProfileHelp": "Pridať profil priameho prehrávania pre definovanie, ktorý formát môže zariadenie natívne zvládnuť.", "LabelInNetworkSignInWithEasyPasswordHelp": "Použite jednoduchý PIN kód na prihlásenie v klientoch vo vnútri lokálnej siete. Vaše bežné heslo bude potrebné len pokiaľ ste mimo domova. Pokiaľ je PIN kód ponechaný prázdny, tak nebude potrebovať heslo vo vašej domácej sieti.", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index eae23136b9..9bd38a5d74 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -2,7 +2,6 @@ "ButtonAddUser": "Dodaj Uporabnika", "ButtonQuickStartGuide": "Vodnik za hiter zacetek", "ButtonSignOut": "Odjava", - "FolderTypeTvShows": "TV", "HeaderAddToCollection": "Dodaj v Zbirko", "HeaderEasyPinCode": "Enostavna Pin koda", "HeaderFrequentlyPlayed": "Pogosto Predvajano", @@ -353,11 +352,6 @@ "Fullscreen": "Celoten zaslon", "Friday": "Petek", "FormatValue": "Format: {0}", - "FolderTypeUnset": "Mešane vsebine", - "FolderTypeMusicVideos": "Videospoti", - "FolderTypeMusic": "Glasba", - "FolderTypeMovies": "Filmi", - "FolderTypeBooks": "Knjige", "Filters": "Filtri", "FileReadError": "Prišlo je do napake pri branju datoteke.", "FileReadCancelled": "Branje datoteke je bilo preklicano.", @@ -459,11 +453,9 @@ "LabelAbortedByServerShutdown": "(Prekinjeno zaradi zaustavitve strežnika)", "LabelAirsBeforeEpisode": "Predvajanje pred epizodo:", "LabelAlbumArtMaxWidth": "Največja širina slike albuma:", - "LabelAlbumArtMaxWidthHelp": "Največja ločljivost slike albuma dostopna preko UPnP:albumArtURI.", "LabelAlbumArtPN": "Slika albuma PN:", "LabelAlbum": "Album:", "LabelAlbumArtMaxHeight": "Največja višina slike albuma:", - "LabelAlbumArtMaxHeightHelp": "Največja ločljivost slike albuma dostopna preko UPnP:albumArtURI.", "LabelAudioBitDepth": "Bitna globina zvoka:", "LabelAllowedRemoteAddresses": "Filter oddaljenih IP naslovov:", "LabelAllowedRemoteAddressesMode": "Način filtra oddaljenih IP naslovov:", @@ -590,8 +582,6 @@ "LabelGroupMoviesIntoCollectionsHelp": "Pri prikazovanju seznama filmov bodo filmi iz iste zbirke prikazani kot en združen element.", "LabelH264Crf": "H264 kodiranje CRF:", "LabelIconMaxHeight": "Največja višina ikone:", - "LabelIconMaxHeightHelp": "Največja resolucija ikon dostopnih prek upnp:icon.", - "LabelIconMaxWidthHelp": "Največja resolucija ikon dostopnih prek upnp:icon.", "LabelIdentificationFieldHelp": "Za velike ali male črke neobčutljiv podizraz ali regex izraz.", "LabelImageFetchersHelp": "Omogoči in razvrsti vire za pridobivanje slik po prioriteti.", "LabelImageType": "Tip slike:", @@ -900,7 +890,6 @@ "LabelScheduledTaskLastRan": "Nazadnje zagnano {0}. Čas trajanja {1}.", "OptionRandom": "Naključno", "OptionProtocolHttp": "HTTP", - "OptionProfilePhoto": "Slika", "OptionPremiereDate": "Datum premiere", "OptionOnInterval": "V intervalu", "OptionNew": "Novo…", @@ -1159,7 +1148,6 @@ "RememberMe": "Zapomni si me", "RecommendationDirectedBy": "Režija", "Person": "Oseba", - "OptionProfileVideo": "Video", "OptionMax": "Maks.", "OptionHasThemeSong": "Uvodna špica", "NextUp": "Sledi", @@ -1190,7 +1178,6 @@ "TabCodecs": "Kodeki", "OptionRegex": "Regex", "OptionProtocolHls": "HTTP pretakanje v živo", - "OptionProfileVideoAudio": "Video zvok", "ThemeSongs": "Glavne pesmi", "TabStreaming": "Pretakanje", "TabServer": "Strežnik", diff --git a/src/strings/sv.json b/src/strings/sv.json index aff41b96e6..e6dbb2409e 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -185,12 +185,6 @@ "FileReadCancelled": "Inläsningen av filen har avbrutits.", "FileReadError": "Ett fel inträffade vid inläsningen av filen.", "Filters": "Filter", - "FolderTypeBooks": "Böcker", - "FolderTypeMovies": "Filmer", - "FolderTypeMusic": "Musik", - "FolderTypeMusicVideos": "Musikvideor", - "FolderTypeTvShows": "TV Serier", - "FolderTypeUnset": "Blandat Innehåll", "Folders": "Mappar", "Friday": "Fredag", "Fullscreen": "Fullskärm", @@ -395,9 +389,7 @@ "LabelAirsBeforeSeason": "Sänds före säsong:", "LabelAlbumArtHelp": "PN som används för omslagsbilder, inom attributet dlna:profileID hos upnp:albumArtURI. Vissa enheter kräver ett specifikt värde, oavsett bildens storlek.", "LabelAlbumArtMaxHeight": "Skivomslagens maxhöjd:", - "LabelAlbumArtMaxHeightHelp": "Högsta upplösning hos omslagsbilder presenterade via upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Maximal bredd för omslagsbilder:", - "LabelAlbumArtMaxWidthHelp": "Högsta upplösning hos omslagsbilder presenterade via upnp:albumArtURI.", "LabelAlbumArtPN": "PN för omslagsbilder:", "LabelAlbumArtists": "Albumartist:", "LabelAllowHWTranscoding": "Tillåt hårdvaruomkodning", @@ -501,9 +493,7 @@ "LabelHttpsPort": "Lokalt portnummer för HTTPS:", "LabelHttpsPortHelp": "Den lokala tcp-port som Jellyfin Server ska lyssna på https.", "LabelIconMaxHeight": "Maxhöjd på ikoner:", - "LabelIconMaxHeightHelp": "Högsta upplösning hos ikoner som visas via upnp:icon.", "LabelIconMaxWidth": "Maxbredd på ikoner:", - "LabelIconMaxWidthHelp": "Högsta upplösning på ikoner som visas via upnp:icon.", "LabelIdentificationFieldHelp": "En skiftlägesokänslig delsträng eller regex-uttryck.", "LabelImageFetchersHelp": "Aktivera och rangordna dina hämtare baserat på prioritet.", "LabelImageType": "Typ av bild:", @@ -874,8 +864,6 @@ "OptionPlainVideoItemsHelp": "Om aktiverad representeras alla videor i DIDL som \"object.item.videoItem\" i stället för en mera specifik typ, t ex \"object.item.videoItem.movie\".", "OptionPlayCount": "Antal visningar", "OptionPremiereDate": "Premiärdatum", - "OptionProfilePhoto": "Foto", - "OptionProfileVideoAudio": "Videoljudspår", "OptionProtocolHls": "Live-strömning via Http", "OptionReleaseDate": "Premiärdatum", "OptionReportByteRangeSeekingWhenTranscoding": "Meddela att servern stödjer bytebaserad sökning vid omkodning", @@ -1205,7 +1193,6 @@ "OptionRegex": "Regex", "OptionRandom": "Slumpmässig", "OptionProtocolHttp": "HTTP", - "OptionProfileVideo": "Video", "OptionMax": "Max", "OptionLoginAttemptsBeforeLockoutHelp": "Ett värde av noll menas att använda standard av tre försök för normala användare och fem för administratörer. -1 kommer att stänga av denna funktion.", "OptionLoginAttemptsBeforeLockout": "Avgör hur många felaktiga inloggnings försök som kan utföras innan kontot låses.", diff --git a/src/strings/ta.json b/src/strings/ta.json index 920265f15b..6f7a8f060d 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -288,12 +288,6 @@ "Fullscreen": "முழு திரை", "Friday": "வெள்ளி", "FormatValue": "வடிவம்: {0}", - "FolderTypeUnset": "கலப்பு உள்ளடக்கம்", - "FolderTypeTvShows": "தொலைக்காட்சி நிகழ்ச்சிகள்", - "FolderTypeMusicVideos": "இசை கானொளி", - "FolderTypeMusic": "இசை", - "FolderTypeMovies": "திரைப்படங்கள்", - "FolderTypeBooks": "புத்தகங்கள்", "Filters": "வடிப்பான்கள்", "FileReadError": "கோப்பைப் படிக்கும்போது பிழை ஏற்பட்டது.", "FileReadCancelled": "படித்த கோப்பு ரத்து செய்யப்பட்டது.", @@ -506,9 +500,7 @@ "LabelAllowHWTranscoding": "வன்பொருள் டிரான்ஸ்கோடிங்கை அனுமதிக்கவும்", "LabelAlbumArtists": "ஆல்பம் கலைஞர்கள்:", "LabelAlbumArtPN": "ஆல்பம் படம் PN:", - "LabelAlbumArtMaxWidthHelp": "ஆல்பம் படத்தின் அதிகபட்ச தெளிவுத்திறன் upnp வழியாக வெளிப்படுத்தப்படுகிறது: albumArtURI.", "LabelAlbumArtMaxWidth": "ஆல்பம் படம் அதிகபட்ச அகலம்:", - "LabelAlbumArtMaxHeightHelp": "ஆல்பம் படத்தின் அதிகபட்ச தெளிவுத்திறன் upnp வழியாக வெளிப்படுத்தப்படுகிறது: albumArtURI.", "LabelAlbumArtMaxHeight": "ஆல்பம் படம் அதிகபட்ச உயரம்:", "LabelAlbumArtHelp": "ஆல்பம் கலைக்கு PN பயன்படுத்தப்படுகிறது, dlna: profileID பண்புக்கூறு upnp: albumArtURI. சில சாதனங்களுக்கு படத்தின் அளவைப் பொருட்படுத்தாமல் ஒரு குறிப்பிட்ட மதிப்பு தேவைப்படுகிறது.", "LabelAlbum": "ஆல்பம்:", @@ -669,9 +661,7 @@ "LabelImageType": "பட வகை:", "LabelImageFetchersHelp": "முன்னுரிமைக்கு ஏற்ப உங்களுக்கு விருப்பமான பட பெறுபவர்களை இயக்கவும் தரவரிசைப்படுத்தவும்.", "LabelIdentificationFieldHelp": "ஒரு வழக்கு-உணர்வற்ற அடி மூலக்கூறு அல்லது ரீஜெக்ஸ் வெளிப்பாடு.", - "LabelIconMaxWidthHelp": "Upnp: ஐகான் வழியாக வெளிப்படும் ஐகான்களின் அதிகபட்ச தீர்மானம்.", "LabelIconMaxWidth": "ஐகான் அதிகபட்ச அகலம்:", - "LabelIconMaxHeightHelp": "Upnp: ஐகான் வழியாக வெளிப்படும் ஐகான்களின் அதிகபட்ச தீர்மானம்.", "LabelIconMaxHeight": "ஐகான் அதிகபட்ச உயரம்:", "LabelHttpsPortHelp": "HTTPS சேவையகத்திற்கான TCP போர்ட் எண்.", "LabelHttpsPort": "உள்ளூர் HTTPS போர்ட் எண்:", @@ -1109,9 +1099,6 @@ "OptionRandom": "சீரற்ற", "OptionProtocolHttp": "HTTP", "OptionProtocolHls": "HTTP நேரடி ஒளிபரப்பு", - "OptionProfileVideoAudio": "வீடியோ ஆடியோ", - "OptionProfileVideo": "காணொளி", - "OptionProfilePhoto": "புகைப்படம்", "OptionPremiereDate": "பிரீமியர் தேதி", "OptionPlayCount": "ப்ளே கவுண்ட்", "OptionPlainVideoItemsHelp": "எல்லா வீடியோக்களும் டிஐடிஎல்லில் \"object.item.videoItem\" என குறிப்பிடப்படுகின்றன, அதாவது \"object.item.videoItem.movie\" போன்ற ஒரு குறிப்பிட்ட வகைக்கு பதிலாக.", diff --git a/src/strings/tr.json b/src/strings/tr.json index bcac3e6109..f480257f69 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -33,11 +33,6 @@ "FileNotFound": "Dosya Bulunamadı.", "FileReadCancelled": "Dosya Okuma İptal Edildi.", "FileReadError": "Dosya okunurken bir hata oluştu.", - "FolderTypeBooks": "Kitaplar", - "FolderTypeMovies": "Filmler", - "FolderTypeMusic": "Müzik", - "FolderTypeMusicVideos": "Müzik Videoları", - "FolderTypeTvShows": "TV", "Friday": "Cuma", "HeaderActiveRecordings": "Aktif Kayıtlar", "HeaderCodecProfile": "Codec Profili", @@ -126,9 +121,6 @@ "OptionImdbRating": "İMDb Reyting", "OptionLikes": "Beğenilenler", "OptionPlayCount": "Oynatma sayacı", - "OptionProfilePhoto": "Fotoğraf", - "OptionProfileVideo": "Vidyo", - "OptionProfileVideoAudio": "Video Sesi", "OptionReleaseDate": "Yayınlanma Tarihi", "OptionResumable": "Başlatılabilir", "OptionSpecialEpisode": "Özel", @@ -403,7 +395,6 @@ "General": "Genel", "Fullscreen": "Tam ekran", "FormatValue": "Biçim: {0}", - "FolderTypeUnset": "Karışık içerik", "Filters": "Filtreler", "File": "Dosya", "FetchingData": "Ek veri alınıyor", diff --git a/src/strings/uk.json b/src/strings/uk.json index 4d07b08a65..75bee799e4 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -7,10 +7,6 @@ "ButtonSignOut": "Вийти", "DeathDateValue": "Помер: {0}", "Favorite": "Улюблене", - "FolderTypeBooks": "Книги", - "FolderTypeMovies": "Фільми", - "FolderTypeMusic": "Музика", - "FolderTypeTvShows": "ТБ", "HeaderDeleteDevice": "Видалить пристрій", "HeaderLatestEpisodes": "Нещодавно переглянуті серії", "HeaderLatestMedia": "Нещодавно переглянуті", diff --git a/src/strings/vi.json b/src/strings/vi.json index 731c86bd2b..57333b5a3a 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -14,7 +14,6 @@ "FileNotFound": "Không tìm thấy tệp tin.", "FileReadCancelled": "Tệp tin đọc đã bị hủy.", "FileReadError": "Có một lỗi xảy ra khi đọc tệp tin này.", - "FolderTypeTvShows": "TV", "HeaderCustomDlnaProfiles": "Hồ sơ khách hàng", "HeaderFeatureAccess": "Truy cập tính năng", "HeaderFrequentlyPlayed": "Phát thường xuyên", @@ -309,11 +308,6 @@ "Friday": "Thứ Sáu", "FormatValue": "Định dạng: {0}", "Folders": "Thư mục", - "FolderTypeUnset": "Nội Dung Tổng Hợp", - "FolderTypeMusicVideos": "Video Âm Nhạc", - "FolderTypeMusic": "Nhạc", - "FolderTypeMovies": "Phim lẻ", - "FolderTypeBooks": "Sách", "Filters": "Bộ lọc", "File": "Tập tin", "FetchingData": "Đang tải thêm thông tin", @@ -507,9 +501,7 @@ "LabelAllowHWTranscoding": "Cho phép chuyển mã bằng phần cứng", "LabelAlbumArtists": "Nghệ sĩ album:", "LabelAlbumArtPN": "Bìa album PN:", - "LabelAlbumArtMaxWidthHelp": "Độ phân giải cao nhất của bìa album thông qua upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Chiều ngang lớn nhất của bìa album:", - "LabelAlbumArtMaxHeightHelp": "Độ phân giải cao nhất của bìa album thông qua upnp:albumArtURI.", "LabelAlbumArtMaxHeight": "Chiều cao lớn nhất của bìa album:", "LabelAlbumArtHelp": "PN được sử dụng cho bìa album, trong dlna:profileID thuộc tính upnp:albumArtURI. Một vài thiết bị phát cần một giá trị đặc biệt, không ảnh hưởng đến kích thước của hình ảnh.", "LabelAlbum": "Album:", @@ -642,9 +634,7 @@ "LabelImageType": "Loại hình ảnh:", "LabelImageFetchersHelp": "Kích hoạt và xếp hạng chương trình tải hình ảnh theo thứ tự ưu tiên.", "LabelIdentificationFieldHelp": "Một phần chuỗi không phân biệt viết hoa/thường hoặc regex expression.", - "LabelIconMaxWidthHelp": "Độ phân giải tối đa của biểu tượng hiển thị thông qua upnp:icon.", "LabelIconMaxWidth": "Chiều ngang tối đa của biểu tượng:", - "LabelIconMaxHeightHelp": "Độ phân giải tối đa của biểu tượng hiển thị thông qua upnp:icon.", "LabelIconMaxHeight": "Chiều cao tối đa của biểu tượng:", "LabelHttpsPortHelp": "TCP port mà máy chủ Jellyfin HTTPS nên kết nối vào.", "LabelHttpsPort": "HTTPS port trên máy chủ:", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index a824ee506b..75c8cb5a3e 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -188,12 +188,6 @@ "FileReadCancelled": "文件读取已被取消。", "FileReadError": "读取文件发生错误。", "Filters": "筛选", - "FolderTypeBooks": "有声读物", - "FolderTypeMovies": "电影", - "FolderTypeMusic": "音乐", - "FolderTypeMusicVideos": "MV", - "FolderTypeTvShows": "电视节目", - "FolderTypeUnset": "混合内容", "Folders": "文件夹", "FormatValue": "格式:{0}", "Friday": "星期五", @@ -398,9 +392,7 @@ "LabelAlbum": "专辑:", "LabelAlbumArtHelp": "PN 在 upnp:albumArtURI 里的 dlna:profileID 属性用于专辑封面。某些设备不管图像的尺寸大小,都会要求特定的值。", "LabelAlbumArtMaxHeight": "专辑封面最大高度:", - "LabelAlbumArtMaxHeightHelp": "通过UPnP显示的专辑封面超链接的最大分辨率。", "LabelAlbumArtMaxWidth": "专辑封面最大宽度:", - "LabelAlbumArtMaxWidthHelp": "通过UPnP显示的专辑封面超链接的最大分辨率。", "LabelAlbumArtPN": "专辑封面PN:", "LabelAlbumArtists": "专辑作家:", "LabelAllowHWTranscoding": "允许硬件转码", @@ -510,9 +502,7 @@ "LabelHttpsPort": "本地 HTTPS 端口号:", "LabelHttpsPortHelp": "HTTPS 服务器监听的 TCP 端口号。", "LabelIconMaxHeight": "图标最大高度:", - "LabelIconMaxHeightHelp": "通过UPnP显示的图标最大分辨率。", "LabelIconMaxWidth": "图标最大宽度:", - "LabelIconMaxWidthHelp": "通过UPnP显示的图标最大分辨率。", "LabelIdentificationFieldHelp": "不区分大小写的字符串或正则表达式。", "LabelImageFetchersHelp": "启用你首选的图片获取程序的优先级排序。", "LabelImageType": "图片类型:", @@ -900,9 +890,6 @@ "OptionPlainVideoItemsHelp": "所有视频在DIDL中显示为 \"object.item.videoItem\" ,而不是一个更具体的类型,如 \"object.item.videoItem.movie\" 。", "OptionPlayCount": "播放次数", "OptionPremiereDate": "首映日期", - "OptionProfilePhoto": "图片", - "OptionProfileVideo": "视频", - "OptionProfileVideoAudio": "视频音频", "OptionProtocolHls": "HTTP 直播串流", "OptionProtocolHttp": "HTTP", "OptionRegex": "正则表达式", diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index b286be00f2..eb1e4d6376 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -21,11 +21,6 @@ "Edit": "編輯", "EditSubtitles": "編輯字幕", "Ended": "完成", - "FolderTypeBooks": "書藉", - "FolderTypeMovies": "電影", - "FolderTypeMusic": "音樂", - "FolderTypeMusicVideos": "MV", - "FolderTypeTvShows": "電視節目", "Friday": "星期五", "HeaderActiveDevices": "生效裝置", "HeaderActiveRecordings": "正在錄影的節目", @@ -191,7 +186,6 @@ "OptionParentalRating": "家長評級", "OptionPlayCount": "播放次數", "OptionPremiereDate": "首映日期", - "OptionProfileVideo": "影片", "OptionReleaseDate": "發佈日期", "OptionResumable": "能夠恢復", "OptionSpecialEpisode": "特集", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 8c276c3711..bd702640c6 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -33,10 +33,6 @@ "File": "檔案", "FileNotFound": "未找到檔案。", "FileReadError": "在讀取檔案時發生錯誤。", - "FolderTypeMovies": "電影", - "FolderTypeMusic": "音樂", - "FolderTypeMusicVideos": "MV", - "FolderTypeTvShows": "TV", "Friday": "星期五", "GuideProviderLogin": "登入", "HeaderActiveRecordings": "正在錄影的節目", @@ -381,8 +377,6 @@ "Features": "功能", "FileReadCancelled": "檔案讀取已取消。", "Filters": "濾鏡", - "FolderTypeBooks": "書籍", - "FolderTypeUnset": "混合內容", "Folders": "資料夾", "FormatValue": "格式:{0}", "Fullscreen": "全螢幕", @@ -583,9 +577,7 @@ "LabelAlbum": "專輯:", "LabelAlbumArtHelp": "PN 在 upnp:albumArtURI 裡的 dlna:profileID 屬性用於專輯封面。某些設備不管圖像的尺寸大小,都會要求特定的值。", "LabelAlbumArtMaxHeight": "專輯封面最大高度:", - "LabelAlbumArtMaxHeightHelp": "通過 upnp:albumArtURI 顯示的專輯封面超連結的最大解析度。", "LabelAlbumArtMaxWidth": "專輯封面最大寬度:", - "LabelAlbumArtMaxWidthHelp": "通過 upnp:albumArtURI 顯示的專輯封面超連結的最大解析度。", "LabelAlbumArtPN": "專輯封面 PN :", "LabelAlbumArtists": "專輯作家:", "LabelAllowHWTranscoding": "允許硬體轉檔", @@ -644,7 +636,6 @@ "LabelBaseUrl": "根路徑:", "LabelIconMaxHeight": "圖示最高高度:", "LabelHttpsPortHelp": "HTTPS 伺服器的 TCP 埠。", - "LabelIconMaxHeightHelp": "通過 upnp:icon 的圖示最大解析度。", "CopyStreamURL": "複製串流連結", "MediaInfoDefault": "預設", "LabelDateAddedBehaviorHelp": "若原本就有中繼資料,將會優先使用。", @@ -767,8 +758,6 @@ "Off": "關閉", "OptionAdminUsers": "管理員", "OptionAllowRemoteControlOthers": "允許其他使用者遠端控制", - "OptionProfileVideo": "影片", - "OptionProfileVideoAudio": "影片與圖片", "OptionReleaseDate": "釋出日期", "OptionWeekends": "假日", "PlayNextEpisodeAutomatically": "自動播放下一集", @@ -791,7 +780,6 @@ "MessageConfirmRestart": "您確定要重新啟動 Jellyfin 嗎?", "Metadata": "中繼資料", "OptionAllUsers": "所有使用者", - "OptionProfilePhoto": "圖片", "OptionRegex": "正則表達式", "RecommendationBecauseYouWatched": "因為您看過 {0}", "RepeatMode": "重複模式", @@ -839,7 +827,6 @@ "LabelGroupMoviesIntoCollectionsHelp": "顯示電影清單時,屬於相同集合的電影將作為分組項目顯示。", "LabelEncoderPreset": "H264 解碼品質:", "LabelHardwareAccelerationType": "硬體加速:", - "LabelIconMaxWidthHelp": "通過 upnp:icon 的圖示最大解析度。", "LabelImportOnlyFavoriteChannels": "僅限收藏的頻道", "LabelInNetworkSignInWithEasyPassword": "啟用以簡易密碼進行區域網路登入", "LabelH264Crf": "H264 編碼 CRF:", From fe5ff12cf286cab7386707bd40c7827d8ba756b1 Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 2 Sep 2020 10:05:51 +0100 Subject: [PATCH 178/582] Apply Suggestions --- src/themes/appletv/theme.css | 2 +- src/themes/blueradiance/theme.css | 2 +- src/themes/dark/theme.css | 2 +- src/themes/light/theme.css | 2 +- src/themes/purplehaze/theme.css | 2 +- src/themes/wmc/theme.css | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 463065b849..3ea8fa9bce 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -62,7 +62,7 @@ html { background: #f0f0f0; } -@media (hover: hover) { +@media (hover: hover) and (pointer: fine) { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; background-color: rgba(0, 164, 220, 0.2); diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 1c13803034..ed4b62dddb 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -64,7 +64,7 @@ html { } } -@media (hover: hover) { +@media (hover: hover) and (pointer: fine) { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; background-color: rgba(0, 164, 220, 0.2); diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 15ab434a85..8bd4417f23 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -46,7 +46,7 @@ html { background-color: rgba(0, 0, 0, 0.86); } -@media (hover: hover) { +@media (hover: hover) and (pointer: fine) { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; background-color: rgba(0, 164, 220, 0.2); diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 766dd95359..48ceaaddae 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -61,7 +61,7 @@ html { color: #000; } -@media (hover: hover) { +@media (hover: hover) and (pointer: fine) { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; background-color: rgba(0, 164, 220, 0.2); diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 8fe9baae24..352e569eb5 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -59,7 +59,7 @@ html { } } -@media (hover: hover) { +@media (hover: hover) and (pointer: fine) { .paper-icon-button-light:hover:not(:disabled) { color: rgb(12, 232, 214); background-color: rgba(0, 164, 220, 0.2); diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 277421e144..e97bdc171b 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -62,7 +62,7 @@ html { background: rgba(17, 98, 164, 0.9); } -@media (hover: hover) { +@media (hover: hover) and (pointer: fine) { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; background-color: rgba(0, 164, 220, 0.2); From f45217337ab4cfa4b6155b868404e823cc7456e7 Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 2 Sep 2020 10:56:03 +0100 Subject: [PATCH 179/582] Remove message Appearing when reloading after changing user settings --- src/controllers/user/display/index.js | 10 ++-------- src/controllers/user/home/index.js | 10 ++-------- src/controllers/user/playback/index.js | 10 ++-------- src/controllers/user/subtitles/index.js | 10 ++-------- 4 files changed, 8 insertions(+), 32 deletions(-) diff --git a/src/controllers/user/display/index.js b/src/controllers/user/display/index.js index a400c50ccf..54f71ad571 100644 --- a/src/controllers/user/display/index.js +++ b/src/controllers/user/display/index.js @@ -8,19 +8,13 @@ import autoFocuser from 'autoFocuser'; const UserSettings = userSettings.UserSettings; export default function (view, params) { - function onBeforeUnload(e) { - if (hasChanges) { - e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?'; - } - } - let settingsInstance; let hasChanges; + const userId = params.userId || ApiClient.getCurrentUserId(); const currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings(); - view.addEventListener('viewshow', function () { - window.addEventListener('beforeunload', onBeforeUnload); + view.addEventListener('viewshow', function () { if (settingsInstance) { settingsInstance.loadData(); } else { diff --git a/src/controllers/user/home/index.js b/src/controllers/user/home/index.js index f811aa52b9..539365ff97 100644 --- a/src/controllers/user/home/index.js +++ b/src/controllers/user/home/index.js @@ -9,19 +9,13 @@ import 'listViewStyle'; const UserSettings = userSettings.UserSettings; export default function (view, params) { - function onBeforeUnload(e) { - if (hasChanges) { - e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?'; - } - } - let homescreenSettingsInstance; let hasChanges; + const userId = params.userId || ApiClient.getCurrentUserId(); const currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings(); - view.addEventListener('viewshow', function () { - window.addEventListener('beforeunload', onBeforeUnload); + view.addEventListener('viewshow', function () { if (homescreenSettingsInstance) { homescreenSettingsInstance.loadData(); } else { diff --git a/src/controllers/user/playback/index.js b/src/controllers/user/playback/index.js index 16c50a1980..34a5ae0b1d 100644 --- a/src/controllers/user/playback/index.js +++ b/src/controllers/user/playback/index.js @@ -9,19 +9,13 @@ import 'listViewStyle'; const UserSettings = userSettings.UserSettings; export default function (view, params) { - function onBeforeUnload(e) { - if (hasChanges) { - e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?'; - } - } - let settingsInstance; let hasChanges; + const userId = params.userId || ApiClient.getCurrentUserId(); const currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings(); - view.addEventListener('viewshow', function () { - window.addEventListener('beforeunload', onBeforeUnload); + view.addEventListener('viewshow', function () { if (settingsInstance) { settingsInstance.loadData(); } else { diff --git a/src/controllers/user/subtitles/index.js b/src/controllers/user/subtitles/index.js index 82f5270a4e..efa2f1bead 100644 --- a/src/controllers/user/subtitles/index.js +++ b/src/controllers/user/subtitles/index.js @@ -8,19 +8,13 @@ import autoFocuser from 'autoFocuser'; const UserSettings = userSettings.UserSettings; export default function (view, params) { - function onBeforeUnload(e) { - if (hasChanges) { - e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?'; - } - } - let subtitleSettingsInstance; let hasChanges; + const userId = params.userId || ApiClient.getCurrentUserId(); const currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings(); - view.addEventListener('viewshow', function () { - window.addEventListener('beforeunload', onBeforeUnload); + view.addEventListener('viewshow', function () { if (subtitleSettingsInstance) { subtitleSettingsInstance.loadData(); } else { From f0bab2d3aae3dbf65630658e2c1997413e4500fd Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2020 10:53:08 +0000 Subject: [PATCH 180/582] Bump @babel/eslint-parser from 7.11.4 to 7.11.5 Bumps [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) from 7.11.4 to 7.11.5. - [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.5/eslint/babel-eslint-parser) 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 8fcc233578..350923f2c1 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "GPL-2.0-or-later", "devDependencies": { "@babel/core": "^7.11.5", - "@babel/eslint-parser": "^7.11.4", + "@babel/eslint-parser": "^7.11.5", "@babel/eslint-plugin": "^7.11.3", "@babel/plugin-proposal-class-properties": "^7.10.1", "@babel/plugin-proposal-private-methods": "^7.10.1", diff --git a/yarn.lock b/yarn.lock index 0ea2a07b9f..11d6f90627 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,10 +40,10 @@ semver "^5.4.1" source-map "^0.6.1" -"@babel/eslint-parser@^7.11.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.11.4.tgz#f79bac69088097a8418f5c67fc462c89a72c2f48" - integrity sha512-syIzsqEUvmc6WEYbLqrvBODCM1wMo3SQ4h4G9gtCcQctv1VUlA5davRAWHFm7ncQlxcJs4I7kaflsnAP8iA8Aw== +"@babel/eslint-parser@^7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.11.5.tgz#398192b8d1cd3678efb709f5ab09d9aa2a2218fd" + integrity sha512-DZ3maD3ciwRg1pOzEpJ1outlV1DA/A8XHDQoyL69fC3RIJMlMq1UPudgfRkW0YFqmQPR6OPvu8chaT7Yq2Mm8A== dependencies: eslint-scope "5.1.0" eslint-visitor-keys "^1.3.0" From ff2210eabbbd88f7f185d7c55809260b10c4b7f6 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2020 11:16:36 +0000 Subject: [PATCH 181/582] Bump @babel/polyfill from 7.10.4 to 7.11.5 Bumps [@babel/polyfill](https://github.com/babel/babel/tree/HEAD/packages/babel-polyfill) from 7.10.4 to 7.11.5. - [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.5/packages/babel-polyfill) 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 41fcce6638..1841f75cb8 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "@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/polyfill": "^7.11.5", "@babel/preset-env": "^7.11.5", "autoprefixer": "^9.8.6", "babel-loader": "^8.0.6", diff --git a/yarn.lock b/yarn.lock index ab3073dc48..ea78374d35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -729,10 +729,10 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/polyfill@^7.8.7": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.10.4.tgz#915e5bfe61490ac0199008e35ca9d7d151a8e45a" - integrity sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg== +"@babel/polyfill@^7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.11.5.tgz#df550b2ec53abbc2ed599367ec59e64c7a707bb5" + integrity sha512-FunXnE0Sgpd61pKSj2OSOs1D44rKTD3pGOfGilZ6LGrrIH0QEtJlTjqOqdF8Bs98JmjfGhni2BBkTfv9KcKJ9g== dependencies: core-js "^2.6.5" regenerator-runtime "^0.13.4" From 43f9fda29f4e7efa23afbf50271ac5633c3f774f Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 2 Sep 2020 12:18:49 +0100 Subject: [PATCH 182/582] Update dependabot to weekly --- .dependabot/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.dependabot/config.yml b/.dependabot/config.yml index 4ee827471a..02dfd18aac 100644 --- a/.dependabot/config.yml +++ b/.dependabot/config.yml @@ -2,4 +2,4 @@ version: 1 update_configs: - package_manager: "javascript" directory: "/" - update_schedule: "live" + update_schedule: "weekly" From b7d1d0c7532fb3f6fab5e9215453ad43c05095f5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2020 11:19:38 +0000 Subject: [PATCH 183/582] Bump @babel/eslint-plugin from 7.11.3 to 7.11.5 Bumps [@babel/eslint-plugin](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-plugin) from 7.11.3 to 7.11.5. - [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.5/eslint/babel-eslint-plugin) 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 ccc3a8de40..9d37d1773d 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "devDependencies": { "@babel/core": "^7.11.5", "@babel/eslint-parser": "^7.11.5", - "@babel/eslint-plugin": "^7.11.3", + "@babel/eslint-plugin": "^7.11.5", "@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 05b6a7d8a6..110327b20d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -49,10 +49,10 @@ eslint-visitor-keys "^1.3.0" semver "^6.3.0" -"@babel/eslint-plugin@^7.11.3": - version "7.11.3" - resolved "https://registry.yarnpkg.com/@babel/eslint-plugin/-/eslint-plugin-7.11.3.tgz#66b531f90592f8f0621d072b59ea2c37c91e8d0d" - integrity sha512-gmi3lgaWlYpNb+h7qPfv5GVz2ZVwzCDyV+kAGj+3il+Mv5uan5Yccvdw7m14UAAY2tdTbB0VgRF6ZLjUbrUm0g== +"@babel/eslint-plugin@^7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/eslint-plugin/-/eslint-plugin-7.11.5.tgz#651fed485493cee8ae803d6a22e3b4f21315f328" + integrity sha512-klliWjB6CeMeqZ7IeJporPr7raD3Ttc8MF9HPNyTvddmBB9Bg7gbiN43rZvaqvsYiktPQLHZrD/Of7vtl6EYpw== dependencies: eslint-rule-composer "^0.3.0" From bf9c8778b0d52fb636e859d138fee8a291fa5689 Mon Sep 17 00:00:00 2001 From: dkanada Date: Wed, 2 Sep 2020 20:50:32 +0900 Subject: [PATCH 184/582] allow plugin config changes on standalone --- src/components/appRouter.js | 4 +++- src/components/viewContainer.js | 8 ++++---- .../dashboard/plugins/installed/index.js | 2 +- src/plugins/comicsPlayer/plugin.js | 3 +-- src/scripts/clientUtils.js | 18 +++--------------- src/scripts/libraryMenu.js | 4 ++-- 6 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 75199fc639..a6bb6da618 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -308,7 +308,9 @@ class AppRouter { url = route.contentPath || route.path; } - if (url.indexOf('://') === -1) { + if (url.includes('configurationpage')) { + url = ApiClient.getUrl('/web' + url); + } else if (url.indexOf('://') === -1) { // Put a slash at the beginning but make sure to avoid a double slash if (url.indexOf('/') !== 0) { url = '/' + url; diff --git a/src/components/viewContainer.js b/src/components/viewContainer.js index 9d64130cdb..c39ad2ba84 100644 --- a/src/components/viewContainer.js +++ b/src/components/viewContainer.js @@ -13,8 +13,9 @@ import 'css!components/viewManager/viewContainer'; controllerUrl = controllerUrl.substring('__plugin/'.length); } - controllerUrl = Dashboard.getConfigurationResourceUrl(controllerUrl); - return import(controllerUrl).then((ControllerFactory) => { + controllerUrl = Dashboard.getPluginUrl(controllerUrl); + let apiUrl = ApiClient.getUrl('/web/' + controllerUrl); + return import(apiUrl).then((ControllerFactory) => { options.controllerFactory = ControllerFactory; }); } @@ -32,7 +33,7 @@ import 'css!components/viewManager/viewContainer'; pageIndex = 0; } - const isPluginpage = options.url.toLowerCase().indexOf('/configurationpage') !== -1; + const isPluginpage = options.url.includes('configurationpage'); const newViewInfo = normalizeNewView(options, isPluginpage); const newView = newViewInfo.elem; @@ -243,4 +244,3 @@ export default { reset: reset, setOnBeforeChange: setOnBeforeChange }; - diff --git a/src/controllers/dashboard/plugins/installed/index.js b/src/controllers/dashboard/plugins/installed/index.js index 4eb5477a2d..cdf21d6a3c 100644 --- a/src/controllers/dashboard/plugins/installed/index.js +++ b/src/controllers/dashboard/plugins/installed/index.js @@ -39,7 +39,7 @@ function getPluginCardHtml(plugin, pluginConfigurationPages) { const configPage = pluginConfigurationPages.filter(function (pluginConfigurationPage) { return pluginConfigurationPage.PluginId == plugin.Id; })[0]; - const configPageUrl = configPage ? Dashboard.getConfigurationPageUrl(configPage.Name) : null; + const configPageUrl = configPage ? Dashboard.getPluginUrl(configPage.Name) : null; let html = ''; html += "
    "; html += '
    '; diff --git a/src/plugins/comicsPlayer/plugin.js b/src/plugins/comicsPlayer/plugin.js index 5f9546b9fe..7d0ac92df9 100644 --- a/src/plugins/comicsPlayer/plugin.js +++ b/src/plugins/comicsPlayer/plugin.js @@ -1,4 +1,3 @@ -import connectionManager from 'connectionManager'; import loading from 'loading'; import dialogHelper from 'dialogHelper'; import keyboardnavigation from 'keyboardnavigation'; @@ -94,7 +93,7 @@ export class ComicsPlayer { loading.show(); let serverId = item.ServerId; - let apiClient = connectionManager.getApiClient(serverId); + let apiClient = window.connectionManager.getApiClient(serverId); libarchive.Archive.init({ workerUrl: appRouter.baseUrl() + '/libraries/worker-bundle.js' diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index 28421c59b9..4d3c049e8c 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -62,20 +62,10 @@ export function logout() { }); } -export function getConfigurationPageUrl(name) { +export function getPluginUrl(name) { return 'configurationpage?name=' + encodeURIComponent(name); } -export function getConfigurationResourceUrl(name) { - if (AppInfo.isNativeApp) { - return ApiClient.getUrl('web/ConfigurationPage', { - name: name - }); - } - - return getConfigurationPageUrl(name); -} - export function navigate(url, preserveQueryString) { if (!url) { throw new Error('url cannot be null or empty'); @@ -196,8 +186,7 @@ window.Dashboard = { alert, capabilities, confirm, - getConfigurationPageUrl, - getConfigurationResourceUrl, + getPluginUrl, getCurrentUser, getCurrentUserId, hideLoadingMsg, @@ -216,8 +205,7 @@ export default { alert, capabilities, confirm, - getConfigurationPageUrl, - getConfigurationResourceUrl, + getPluginUrl, getCurrentUser, getCurrentUserId, hideLoadingMsg, diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index c0e277a75b..04edecf198 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -484,8 +484,8 @@ import 'flexStyles'; links.push({ name: pluginItem.DisplayName, icon: pluginItem.MenuIcon || 'folder', - href: Dashboard.getConfigurationPageUrl(pluginItem.Name), - pageUrls: [Dashboard.getConfigurationPageUrl(pluginItem.Name)] + href: Dashboard.getPluginUrl(pluginItem.Name), + pageUrls: [Dashboard.getPluginUrl(pluginItem.Name)] }); } } From 819bd0e02043a826d53b9a4cc6ac938d46ce4341 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2020 14:38:37 +0000 Subject: [PATCH 185/582] Bump webpack-stream from 6.0.0 to 6.1.0 Bumps [webpack-stream](https://github.com/shama/webpack-stream) from 6.0.0 to 6.1.0. - [Release notes](https://github.com/shama/webpack-stream/releases) - [Commits](https://github.com/shama/webpack-stream/compare/v6.0.0...v6.1.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index a489192c64..4dc74d6275 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "stylelint-order": "^4.1.0", "webpack": "^4.44.1", "webpack-merge": "^4.2.2", - "webpack-stream": "^6.0.0", + "webpack-stream": "^6.1.0", "worker-plugin": "^5.0.0" }, "dependencies": { diff --git a/yarn.lock b/yarn.lock index 52a1a3d873..da0a07c5ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10964,10 +10964,10 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== +supports-color@^7.1.0, supports-color@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" @@ -11981,17 +11981,17 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-stream@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/webpack-stream/-/webpack-stream-6.0.0.tgz#0524b739a3c3a487362ee2e97522d0b8d366a510" - integrity sha512-bYv7apmGB1j0JBpa5Fgyky/1mWyzHOnUPXv+RmkgpK4FXPWCMBspgnYFmhE7Ly68JSp77eonFzm6WArWy4afpQ== +webpack-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webpack-stream/-/webpack-stream-6.1.0.tgz#047348e36793432f329c7b5ff13e6e9b6872c152" + integrity sha512-kFMnDzFTzyvVmn4ajaj0xEJavvYizd3I/KmQ6C5aUstcAkNwZUidxkk/uEaEPSydaAn66v8ZcP1+bhKSshNJUQ== dependencies: fancy-log "^1.3.3" lodash.clone "^4.3.2" lodash.some "^4.2.2" memory-fs "^0.5.0" plugin-error "^1.0.1" - supports-color "^7.1.0" + supports-color "^7.2.0" through "^2.3.8" vinyl "^2.1.0" webpack "^4.26.1" From 4e4175c0883e506affa13dfca658b7727437d618 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 2 Sep 2020 15:14:09 +0000 Subject: [PATCH 186/582] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 09b6ae3820..1e6c6a6032 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1375,5 +1375,7 @@ "Profile": "Profil", "MusicVideos": "Musikvideos", "Image": "Bild", - "Data": "Daten" + "Data": "Daten", + "SpecialFeatures": "Besonderheiten", + "Poster": "Poster" } From d4534b7962ed8350179e5e6657c2cf7d0e904ea1 Mon Sep 17 00:00:00 2001 From: Leon So Date: Wed, 2 Sep 2020 15:15:59 +0000 Subject: [PATCH 187/582] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 8c276c3711..80f6fa14ba 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1365,5 +1365,11 @@ "LabelSubtitleVerticalPosition": "垂直位置:", "PreviousTrack": "上一首", "NextTrack": "下一首", - "LabelUnstable": "不穩定" + "LabelUnstable": "不穩定", + "Restart": "重新啟動", + "ResetPassword": "重設密碼", + "Poster": "海報", + "MusicVideos": "音樂影片", + "Image": "圖片", + "Data": "資料" } From 8bbb7ba747a91547a1cabba6c8232c064c1b4dd8 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2020 17:13:51 +0000 Subject: [PATCH 188/582] Bump eslint from 7.8.0 to 7.8.1 Bumps [eslint](https://github.com/eslint/eslint) from 7.8.0 to 7.8.1. - [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.8.0...v7.8.1) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 4dc74d6275..5ca5c15151 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "css-loader": "^4.2.2", "cssnano": "^4.1.10", "del": "^5.1.0", - "eslint": "^7.8.0", + "eslint": "^7.8.1", "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 da0a07c5ae..afb0f040a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -867,14 +867,20 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@eslint/eslintrc@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.0.tgz#3d1f19fb797d42fb1c85458c1c73541eeb1d9e76" - integrity sha512-bfL5365QSCmH6cPeFT7Ywclj8C7LiF7sO6mUGzZhtAMV7iID1Euq6740u/SRi4C80NOnVz/CEfK8/HO+nCAPJg== +"@eslint/eslintrc@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" + integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== dependencies: ajv "^6.12.4" debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" strip-json-comments "^3.1.1" "@gulp-sourcemaps/identity-map@1.X": @@ -4051,13 +4057,13 @@ 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.8.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.8.0.tgz#9a3e2e6e4d0a3f8c42686073c25ebf2e91443e8a" - integrity sha512-qgtVyLZqKd2ZXWnLQA4NtVbOyH56zivOAdBFWE54RFkSZjokzNrcP4Z0eVWsZ+84ByXv+jL9k/wE1ENYe8xRFw== +eslint@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.8.1.tgz#e59de3573fb6a5be8ff526c791571646d124a8fa" + integrity sha512-/2rX2pfhyUG0y+A123d0ccXtMm7DV7sH1m3lk9nk2DZ2LReq39FXHueR9xZwshE5MdfSf0xunSaMWRqyIA6M1w== dependencies: "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.1.0" + "@eslint/eslintrc" "^0.1.3" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" From 108f5a9ae3bf6a57309a8672dcbd724711b81f11 Mon Sep 17 00:00:00 2001 From: Airichan Date: Wed, 2 Sep 2020 17:34:08 +0000 Subject: [PATCH 189/582] Added translation using Weblate (Thai) --- src/strings/th.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/strings/th.json diff --git a/src/strings/th.json b/src/strings/th.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/strings/th.json @@ -0,0 +1 @@ +{} From f26e90ba0aa0885953ed13bdf03b5903274a226d Mon Sep 17 00:00:00 2001 From: Sverre Date: Wed, 2 Sep 2020 17:53:12 +0000 Subject: [PATCH 190/582] =?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 | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 7bde7f6b3f..36210fb9f9 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1365,5 +1365,19 @@ "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." + "MessagePluginInstallError": "En feil oppstod under installasjon av tillegget.", + "ThumbCard": "Miniatyrbildekort", + "SpecialFeatures": "Spesialfunksjoner", + "PosterCard": "Plakatkort", + "Video": "Video", + "Subtitle": "Undertekst", + "SelectServer": "Velg tjener", + "Restart": "Restart", + "ResetPassword": "Tilbakestill passord", + "Profile": "Profil", + "Poster": "Plakat", + "PlaybackRate": "Avspillingshastighet", + "MusicVideos": "Musikkvideoer", + "Image": "Bilde", + "Data": "Data" } From 9ff7512bb49860d751a396afbc4f2ba99d8be23f Mon Sep 17 00:00:00 2001 From: Airichan Date: Wed, 2 Sep 2020 17:35:19 +0000 Subject: [PATCH 191/582] Translated using Weblate (Thai) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/th/ --- src/strings/th.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/th.json b/src/strings/th.json index 0967ef424b..8eff59cd82 100644 --- a/src/strings/th.json +++ b/src/strings/th.json @@ -1 +1,8 @@ -{} +{ + "AddToPlayQueue": "เพิ่มไปยังคิวเล่น", + "AddToCollection": "เพิ่มไปยังคอลเลกชัน", + "Add": "เพิ่ม", + "Actor": "นักแสดง", + "AccessRestrictedTryAgainLater": "ขณะนี้การเข้าถึงถูกจำกัด โปรดลองอีกครั้งในภายหลัง", + "Absolute": "แน่นอน" +} From 258456875c4cd417b30d31f77614284d1f017588 Mon Sep 17 00:00:00 2001 From: Sverre Date: Wed, 2 Sep 2020 18:57:04 +0000 Subject: [PATCH 192/582] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 36210fb9f9..b53bb49c4b 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1268,7 +1268,7 @@ "LabelDeinterlaceMethod": "Deinterlacing metode:", "DeinterlaceMethodHelp": "Velg deinterlacing metoden som skal bli brukt når man transkoder interlaced innhold.", "ButtonTogglePlaylist": "Spilleliste", - "EnableBlurHashHelp": "Bilder som fortsatt lastes inn vil vises med en tåkete plassholder", + "EnableBlurHashHelp": "Bilder som fortsatt lastes inn vil vises med en unik plassholder.", "EnableBlurHash": "Aktiver tåkete plassholdere for bilder", "UnsupportedPlayback": "Jellyfin kan ikke dekryptere innhold beskyttet med DRM, men alt innhold vil bli forsøkt uansett, inkludert beskyttede titler. Noen filer kan fremstå helt svarte grunnet kryptering eller andre ikke støttede funksjoner, som interaktive titler.", "OnApplicationStartup": "Ved oppstart av applikasjonen", From 388b33a6b440b31dd5ff57aa4567ac605d3949cb Mon Sep 17 00:00:00 2001 From: Thomas Schwery Date: Wed, 2 Sep 2020 20:23:28 +0000 Subject: [PATCH 193/582] 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, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 42419fbd62..b38811d66a 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1368,12 +1368,13 @@ "MessagePluginInstallError": "Une erreur est survenue durant l'installation de l'extension.", "PlaybackRate": "Vitesse de lecture", "Subtitle": "Sous-titre", - "SelectServer": "Choisissez un serveur", + "SelectServer": "Sélectionnez un serveur", "Restart": "Redémarrer", "ResetPassword": "Réinitialiser le mot de passe", "Profile": "Profil", "Poster": "Affiche", "MusicVideos": "Clips musicaux", "Image": "Image", - "Data": "Données" + "Data": "Données", + "Video": "Vidéo" } From 9f1ba992d0eb3642ba31b22a49b050b1dc254bdb Mon Sep 17 00:00:00 2001 From: Elliot Moore Date: Wed, 2 Sep 2020 23:35:15 +0000 Subject: [PATCH 194/582] Translated using Weblate (English (United Kingdom)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_GB/ --- src/strings/en-gb.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 4ef5c732b4..e1746ae656 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1366,5 +1366,18 @@ "MessagePluginInstallError": "An error occurred while installing the plugin.", "PlaybackRate": "Playback Rate", "NextTrack": "Skip to next", - "LabelUnstable": "Unstable" + "LabelUnstable": "Unstable", + "Video": "Video", + "ThumbCard": "Thumb Card", + "Subtitle": "Subtitle", + "SpecialFeatures": "Special Features", + "SelectServer": "Select Server", + "Restart": "Restart", + "ResetPassword": "Reset Password", + "Profile": "Profile", + "PosterCard": "Poster Card", + "Poster": "Poster", + "MusicVideos": "Music Videos", + "Image": "Image", + "Data": "Data" } From 41ff177d7281c7d408033bd89796f93b7ddedef7 Mon Sep 17 00:00:00 2001 From: Elliot Moore Date: Wed, 2 Sep 2020 23:36:30 +0000 Subject: [PATCH 195/582] Translated using Weblate (English (United Kingdom)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_GB/ --- src/strings/en-gb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index e1746ae656..a97b010175 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1296,7 +1296,7 @@ "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", + "EnableBlurHashHelp": "Images that are still being loaded will be displayed with a blurred placeholder.", "EnableBlurHash": "Enable blurred placeholders for images", "TabRepositories": "Repositories", "SyncPlayAccessHelp": "Select the level of access this user has to the SyncPlay feature. SyncPlay enables to sync playback with other devices.", From b522b63442b7e3994e21600fcdef886f71fbc0b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Woli=C5=84ski?= Date: Thu, 3 Sep 2020 05:55:36 +0000 Subject: [PATCH 196/582] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index 5885911680..e2130dc4eb 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1366,5 +1366,18 @@ "LabelSubtitleVerticalPosition": "Pozycja pionowa:", "MessageGetInstalledPluginsError": "Wystąpił błąd podczas pobierania listy aktualnie zainstalowanych wtyczek.", "MessagePluginInstallError": "Wystąpił błąd podczas instalacji wtyczki.", - "PlaybackRate": "Szybkość odtwarzania" + "PlaybackRate": "Szybkość odtwarzania", + "Image": "Obraz", + "Data": "Data", + "Video": "Wideo", + "ThumbCard": "Karta miniaturki", + "Subtitle": "Napisy", + "SpecialFeatures": "Specjalne funkcje programu", + "SelectServer": "Wybierz serwer", + "Restart": "Ponowne uruchomienie", + "ResetPassword": "Reset hasła", + "Profile": "Profil", + "PosterCard": "Widokówka", + "Poster": "Plakat", + "MusicVideos": "Teledyski" } From 02bcc830c15392558c98926f7f11a328293d1d6d Mon Sep 17 00:00:00 2001 From: Claus Vium Date: Thu, 3 Sep 2020 12:20:02 +0200 Subject: [PATCH 197/582] Fix task filter for the scan task button --- src/scripts/taskbutton.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/taskbutton.js b/src/scripts/taskbutton.js index 6df7ee848d..fc56bbfaae 100644 --- a/src/scripts/taskbutton.js +++ b/src/scripts/taskbutton.js @@ -14,7 +14,7 @@ export default function (options) { function updateTasks(tasks) { const task = tasks.filter(function (t) { - return t.Key == options.taskKey; + return t.ScheduledTask.Key == options.taskKey; })[0]; if (options.panel) { From 6553cea696995f565cea607edfd03e465d70c8bc Mon Sep 17 00:00:00 2001 From: "Brian J. Murrell" Date: Thu, 3 Sep 2020 10:33:59 -0400 Subject: [PATCH 198/582] Add BR: git for all distros Seems the Fedora yarn package also doesn't Requires: git so add it as a BuildRequires:. Signed-off-by: Brian J. Murrell --- fedora/jellyfin-web.spec | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fedora/jellyfin-web.spec b/fedora/jellyfin-web.spec index 1d85e5ae6b..d4af00d36b 100644 --- a/fedora/jellyfin-web.spec +++ b/fedora/jellyfin-web.spec @@ -2,7 +2,7 @@ Name: jellyfin-web Version: 10.7.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: The Free Software Media System web client License: GPLv3 URL: https://jellyfin.org @@ -11,11 +11,12 @@ Source0: jellyfin-web-%{version}.tar.gz %if 0%{?centos} BuildRequires: yarn -# sadly the yarn RPM at https://dl.yarnpkg.com/rpm/ uses git but doesn't Requires: it -BuildRequires: git %else BuildRequires: nodejs-yarn %endif +# sadly the yarn RPM at https://dl.yarnpkg.com/rpm/ uses git but doesn't Requires: it +# ditto for Fedora's yarn RPM +BuildRequires: git BuildArch: noarch # Disable Automatic Dependency Processing From 2a36ec463b19c260c8b2f7627038fc4ee77bcf9a Mon Sep 17 00:00:00 2001 From: josteinh Date: Thu, 3 Sep 2020 08:40:28 +0000 Subject: [PATCH 199/582] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 546f94f638..4ff5a55ea3 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -855,7 +855,7 @@ "Share": "Del", "ShowAdvancedSettings": "Vis avanserte innstillinger", "ShowIndicatorsFor": "Vis indikatorer for:", - "Shows": "Programmer", + "Shows": "Program", "SkipEpisodesAlreadyInMyLibrary": "Ikke ta opp episoder som allerede finnes i biblioteket mitt", "SkipEpisodesAlreadyInMyLibraryHelp": "Episoder vil bli sammenlignet med sesong- og episodenummer når de er tilgjengelige.", "Songs": "Sanger", From fdb181d15df7493f15ce66e7f609d237c32ee7bc Mon Sep 17 00:00:00 2001 From: Mithilesh Zavar Date: Thu, 3 Sep 2020 16:29:12 +0000 Subject: [PATCH 200/582] Translated using Weblate (Hindi) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hi/ --- src/strings/hi-in.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index 3e17566d5a..5e26c9ad69 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -93,5 +93,7 @@ "MessageBrowsePluginCatalog": "उपलब्ध प्लगिन्स देखने के लिए हमारे कैटलॉग को ब्राउज़ करें।", "Browse": "ब्राउज़", "BoxSet": "बॉक्स सेट", - "BurnSubtitlesHelp": "निर्धारित करता है कि वीडियो ट्रांसकोडिंग करते समय सर्वर को उपशीर्षक बर्न-इन करना चाहिए। इससे बचने से प्रदर्शन में बहुत सुधार होगा। छवि आधारित उपशीर्षक (VOBSUB, PGS, SUB, IDX, …) एवं ASS अथवा SSA जैसे उपशीर्षक बर्न-इन करने के लिए ऑटो का चयन करें।" + "BurnSubtitlesHelp": "निर्धारित करता है कि वीडियो ट्रांसकोडिंग करते समय सर्वर को उपशीर्षक बर्न-इन करना चाहिए। इससे बचने से प्रदर्शन में बहुत सुधार होगा। छवि आधारित उपशीर्षक (VOBSUB, PGS, SUB, IDX, …) एवं ASS अथवा SSA जैसे उपशीर्षक बर्न-इन करने के लिए ऑटो का चयन करें।", + "ButtonRemove": "हटाना", + "ButtonOpen": "खोलो" } From 986be16d984ef7a11828a10ec5ca58036d034b22 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Thu, 3 Sep 2020 15:34:09 +0000 Subject: [PATCH 201/582] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 7623ffbea2..8d87260ccc 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1353,5 +1353,20 @@ "LabelSubtitleVerticalPosition": "Függőleges pozíció:", "MessageGetInstalledPluginsError": "Hiba történt a jelenleg telepített bővítmények lekérdezése során.", "MessagePluginInstallError": "Hiba történt a bővítmény telepítése során.", - "PlaybackRate": "Lejátszási sebesség" + "PlaybackRate": "Lejátszási sebesség", + "VideoAudio": "Videó hang", + "Video": "Videó", + "ThumbCard": "Miniatűr kártya", + "Subtitle": "Felirat", + "SelectServer": "Szerver kiválasztása", + "Restart": "Újraindítás", + "ResetPassword": "Jelszó visszaállítása", + "Profile": "Profil", + "PosterCard": "Poszter kártya", + "Poster": "Poszter", + "Photo": "Kép", + "MusicVideos": "Zenei videóklippek", + "Image": "Kép", + "Other": "További", + "Data": "Adat" } From 78ec90c03e04e1afa57619838a8839c95dcab936 Mon Sep 17 00:00:00 2001 From: josteinh Date: Thu, 3 Sep 2020 15:34:12 +0000 Subject: [PATCH 202/582] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 4ff5a55ea3..c50d95c872 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1366,5 +1366,6 @@ "PlaybackRate": "Avspillingshastighet", "MusicVideos": "Musikkvideoer", "Image": "Bilde", - "Data": "Data" + "Data": "Data", + "Other": "Annet" } From 265608ba3f04983a60aee2a48e8e2f4fd6fe914d Mon Sep 17 00:00:00 2001 From: wille1101 Date: Thu, 3 Sep 2020 16:01:54 +0000 Subject: [PATCH 203/582] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index e6dbb2409e..4f940171d7 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -16,7 +16,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Tillåt TV-mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på Jellyfin Servern.", + "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 server.", @@ -126,7 +126,7 @@ "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 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.", + "DirectStreamHelp2": "Direktströmning använder väldigt lite processorkraft och har en försumbar påverkan på bildkvaliten.", "DirectStreaming": "Direktströmning", "Director": "Regissör", "Directors": "Regi", @@ -165,9 +165,9 @@ "Ended": "Avslutad", "EndsAtValue": "Slutar vid: {0}", "Episodes": "Avsnitt", - "ErrorAddingMediaPathToVirtualFolder": "Det gick inte att lägga till sökvägen. Kontrollera att sökvägen är korrekt och att Jellyfin Server har rättigheter till sökvägen.", + "ErrorAddingMediaPathToVirtualFolder": "Det gick inte att lägga till sökvägen. Kontrollera att sökvägen är korrekt och att Jellyfin har rättigheter till sökvägen.", "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.", + "ErrorDeletingItem": "Det gick inte att ta bort det här objektet från servern. Kontrollera att Jellyfin har skrivrättigheter till media-mappen och försök igen.", "ErrorGettingTvLineups": "Ett fel uppstod vid nedladdningen utav TV-sortimentet. Se till så att uppgifterna stämmer och försök igen.", "ErrorStartHourGreaterThanEnd": "Sluttiden måste vara senare än starttiden.", "ErrorPleaseSelectLineup": "Välj en lineup och försök igen. Om inga lineups finns tillgängliga, kolla så att användarnamn, lösenord och postnummer stämmer.", @@ -212,7 +212,7 @@ "HeaderAllowMediaDeletionFrom": "Tillåt mediaborttagning från", "HeaderApiKey": "API-nyckel", "HeaderApiKeys": "API-nycklar", - "HeaderApiKeysHelp": "Externa applikationer behöver en API-nyckel för att kommunicera med Jellyfin servern. Nycklar skapas genom att logga in med ett Jellyfin-konto eller genom att manuellt skapa en nyckel till applikationen.", + "HeaderApiKeysHelp": "Externa applikationer behöver en API-nyckel för att kommunicera med servern. Nycklar skapas genom att logga in med ett vanligt användarkonto eller genom att manuellt skapa en nyckel till applikationen.", "HeaderAudioBooks": "Ljudböcker", "HeaderAudioSettings": "Ljudinställningar", "HeaderBlockItemsWithNoRating": "Blockera innehåll med ingen eller okänd åldersgräns:", @@ -269,7 +269,7 @@ "HeaderInstantMix": "Direktmix", "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.", + "HeaderKodiMetadataHelp": "För att aktivera eller inaktivera NFO-metadata, redigera ett bibliotek och använd Metadata-fliken.", "HeaderLatestEpisodes": "Senaste avsnitten", "HeaderLatestMedia": "Nytillkommet", "HeaderLatestMovies": "Nytillkomna filmer", @@ -1113,8 +1113,8 @@ "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.", - "AllowMediaConversion": "Tillåt media konvertering", + "AllowMediaConversionHelp": "Tillåt eller neka tillgång till mediakonvertingsfunktionen.", + "AllowMediaConversion": "Tillåt mediakonvertering", "Alerts": "Alarm", "HeaderMedia": "Media", "FormatValue": "Format: {0}", @@ -1344,5 +1344,7 @@ "MessageSyncPlayDisabled": "SyncPlay avaktiverat.", "MessageSyncPlayEnabled": "SyncPlay aktiverat.", "MessageNoGenresAvailable": "Aktivera vissa metadataleverantörer att hämta genrer från internet.", - "LabelRepositoryNameHelp": "Ett eget namn för att särskilja denna förvaringsplats från andra tillagda på din server." + "LabelRepositoryNameHelp": "Ett eget namn för att särskilja denna förvaringsplats från andra tillagda på din server.", + "Other": "Annat", + "Preview": "Förhandsvisning" } From 67c91a29e381ab3174eab11dfd658e6f6a50a045 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 3 Sep 2020 15:58:23 +0000 Subject: [PATCH 204/582] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 6f7a8f060d..db550c1930 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1380,5 +1380,10 @@ "Poster": "சுவரொட்டி", "MusicVideos": "இசை கானொளி", "Image": "படம்", - "Data": "தகவல்கள்" + "Data": "தகவல்கள்", + "VideoAudio": "வீடியோ ஆடியோ", + "Photo": "புகைப்படம்", + "LabelIconMaxResHelp": "Upnp: ஐகான் வழியாக வெளிப்படும் ஐகான்களின் அதிகபட்ச தீர்மானம்.", + "LabelAlbumArtMaxResHelp": "ஆல்பம் படத்தின் அதிகபட்ச தெளிவுத்திறன் upnp: albumArtURI வழியாக வெளிப்படும்.", + "Other": "மற்றவை" } From fddcd1b56ee3e536d3a28c85de742e2a2fd80ce2 Mon Sep 17 00:00:00 2001 From: wille1101 Date: Thu, 3 Sep 2020 16:41:11 +0000 Subject: [PATCH 205/582] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 58 +++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 4f940171d7..bfa628ef65 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -307,7 +307,7 @@ "HeaderPluginInstallation": "Installation av tillägg", "HeaderPreferredMetadataLanguage": "Önskat språk för metadata", "HeaderProfileInformation": "Profilinformation", - "HeaderProfileServerSettingsHelp": "Dessa inställningar kontrollerar hur Jellyfin Server presenterar sig för enheten.", + "HeaderProfileServerSettingsHelp": "Dessa inställningar bestämmer hur servern presenterar sig för enheter.", "HeaderRecentlyPlayed": "Nyligen spelade", "HeaderRecordingOptions": "Inspelningsalternativ", "HeaderRecordingPostProcessing": "Post-proccessing för inspelningar", @@ -328,7 +328,7 @@ "HeaderSelectServerCachePath": "Välj plats för serverns cache", "HeaderSelectServerCachePathHelp": "Bläddra fram till eller ange plats för serverns cache. Katalogen måste vara tillgänglig för skrivning.", "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.", + "HeaderSelectTranscodingPathHelp": "Bläddra fram till eller ange plats för lagringen av omkodningsfiler. Katalogen måste vara tillgänglig för skrivning.", "HeaderSendMessage": "Skicka meddelande", "HeaderSeriesOptions": "Seriealternativ", "HeaderSeriesStatus": "Seriestatus", @@ -370,8 +370,8 @@ "Horizontal": "Horisontell", "Identify": "Identifiera", "Images": "Bilder", - "ImportFavoriteChannelsHelp": "Aktivera för att endast importera kanaler som är märkta som favoriter på den här TV-mottagaren.", - "ImportMissingEpisodesHelp": "Om aktiverat importeras information om saknade episoder till din Jellyfin-databas och visas i seriesäsongerna. Detta kan innebära längre tidsåtgång för biblioteksskanningar.", + "ImportFavoriteChannelsHelp": "Endast kanaler som är märkta som favoriter på den här TV-mottagaren kommer att importeras.", + "ImportMissingEpisodesHelp": "Information om saknade episoder kommer att importeras till din Jellyfin-databas och visas i seriesäsongerna. Detta kan innebära att biblioteksskanningar tar en avsevärt längre tid.", "InstallingPackage": "Installerar {0} (version {1})", "InstantMix": "Omedelbar mix", "ItemCount": "{0} objekt", @@ -396,14 +396,14 @@ "LabelAppName": "Appens namn", "LabelAppNameExample": "Exempel: Sickbeard, Sonarr", "LabelArtists": "Artister:", - "LabelArtistsHelp": "Separera med vid flera ;", + "LabelArtistsHelp": "Separera flera artister med ett semikolon.", "LabelAudioLanguagePreference": "Önskat ljudspråk:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Uppdatera metadata automatiskt ifrån internet:", "LabelBindToLocalNetworkAddress": "Knyt till lokal nätverksadress:", - "LabelBindToLocalNetworkAddressHelp": "Valfri. Skriv över den lokala IP-adressen att binda http-servern till. Om den är tom, kommer server knytas till alla tillgängliga adresser. Ändring kräver omstart av Jellyfin server.", + "LabelBindToLocalNetworkAddressHelp": "Skriv över den lokala IP-adressen för HTTP-servern. Om den är tom kommer servern knytas till alla tillgängliga adresser. Ändring av detta värde kräver en omstart.", "LabelBirthDate": "Födelsedatum:", "LabelBirthYear": "Födelseår:", - "LabelBlastMessageInterval": "Sändningsintervall i sekunder för \"jag lever\"-meddelanden", + "LabelBlastMessageInterval": "Sändningsintervall för \"jag lever\"-meddelanden", "LabelBlastMessageIntervalHelp": "Anger tid i sekunder mellan varje \"jag lever\"-meddelande.", "LabelBlockContentWithTags": "Blockera innehåll med etiketterna:", "LabelBurnSubtitles": "Bränn untertexter:", @@ -427,7 +427,7 @@ "LabelCustomRating": "Anpassad åldersgräns:", "LabelDateAdded": "Inlagd den:", "LabelDateAddedBehavior": "Hantering av datum för nytt innehåll:", - "LabelDateAddedBehaviorHelp": "Om ett metadatavärde finns kommer det att användas i stället för dessa.", + "LabelDateAddedBehaviorHelp": "Om ett metadatavärde finns kommer det alltid att användas i stället för dessa alternativ.", "LabelDateTimeLocale": "Språktidsformat:", "LabelDay": "Dag:", "LabelDeathDate": "Död:", @@ -456,8 +456,8 @@ "LabelEnableAutomaticPortMapHelp": "För automatiskt vidare publika portar från din router till lokala portar på din server via UPnP. Detta fungerar inte med alla router modeller eller nätverkskonfigurationer. Ändringar kommer inte appliceras inte tills server startats om.", "LabelEnableBlastAliveMessages": "Skicka ut \"jag lever\"-meddelanden", "LabelEnableBlastAliveMessagesHelp": "Aktivera detta om andra UPnP-enheter på nätverket har problem att upptäcka servern.", - "LabelEnableDlnaClientDiscoveryInterval": "Intervall för upptäckt av klienter (i sekunder)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Ange hur ofta Jellyfin Server söker efter nya DLNA-klienter med hjälp av SSDP-protokollet.", + "LabelEnableDlnaClientDiscoveryInterval": "Intervall för att upptäcka klienter", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Ange hur ofta det söks efter nya DLNA-klienter med hjälp av SSDP-protokollet.", "LabelEnableDlnaDebugLogging": "Aktivera DLNA felsökningsloggning", "LabelEnableDlnaDebugLoggingHelp": "Detta resulterar i mycket stora loggfiler och rekommenderas bara vid felsökning.", "LabelEnableDlnaPlayTo": "Använd DLNA spela-upp-på", @@ -481,7 +481,7 @@ "LabelFont": "Typsnitt:", "LabelForgotPasswordUsernameHelp": "Skriv ditt användarnamn, om du kommer ihåg det.", "LabelFriendlyName": "Visningsnamn:", - "LabelServerNameHelp": "Det här namnet används för att identifiera servern. Ifall det lämnas tomt används datorns namn.", + "LabelServerNameHelp": "Det här namnet används för att identifiera servern. Ifall det lämnas tomt används serverns värdnamn.", "LabelGroupMoviesIntoCollections": "Gruppera filmer i samlingsboxar", "LabelGroupMoviesIntoCollectionsHelp": "I filmlistor visas filmer som ingår i en samlingsbox som ett enda objekt.", "LabelH264Crf": "H264-omkodning CRF:", @@ -491,7 +491,7 @@ "LabelHomeNetworkQuality": "Hemnätverkskvalitet:", "LabelHomeScreenSectionValue": "Hemskärmsdel {0}:", "LabelHttpsPort": "Lokalt portnummer för HTTPS:", - "LabelHttpsPortHelp": "Den lokala tcp-port som Jellyfin Server ska lyssna på https.", + "LabelHttpsPortHelp": "Den lokala TCP-porten för HTTPS-servern.", "LabelIconMaxHeight": "Maxhöjd på ikoner:", "LabelIconMaxWidth": "Maxbredd på ikoner:", "LabelIdentificationFieldHelp": "En skiftlägesokänslig delsträng eller regex-uttryck.", @@ -517,7 +517,7 @@ "LabelLanguage": "Språk:", "LabelLineup": "Uppsättning:", "LabelLocalHttpServerPortNumber": "Lokalt portnummer för HTTP:", - "LabelLocalHttpServerPortNumberHelp": "Den lokala tcp-port som Jellyfin Server ska lyssna på http.", + "LabelLocalHttpServerPortNumberHelp": "Den lokala TCP-porten för HTTP-servern.", "LabelLockItemToPreventChanges": "Lås det här objektet för att förhindra ändringar", "LabelLoginDisclaimer": "Ansvarsbegränsning vid inloggning:", "LabelLoginDisclaimerHelp": "Detta visas längst ned på inloggningssidan.", @@ -558,7 +558,7 @@ "LabelMovieCategories": "Filmkategorier:", "LabelMoviePrefix": "Film prefix:", "LabelMoviePrefixHelp": "Om ett prefix har lagts till filmertitlarna, skriv in det här så att servern kan hantera dessa korrekt.", - "LabelMovieRecordingPath": "Inspelningssökväg för film (valfri):", + "LabelMovieRecordingPath": "Inspelningssökväg för film:", "LabelMusicStreamingTranscodingBitrate": "Bithastighet vid omkodning av musik:", "LabelMusicStreamingTranscodingBitrateHelp": "Ange högsta bithastighet vid strömning av musik.", "LabelName": "Namn:", @@ -570,8 +570,8 @@ "LabelNumber": "Nr:", "LabelNumberOfGuideDays": "Antal dagars tablå att hämta:", "LabelNumberOfGuideDaysHelp": "Hämtning av en längre periods tablå ger möjlighet att boka inspelningar och se program längre fram i tiden, men ger längre nedladdningstid. \"Auto\" väljer baserat på antalet kanaler.", - "LabelOptionalNetworkPath": "(Valfri) Delad nätverksmapp:", - "LabelOptionalNetworkPathHelp": "Om denna mappen delas på ditt nätverk, kan den delade sökvägen tillåta Jellyfin-appar på andra enheter att streama mediafiler direkt. Som exempel, {0} eller {1}.", + "LabelOptionalNetworkPath": "Delad nätverksmapp:", + "LabelOptionalNetworkPathHelp": "Om denna mappen delas på ditt nätverk, kan den delade sökvägen tillåta klienter på andra enheter att streama mediafiler direkt. Till exempel, {0} eller {1}.", "LabelOriginalAspectRatio": "Ursprungligt bildförhållande:", "LabelOriginalTitle": "Original titel:", "LabelOverview": "Synopsis:", @@ -609,7 +609,7 @@ "LabelReleaseDate": "Premiärdatum:", "LabelRemoteClientBitrateLimit": "Maximal hastighet för strömning till Internet (Mbps):", "LabelRemoteClientBitrateLimitHelp": "En valfri bitfrekvensgräns för enskilda strömmar utanför det lokala nätverket. Detta är användbart för att förhindra enheter från att begära högre bitfrekvens än din internetuppkoppling kan hantera. Detta kan innebära högre processorbelastning för att omkoda videor till lägre bitfrekvens.", - "LabelRuntimeMinutes": "Speltid (min):", + "LabelRuntimeMinutes": "Speltid:", "LabelSaveLocalMetadata": "Spara grafik till mediamapparna", "LabelSaveLocalMetadataHelp": "Om grafik sparas tillsammans med media är de enkelt åtkomliga för redigering.", "LabelScheduledTaskLastRan": "Senast körd {0}, tog {1}.", @@ -621,7 +621,7 @@ "LabelSelectVersionToInstall": "Välj version att installera:", "LabelSendNotificationToUsers": "Skicka meddelande till:", "LabelSerialNumber": "Serienummer", - "LabelSeriesRecordingPath": "Inspelningssökväg för TV-serier (valfri):", + "LabelSeriesRecordingPath": "Inspelningssökväg för TV-serier:", "LabelServerHost": "Värd:", "LabelServerHostHelp": "192.168.1.100:8096 eller https://min.server.com", "LabelSimultaneousConnectionLimit": "Begränsning för samtidiga strömmar:", @@ -726,13 +726,13 @@ "MessageConfirmProfileDeletion": "Är du säker på att du vill ta bort den här profilen?", "MessageConfirmRecordingCancellation": "Är du säker på att du vill avbryta denna inspelning?", "MessageConfirmRemoveMediaLocation": "Är du säker på att du vill ta bort den här platsen?", - "MessageConfirmRestart": "Är du säker på att du vill starta om Jellyfin server?", - "MessageConfirmRevokeApiKey": "Är du säker på att du vill återkalla den här api-nyckeln? Applikationens koppling till Jellyfin Server kommer avslutas abrupt.", + "MessageConfirmRestart": "Är du säker på att du vill starta om Jellyfin?", + "MessageConfirmRevokeApiKey": "Är du säker på att du vill återkalla den här API-nyckeln? Applikationens koppling till denna server kommer att avslutas abrupt.", "MessageConfirmShutdown": "Är du säker på att du vill stänga av servern?", "MessageContactAdminToResetPassword": "Vänligen kontakta din systemadministratör för att återställa ditt lösenord.", "MessageCreateAccountAt": "Skapa ett konto på {0}", "MessageDeleteTaskTrigger": "Vill du ta bort denna aktivitetsutlösare?", - "MessageDirectoryPickerBSDInstruction": "Om du kör BSD kan du behöva konfiguerara din lagring inom FreeNAS Jail för att ge Jellyfin åtkomst till det.", + "MessageDirectoryPickerBSDInstruction": "Om du kör BSD kan du behöva konfiguerara din lagring inom ditt FreeNAS-Jail för att ge Jellyfin åtkomst till din media.", "MessageDirectoryPickerLinuxInstruction": "För Linux på ArchLinux, CentOS, Debian, Fedora, OpenSuse, eller Ubuntu, behöver du ge systemanvändaren för Jellyfin minst läsrättigheter till dina lagringsplatser.", "MessageDownloadQueued": "Nedladdning köad.", "MessageEnablingOptionLongerScans": "Aktivering av detta alternativ kan innebära att biblioteksskanningar tar längre tid.", @@ -754,7 +754,7 @@ "MessagePleaseEnsureInternetMetadata": "Var god se till att hämtning av metadata via Internet är aktiverad.", "MessagePleaseWait": "Vänligen vänta. Detta kan ta ett tag.", "MessagePluginConfigurationRequiresLocalAccess": "Logga in på din din lokala Jellyfin Server för att konfigurera det här tillägget.", - "MessagePluginInstallDisclaimer": "Tillägg skapade av Jellyfin-användare är ett bra sätt att förbättra din Jellyfin-upplevelse med ytterligare funktionalitet. Observera att detta kan påverka din Jellyfin-server så som längre tidsåtgång för biblioteksskanningar, ytterligare bakgrundsprocesser och minskad systemstabilitet.", + "MessagePluginInstallDisclaimer": "Tillägg skapade av användare är ett bra sätt att förbättra din upplevelse med ytterligare funktionalitet. Observera att detta kan påverka din server så som längre tidsåtgång för biblioteksskanningar, ytterligare bakgrundsprocesser och minskad systemstabilitet.", "MessageReenableUser": "Se nedan för att aktivera igen", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Följande mediaplatser kommer att tas bort från ditt bibliotek:", "MessageUnableToConnectToServer": "Vi kunde inte upprätta anslutning till vald server just nu. Försäkra dig om att den är påslagen och försök igen.", @@ -804,7 +804,7 @@ "OptionAllowLinkSharingHelp": "Endast webbsidor med medieinformation delas. Mediefiler delas aldrig publikt. Delningar är tidsbegränsade och upphör efter {0} dagar.", "OptionAllowManageLiveTv": "Tillåt hantering av Live-TV inspelningar", "OptionAllowMediaPlayback": "Tillåt mediauppspelning", - "OptionAllowMediaPlaybackTranscodingHelp": "Att förhindra åtkomst till omkodning kan orsaka uppspelningsfel i Jellyfin-appar på grund av mediaformat som inte stöds.", + "OptionAllowMediaPlaybackTranscodingHelp": "Att förhindra åtkomst till omkodning kan orsaka uppspelningsfel i klienter på grund av mediaformat som inte stöds.", "OptionAllowRemoteControlOthers": "Tillåt fjärrstyrning av andra användare", "OptionAllowRemoteSharedDevices": "Tillåt fjärrstyrning av delade enheter", "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheter betraktas som delade tills en användare börjar kontrollera den.", @@ -1160,7 +1160,7 @@ "LabelPlayMethod": "Spelmetod:", "LabelPlayerDimensions": "Spelare dimensioner:", "LabelPasswordResetProvider": "Lösenords Återställning Leverantör:", - "LabelBaseUrlHelp": "Lägger till en anpassad undermapp till serverns URL. Som exempel: http://example.com/<baseurl>", + "LabelBaseUrlHelp": "Lägg till en anpassad undermapp till serverns URL. Till exempel: http://example.com/<baseurl>", "LabelCorruptedFrames": "Skadade ramar:", "HeaderParentalRatings": "Föräldrabetyg", "HeaderNavigation": "Navigering", @@ -1281,7 +1281,7 @@ "SaveChanges": "Spara ändringar", "LabelRequireHttps": "Kräv HTTPS", "LabelChromecastVersion": "Chromecast-version", - "LabelEnableHttpsHelp": "Gör det möjligt för servern att lyssna på den konfigurerade HTTPS-porten. Ett giltigt certifikat måste också konfigureras för att detta ska fungera.", + "LabelEnableHttpsHelp": "Lyssna på den konfigurerade HTTPS-porten. Ett giltigt certifikat måste också läggas till för att detta ska fungera.", "LabelEnableHttps": "Aktivera HTTPS", "HeaderServerAddressSettings": "Serveradressinställningar", "HeaderRemoteAccessSettings": "Inställningar för fjärråtkomst", @@ -1346,5 +1346,11 @@ "MessageNoGenresAvailable": "Aktivera vissa metadataleverantörer att hämta genrer från internet.", "LabelRepositoryNameHelp": "Ett eget namn för att särskilja denna förvaringsplats från andra tillagda på din server.", "Other": "Annat", - "Preview": "Förhandsvisning" + "Preview": "Förhandsvisning", + "NextTrack": "Hoppa över till nästa", + "MusicVideos": "Musikvideor", + "LabelUnstable": "Ostabil", + "LabelIconMaxResHelp": "Högsta tillåtna upplösning för ikoner som visas via egenskapen upnp:icon.", + "LabelAlbumArtMaxResHelp": "Högsta tillåtna upplösning för albumomslag som visas via egenskapen upnp:albumArtURI.", + "Image": "Bild" } From c8848c2be8032859cff8b8327d6f0b0cf2da84b4 Mon Sep 17 00:00:00 2001 From: Vijay Raghav Date: Thu, 3 Sep 2020 18:31:42 +0000 Subject: [PATCH 206/582] 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, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index db550c1930..2b5483787f 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -10,7 +10,7 @@ "AddToPlaylist": "பட்டியலில் சேர்", "AirDate": "ஒளிபரப்பப்பட்ட தேதி", "AsManyAsPossible": "முடிந்தவரை பல", - "Artists": "கலைஞர்", + "Artists": "கலைஞர்கள்", "Artist": "கலைஞர்", "Art": "கலை", "AroundTime": "சுற்றி", @@ -70,7 +70,7 @@ "ValueSpecialEpisodeName": "சிறப்பு - {0}", "Sync": "ஒத்திசைவு", "Songs": "பாடல்கள்", - "Shows": "தொடர்கள்", + "Shows": "நிகழ்ச்சிகள்", "Playlists": "தொடர் பட்டியல்கள்", "Photos": "புகைப்படங்கள்", "Movies": "திரைப்படங்கள்", From 28928ead7cfb101f7b8d55fd21361e0bcfb0fa44 Mon Sep 17 00:00:00 2001 From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com> Date: Thu, 3 Sep 2020 16:19:35 -0500 Subject: [PATCH 207/582] Modified to work with latest server code --- .../quickConnectSettings.js | 39 ++------ src/controllers/dashboard/quickconnect.js | 5 +- src/controllers/session/login/index.js | 93 ++++++++----------- src/controllers/user/quickConnect/index.js | 2 - src/strings/en-us.json | 1 + 5 files changed, 51 insertions(+), 89 deletions(-) diff --git a/src/components/quickConnectSettings/quickConnectSettings.js b/src/components/quickConnectSettings/quickConnectSettings.js index 35f051a121..a62cfc2298 100644 --- a/src/components/quickConnectSettings/quickConnectSettings.js +++ b/src/components/quickConnectSettings/quickConnectSettings.js @@ -5,21 +5,14 @@ export class QuickConnectSettings { constructor() { } authorize(code) { - let url = ApiClient.getUrl('/QuickConnect/Authorize'); + let url = ApiClient.getUrl('/QuickConnect/Authorize?Code=' + code); ApiClient.ajax({ type: 'POST', - url: url, - data: { - 'Code': code - } + url: url }, true).then(() => { - require(['toast'], function (toast) { - toast(globalize.translate('QuickConnectAuthorizeSuccess')); - }); + toast(globalize.translate('QuickConnectAuthorizeSuccess')); }).catch(() => { - require(['toast'], function (toast) { - toast(globalize.translate('QuickConnectAuthorizeFail')); - }); + toast(globalize.translate('QuickConnectAuthorizeFail')); }); // prevent bubbling @@ -30,28 +23,16 @@ export class QuickConnectSettings { let url = ApiClient.getUrl('/QuickConnect/Activate'); return ApiClient.ajax({ type: 'POST', - url: url, - contentType: 'application/json', - dataType: 'json' - }).then((json) => { - let message = json.Error; - - if (message && message !== '') { - console.error('Error activating quick connect. Error: ', json.Error); - - Dashboard.alert({ - title: 'Unable to activate quick connect', - message: message - }); - - return false; - } - + url: url + }).then(() => { toast(globalize.translate('QuickConnectActivationSuccessful')); - return true; }).catch((e) => { console.error('Error activating quick connect. Error:', e); + Dashboard.alert({ + title: globalize.translate('HeaderError'), + message: globalize.translate('DefaultErrorMessage') + }); throw e; }); } diff --git a/src/controllers/dashboard/quickconnect.js b/src/controllers/dashboard/quickconnect.js index 22f4781b7d..9d08bb6b48 100644 --- a/src/controllers/dashboard/quickconnect.js +++ b/src/controllers/dashboard/quickconnect.js @@ -26,13 +26,10 @@ import loading from 'loading'; let newStatus = page.querySelector('#chkQuickConnectAvailable').checked ? 'Available' : 'Unavailable'; - let url = ApiClient.getUrl('/QuickConnect/Available'); + let url = ApiClient.getUrl('/QuickConnect/Available?Status=' + newStatus); ApiClient.ajax({ type: 'POST', - data: { - 'Status': newStatus - }, url: url }, true).then(() => { require(['toast'], function (toast) { diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js index d0446de099..aa5c8cc2d2 100644 --- a/src/controllers/session/login/index.js +++ b/src/controllers/session/login/index.js @@ -154,71 +154,56 @@ import 'emby-checkbox'; }); } + // FIXME: Clicking ok on the code dialog redirects back to the homepage. function loginQuickConnect() { let apiClient = getApiClient(); - let friendlyName = navigator.userAgent; - let url = apiClient.getUrl('/QuickConnect/Initiate?FriendlyName=' + friendlyName); - apiClient.getJSON(url) - .then(json => { - if (!json.Secret || !json.Code) { - console.error('Malformed quick connect response', json); - return false; - } + let url = apiClient.getUrl('/QuickConnect/Initiate'); + apiClient.getJSON(url).then(function (json) { + if (!json.Secret || !json.Code) { + console.error('Malformed quick connect response', json); + return false; + } - Dashboard.alert({ - message: Globalize.translate('QuickConnectAuthorizeCode', json.Code), - title: Globalize.translate('QuickConnect') - }); + Dashboard.alert({ + message: globalize.translate('QuickConnectAuthorizeCode', json.Code), + title: globalize.translate('QuickConnect') + }); - loading.show(); - - let interval = setInterval(async function() { - try { - let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret); - let data = await apiClient.getJSON(connectUrl); - if (data.Authenticated) { - let result = await apiClient.quickConnect(data.Authentication); - let user = result.User; - let serverId = getParameterByName('serverid'); - let newUrl = 'home.html'; - - if (user.Policy.IsAdministrator && !serverId) { - newUrl = 'dashboard.html'; - } - - loading.hide(); - Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient); - Dashboard.navigate(newUrl); - clearInterval(interval); - - return true; - } - } catch (e) { - Dashboard.alert({ - message: 'Quick connect was deactivated before the login request could be approved', - title: 'Unexpected error' - }); - - console.error('Unable to login with quick connect', e); - clearInterval(interval); - loading.hide(); + let interval = setInterval(function() { + let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret); + apiClient.getJSON(connectUrl).then(async function(data) { + if (!data.Authenticated) { + return; } - return false; - }, 5000); + clearInterval(interval); - return true; - }).catch((e) => { - Dashboard.alert({ - message: Globalize.translate('QuickConnectNotActive'), - title: 'Error' + let result = await apiClient.quickConnect(data.Authentication); + Dashboard.onServerChanged(result.User.Id, result.AccessToken, apiClient); + Dashboard.navigate('home.html'); + }, function (e) { + clearInterval(interval); + + Dashboard.alert({ + message: globalize.translate('QuickConnectDeactivated'), + title: globalize.translate('HeaderError') + }); + + console.error('Unable to login with quick connect', e); }); + }, 5000); - console.error('Quick connect error: ', e); - - return false; + return true; + }, function(e) { + Dashboard.alert({ + message: globalize.translate('QuickConnectNotActive'), + title: globalize.translate('HeaderError') }); + + console.error('Quick connect error: ', e); + return false; + }); } view.querySelector('#divUsers').addEventListener('click', function (e) { diff --git a/src/controllers/user/quickConnect/index.js b/src/controllers/user/quickConnect/index.js index 80543a0b58..2d6f4b15c8 100644 --- a/src/controllers/user/quickConnect/index.js +++ b/src/controllers/user/quickConnect/index.js @@ -73,6 +73,4 @@ export default function (view) { throw e; }); } - - renderPage(); } diff --git a/src/strings/en-us.json b/src/strings/en-us.json index b46020794e..b4442ee0f9 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1156,6 +1156,7 @@ "QuickConnectAuthorizeCode": "Authorize request {0} to continue", "QuickConnectAuthorizeSuccess": "Request authorized", "QuickConnectAuthorizeFail": "Unknown quick connect code", + "QuickConnectDeactivated": "Quick connect was deactivated before the login request could be approved", "QuickConnectDescription": "To sign in with quick connect, select the Quick Connect button on the device you are logging in from and enter the displayed code below.", "QuickConnectInvalidCode": "Invalid quick connect code", "QuickConnectNotAvailable": "Ask your server administrator to enable quick connect", From 723472aca58a0cc4a4cfbbcbaea8267e83341c48 Mon Sep 17 00:00:00 2001 From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com> Date: Thu, 3 Sep 2020 16:51:15 -0500 Subject: [PATCH 208/582] Complete modifications to work with latest server code --- src/controllers/dashboard/quickconnect.js | 7 +- src/controllers/session/login/index.js | 115 ++++++++++--------- src/controllers/user/quickConnect/index.html | 2 +- src/controllers/user/quickConnect/index.js | 20 +--- src/quickconnect.html | 2 +- src/strings/en-us.json | 2 +- 6 files changed, 71 insertions(+), 77 deletions(-) diff --git a/src/controllers/dashboard/quickconnect.js b/src/controllers/dashboard/quickconnect.js index 9d08bb6b48..012f7b7aa3 100644 --- a/src/controllers/dashboard/quickconnect.js +++ b/src/controllers/dashboard/quickconnect.js @@ -1,4 +1,6 @@ import loading from 'loading'; +import toast from 'toast'; +import globalize from 'globalize'; /* eslint-disable indent */ @@ -32,10 +34,7 @@ import loading from 'loading'; type: 'POST', url: url }, true).then(() => { - require(['toast'], function (toast) { - toast('Settings saved'); - }); - + toast(globalize.translate('SettingsSaved')); setTimeout(updatePage, 500); return true; diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js index aa5c8cc2d2..c49ed0aee6 100644 --- a/src/controllers/session/login/index.js +++ b/src/controllers/session/login/index.js @@ -19,8 +19,7 @@ import 'emby-checkbox'; var user = result.User; loading.hide(); - Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient); - Dashboard.navigate('home.html'); + onLoginSuccessful(user.Id, result.AccessToken, apiClient); }, function (response) { page.querySelector('#txtManualName').value = ''; page.querySelector('#txtManualPassword').value = ''; @@ -41,6 +40,60 @@ import 'emby-checkbox'; }); } + function authenticateQuickConnect(apiClient) { + let url = apiClient.getUrl('/QuickConnect/Initiate'); + apiClient.getJSON(url).then(function (json) { + if (!json.Secret || !json.Code) { + console.error('Malformed quick connect response', json); + return false; + } + + Dashboard.alert({ + message: globalize.translate('QuickConnectAuthorizeCode', json.Code), + title: globalize.translate('QuickConnect') + }); + + let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret); + + let interval = setInterval(function() { + apiClient.getJSON(connectUrl).then(async function(data) { + if (!data.Authenticated) { + return; + } + + clearInterval(interval); + + let result = await apiClient.quickConnect(data.Authentication); + onLoginSuccessful(result.User.Id, result.AccessToken, apiClient); + }, function (e) { + clearInterval(interval); + + Dashboard.alert({ + message: globalize.translate('QuickConnectDeactivated'), + title: globalize.translate('HeaderError') + }); + + console.error('Unable to login with quick connect', e); + }); + }, 5000, connectUrl); + + return true; + }, function(e) { + Dashboard.alert({ + message: globalize.translate('QuickConnectNotActive'), + title: globalize.translate('HeaderError') + }); + + console.error('Quick connect error: ', e); + return false; + }); + } + + function onLoginSuccessful(id, accessToken, apiClient) { + Dashboard.onServerChanged(id, accessToken, apiClient); + Dashboard.navigate('home.html'); + } + function showManualForm(context, showCancel, focusPassword) { context.querySelector('.chkRememberLogin').checked = appSettings.enableAutoLogin(); context.querySelector('.manualLoginForm').classList.remove('hide'); @@ -154,58 +207,6 @@ import 'emby-checkbox'; }); } - // FIXME: Clicking ok on the code dialog redirects back to the homepage. - function loginQuickConnect() { - let apiClient = getApiClient(); - - let url = apiClient.getUrl('/QuickConnect/Initiate'); - apiClient.getJSON(url).then(function (json) { - if (!json.Secret || !json.Code) { - console.error('Malformed quick connect response', json); - return false; - } - - Dashboard.alert({ - message: globalize.translate('QuickConnectAuthorizeCode', json.Code), - title: globalize.translate('QuickConnect') - }); - - let interval = setInterval(function() { - let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret); - apiClient.getJSON(connectUrl).then(async function(data) { - if (!data.Authenticated) { - return; - } - - clearInterval(interval); - - let result = await apiClient.quickConnect(data.Authentication); - Dashboard.onServerChanged(result.User.Id, result.AccessToken, apiClient); - Dashboard.navigate('home.html'); - }, function (e) { - clearInterval(interval); - - Dashboard.alert({ - message: globalize.translate('QuickConnectDeactivated'), - title: globalize.translate('HeaderError') - }); - - console.error('Unable to login with quick connect', e); - }); - }, 5000); - - return true; - }, function(e) { - Dashboard.alert({ - message: globalize.translate('QuickConnectNotActive'), - title: globalize.translate('HeaderError') - }); - - console.error('Quick connect error: ', e); - return false; - }); - } - view.querySelector('#divUsers').addEventListener('click', function (e) { const card = dom.parentWithClass(e.target, 'card'); const cardContent = card ? card.querySelector('.cardContent') : null; @@ -239,7 +240,11 @@ import 'emby-checkbox'; Dashboard.navigate('forgotpassword.html'); }); view.querySelector('.btnCancel').addEventListener('click', showVisualForm); - view.querySelector('.btnQuick').addEventListener('click', loginQuickConnect); + view.querySelector('.btnQuick').addEventListener('click', function () { + const apiClient = getApiClient(); + authenticateQuickConnect(apiClient); + return false; + }); view.querySelector('.btnManual').addEventListener('click', function () { view.querySelector('#txtManualName').value = ''; showManualForm(view, true); diff --git a/src/controllers/user/quickConnect/index.html b/src/controllers/user/quickConnect/index.html index 5f698a4a6b..15df59ff17 100644 --- a/src/controllers/user/quickConnect/index.html +++ b/src/controllers/user/quickConnect/index.html @@ -1,4 +1,4 @@ -
    +
    diff --git a/src/controllers/user/quickConnect/index.js b/src/controllers/user/quickConnect/index.js index 2d6f4b15c8..9e8d1a3b31 100644 --- a/src/controllers/user/quickConnect/index.js +++ b/src/controllers/user/quickConnect/index.js @@ -8,10 +8,7 @@ export default function (view) { view.addEventListener('viewshow', function () { let codeElement = view.querySelector('#txtQuickConnectCode'); - quickConnectSettingsInstance = new QuickConnectSettings({ - page: view, - interval: 0 - }); + quickConnectSettingsInstance = new QuickConnectSettings(); view.querySelector('#btnQuickConnectActivate').addEventListener('click', () => { quickConnectSettingsInstance.activate(quickConnectSettingsInstance).then(() => { @@ -30,24 +27,17 @@ export default function (view) { quickConnectSettingsInstance.authorize(code); }); + view.querySelector('.quickConnectSettingsContainer').addEventListener('submit', (e) => { + e.preventDefault(); + }); + renderPage(); }); view.addEventListener('viewbeforehide', function () { if (quickConnectSettingsInstance) { quickConnectSettingsInstance.submit(); } - onDestroy(); }); - view.addEventListener('viewdestroy', function () { - onDestroy(); - }); - - function onDestroy() { - if (quickConnectSettingsInstance) { - quickConnectSettingsInstance.destroy(); - quickConnectSettingsInstance = null; - } - } function renderPage(forceActive = false) { ApiClient.getQuickConnect('Status').then((status) => { diff --git a/src/quickconnect.html b/src/quickconnect.html index 671bb88d77..b5b6d48991 100644 --- a/src/quickconnect.html +++ b/src/quickconnect.html @@ -17,7 +17,7 @@
    diff --git a/src/strings/en-us.json b/src/strings/en-us.json index b4442ee0f9..df5b6a36c6 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1153,7 +1153,7 @@ "Quality": "Quality", "QuickConnect": "Quick Connect", "QuickConnectActivationSuccessful": "Successfully activated", - "QuickConnectAuthorizeCode": "Authorize request {0} to continue", + "QuickConnectAuthorizeCode": "Enter code {0} to login", "QuickConnectAuthorizeSuccess": "Request authorized", "QuickConnectAuthorizeFail": "Unknown quick connect code", "QuickConnectDeactivated": "Quick connect was deactivated before the login request could be approved", From 50f9e3f526b1348a2288f21ac1735e8937bfd39f Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Fri, 4 Sep 2020 01:17:54 +0000 Subject: [PATCH 209/582] 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 8f13415ab9..46a0fe9b7b 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1366,5 +1366,10 @@ "PlaybackRate": "Tasa de reproducción", "MusicVideos": "Videos musicales", "Image": "Imagen", - "Data": "Datos" + "Data": "Datos", + "VideoAudio": "Video Audio", + "Photo": "Foto", + "LabelIconMaxResHelp": "Resolución máxima de los iconos expuestos a través de la propiedad upnp:icon.", + "LabelAlbumArtMaxResHelp": "Resolución máxima de la carátula del álbum expuesta a través de la propiedad upnp:albumArtURI.", + "Other": "Otro" } From c9d98c981cd8151224ad04279d1cd97965b070ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric?= Date: Fri, 4 Sep 2020 00:19:52 +0000 Subject: [PATCH 210/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index b19b61c1be..5b5333693f 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1363,5 +1363,12 @@ "MusicVideos": "Clips musicaux", "Image": "Image", "Data": "Données", - "Video": "Vidéo" + "Video": "Vidéo", + "VideoAudio": "Piste audio", + "LabelIconMaxResHelp": "Résolution maximale des icônes disponibles via la propriété upnp:icon.", + "LabelAlbumArtMaxResHelp": "Résolution maximale de la pochette disponible via la propriété upnp:albumArtURI.", + "ThumbCard": "Vignette", + "SpecialFeatures": "Particularités", + "Photo": "Photo", + "Other": "Autre" } From 315e0a25299195a4baf513c4cc4560372e8e7081 Mon Sep 17 00:00:00 2001 From: millallo Date: Fri, 4 Sep 2020 07:18:11 +0000 Subject: [PATCH 211/582] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index d1710fafd3..5078a393fe 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -416,7 +416,7 @@ "LabelAudioLanguagePreference": "Lingua audio preferita:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Aggiorna automaticamente i metadati da Internet:", "LabelBindToLocalNetworkAddress": "Assegna ad indirizzo di rete locale:", - "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.", + "LabelBindToLocalNetworkAddressHelp": "Sovrascrive l'indirizzo IP locale del server HTTP. Se lasciato vuoto, il server verrà pubblicato su tutti gli indirizzi disponibili. La Modifica di questo valore richiede il riavvio.", "LabelBirthDate": "Data di nascita:", "LabelBirthYear": "Anno di nascita:", "LabelBlastMessageInterval": "Intervallo messaggi di presenza", @@ -1353,5 +1353,21 @@ "MessageGetInstalledPluginsError": "Errore durante la generazione della lista dei plugin installati.", "MessagePluginInstallError": "Errore durante l'installazione del plugin.", "SubtitleVerticalPositionHelp": "Numero di riga in cui viene visualizzato il testo. I numeri positivi indicano dall'alto verso il basso. I numeri negativi indicano dal basso verso l'alto.", - "PlaybackRate": "Velocità di riproduzione" + "PlaybackRate": "Velocità di riproduzione", + "VideoAudio": "Audio Video", + "Video": "Video", + "Subtitle": "Sottotitolo", + "SpecialFeatures": "Caratteristiche Speciali", + "SelectServer": "Seleziona Server", + "Restart": "Riavvio", + "ResetPassword": "Reset Password", + "Profile": "Profilo", + "Poster": "Poster", + "Photo": "Foto", + "MusicVideos": "Video Musicali", + "LabelIconMaxResHelp": "Massima risoluzione delle icone esposte dalla proprietà upnp:icon.", + "LabelAlbumArtMaxResHelp": "Massima risoluzione dell'album art esposto dalla proprietà upnp:albumArtURI.", + "Image": "Immagine", + "Other": "Altro", + "Data": "Dati" } From f7183f63110832ae7fd1bfcf4db02fff657f0104 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Fri, 4 Sep 2020 06:15:36 +0000 Subject: [PATCH 212/582] 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 | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 75c8cb5a3e..940e956626 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1353,5 +1353,23 @@ "MessagePluginInstallError": "安装插件时出现错误。", "NextTrack": "下一曲", "LabelUnstable": "不稳定", - "PlaybackRate": "播放速率" + "PlaybackRate": "播放速率", + "Profile": "简介", + "LabelIconMaxResHelp": "通过 upnp:icon 属性公开的图标的最大分辨率。", + "LabelAlbumArtMaxResHelp": "通过 upnp:albumArtURI 属性公开的专辑封面的最大分辨率。", + "VideoAudio": "视频音频", + "Video": "视频", + "ThumbCard": "缩略图卡片", + "Subtitle": "字幕", + "SpecialFeatures": "特殊功能", + "SelectServer": "选择服务器", + "Restart": "重启", + "ResetPassword": "重置密码", + "PosterCard": "海报卡片", + "Poster": "海报", + "Photo": "照片", + "MusicVideos": "音乐视频", + "Image": "图片", + "Other": "其他", + "Data": "数据" } From feda3d552046681c2cc1efbda6fa2e830ca5abaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Fri, 4 Sep 2020 08:32:55 +0000 Subject: [PATCH 213/582] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 98000ccc87..c210922055 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1366,5 +1366,10 @@ "Poster": "Plakát", "MusicVideos": "Hudební videa", "Image": "Obrázek", - "Data": "Datumy" + "Data": "Datumy", + "VideoAudio": "Video audio", + "Photo": "Fotka", + "LabelIconMaxResHelp": "Maximální rozlišení ikon daných vlastností upnp:icon.", + "LabelAlbumArtMaxResHelp": "Maximální rozlišení obrázku v souboru dané vlastností upnp:albumArtURI.", + "Other": "Ostatní" } From f10535fc8c616679a611dad2046e656030fb3cc1 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Fri, 4 Sep 2020 21:45:12 +0800 Subject: [PATCH 214/582] update strings --- src/controllers/dashboard/encodingsettings.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/dashboard/encodingsettings.html b/src/controllers/dashboard/encodingsettings.html index 00fcaa53e4..388d2edbad 100644 --- a/src/controllers/dashboard/encodingsettings.html +++ b/src/controllers/dashboard/encodingsettings.html @@ -118,7 +118,7 @@
    From 8776434197afc53f476765f5e3589f754d30659e Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 4 Sep 2020 13:23:56 +0000 Subject: [PATCH 215/582] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index ba0a49a64f..1ef92bf163 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1364,5 +1364,7 @@ "Image": "Bild", "Data": "Daten", "SpecialFeatures": "Besonderheiten", - "Poster": "Poster" + "Poster": "Poster", + "Photo": "Foto", + "Other": "Sonstiges" } From 0fc921897555f9209d650c621f597fb6d4e3b839 Mon Sep 17 00:00:00 2001 From: Panopoulos Andreas Date: Fri, 4 Sep 2020 15:20:35 +0000 Subject: [PATCH 216/582] Translated using Weblate (Greek) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/el/ --- src/strings/el.json | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/strings/el.json b/src/strings/el.json index fe25734f1b..9d809703f6 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -17,7 +17,7 @@ "AllEpisodes": "Ολα τα επεισόδια", "AllLanguages": "Όλες οι γλώσσες", "AllLibraries": "Όλες οι βιβλιοθήκες", - "AllowRemoteAccess": "Να επιτρέπονται οι απομακρυσμένες συνδέσεις σε αυτόν το διακομιστή Jellyfin.", + "AllowRemoteAccess": "Να επιτρέπονται οι απομακρυσμένες συνδέσεις σε αυτόν το διακομιστή.", "AllowRemoteAccessHelp": "Εάν δεν επιλεχθεί, όλες οι απομακρυσμένες συνδέσεις θα αποκλειστούν.", "AlwaysPlaySubtitles": "Παίξτε πάντα", "AlwaysPlaySubtitlesHelp": "Οι υπότιτλοι που ταιριάζουν με τις προτιμήσεις γλώσσας θα φορτωθούν ανεξάρτητα από τη γλώσσα του ήχου.", @@ -1032,7 +1032,7 @@ "ButtonAddImage": "Προσθήκη Εικόνας", "BoxRear": "Κουτί(πίσω)", "BookLibraryHelp": "Υποστήριξη ήχου και βιβλίων κειμένου. Εξετάστε τον {0}οδηγό ονομάτων βιβλίου{1}.", - "AuthProviderHelp": "Επιλέξτε ένα Πάροχο Επαλήθευσης για να επαληθεύσετε το κωδικό αυτού του χρήστη.", + "AuthProviderHelp": "Επιλέξτε έναν πάροχο ελέγχου ταυτότητας για να επαληθεύσετε το κωδικό αυτού του χρήστη.", "AllowFfmpegThrottling": "Επιτάχυνση Διακωδικοποιησής", "AlbumArtist": "Άλμπουμ Καλλιτέχνη", "Album": "Άλμπουμ", @@ -1043,5 +1043,12 @@ "AllowFfmpegThrottlingHelp": "Όταν ένας διακωδικοποιητής ή remux φτάσει αρκετά μπροστά από την τρέχουσα θέση αναπαραγωγής, διακόψτε τη διαδικασία ώστε να καταναλώσει λιγότερους πόρους. Αυτό είναι πιο χρήσιμο όταν παρακολουθείτε χωρίς να αναζητάτε συχνά. Απενεργοποιήστε το εάν αντιμετωπίζετε προβλήματα αναπαραγωγής.", "ButtonTogglePlaylist": "Λίστα αναπαραγωγής", "ButtonSplit": "Διαχωρισμός", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "Episode": "Επεισόδιο", + "EnableDetailsBannerHelp": "Εμφάνιση εικόνας στο πάνω μέρος της σελίδας λεπτομερειών του αντικειμένου.", + "Data": "Δεδομένα", + "CopyStreamURLSuccess": "Σύνδεσμος αντιγράφηκε με επιτυχία.", + "CopyStreamURL": "Αντιγραφή Συνδέσμου Ροής", + "ClientSettings": "Ρυθμίσεις πελάτη", + "ChangingMetadataImageSettingsNewContent": "Οι αλλαγές στις ρυθμίσεις λήψης μεταδεδομένων ή εικόνων θα εφαρμοστούν μόνο στο νέο περιεχόμενο που προστίθεται στη βιβλιοθήκη σας. Για να εφαρμόσετε τις αλλαγές στους υπάρχοντες τίτλους, θα πρέπει να ανανεώσετε τα μεταδεδομένα τους χειροκίνητα." } From f8608f0760a6ee4021ebf3a1681bd24f17c839a2 Mon Sep 17 00:00:00 2001 From: millallo Date: Fri, 4 Sep 2020 13:15:32 +0000 Subject: [PATCH 217/582] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index 5078a393fe..2c7ebfd0e9 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -72,7 +72,7 @@ "ButtonRename": "Rinomina", "ButtonResetEasyPassword": "Resetta codice PIN", "ButtonResume": "Riprendi", - "ButtonRevoke": "Revocare", + "ButtonRevoke": "Revoca", "ButtonScanAllLibraries": "Scansiona Tutte le Librerie", "ButtonSelectDirectory": "Seleziona cartella", "ButtonSelectView": "Seleziona vista", @@ -237,7 +237,7 @@ "HeaderConfigureRemoteAccess": "Configura Accesso Remoto", "HeaderConfirmPluginInstallation": "Conferma Installazione Plugin", "HeaderConfirmProfileDeletion": "Conferma eliminazione profilo", - "HeaderConfirmRevokeApiKey": "Revocare Chiave API", + "HeaderConfirmRevokeApiKey": "Revoca Chiave API", "HeaderConnectToServer": "Connettersi al Server", "HeaderConnectionFailure": "Errore di connessione", "HeaderContainerProfile": "Profilo Contenitore", @@ -475,7 +475,7 @@ "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", + "LabelEnableDlnaPlayTo": "Abilita DLNA PlayTo", "LabelEnableDlnaPlayToHelp": "Individua i dispositivi attivi in rete e offre la possibilità di controllarli da remoto.", "LabelEnableDlnaServer": "Abilita server DLNA", "LabelEnableDlnaServerHelp": "Consente ai dispositivi UPnP nella tua rete di sfogliare i contenuti e riprodurli.", @@ -523,14 +523,14 @@ "LabelKodiMetadataEnableExtraThumbs": "Copia extrafanart nel campo extrathumbs", "LabelKodiMetadataEnableExtraThumbsHelp": "Quando scarichi delle immagini, queste possono essere salvate entrambe sia in extrafanart e extrathumbs per la massima compatibilità di skin con Kodi.", "LabelKodiMetadataEnablePathSubstitution": "Abilita sostituzione di percorso", - "LabelKodiMetadataEnablePathSubstitutionHelp": "Consente percorso sostituzione dei percorsi delle immagini utilizzando le impostazioni di sostituzione percorso del server.", - "LabelKodiMetadataSaveImagePaths": "Salva percorsi delle immagini all'interno dei file NFO", - "LabelKodiMetadataSaveImagePathsHelp": "Questo è consigliato se si dispone di nomi di file immagine che non sono conformi alle linee guida Kodi.", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Abilita la sostituzione del percorso delle immagini utilizzando quello del server.", + "LabelKodiMetadataSaveImagePaths": "Salva i percorsi delle immagini all'interno dei file NFO", + "LabelKodiMetadataSaveImagePathsHelp": "Questo è consigliato se si hanno i nomi dei file immagine che non sono conformi alle linee guida Kodi.", "LabelKodiMetadataUser": "Salva dati utente nei files NFO per:", - "LabelKodiMetadataUserHelp": "Salvare i dati nei filse NFO per usarli in altre applicazioni.", + "LabelKodiMetadataUserHelp": "Salva i dati di riproduzione nei file NFO per poterli poi usare in altre applicazioni.", "LabelLanNetworks": "Reti LAN:", "LabelLanguage": "Lingua:", - "LabelLineup": "Allineare:", + "LabelLineup": "Allineamento:", "LabelLocalHttpServerPortNumber": "Porta HTTP locale:", "LabelLocalHttpServerPortNumberHelp": "Porta TCP da associare al server HTTP.", "LabelLockItemToPreventChanges": "Blocca questo elemento per impedire modifiche future", @@ -627,7 +627,7 @@ "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}.", + "LabelScheduledTaskLastRan": "Ultima esecuzione {0}, durata {1}.", "LabelScreensaver": "Salvaschermo:", "LabelSeasonNumber": "Numero stagione:", "LabelSelectFolderGroups": "Raggruppa i contenuti delle seguenti cartelle in viste come Film, Musica e Serie TV:", From 560beca43840636ba22d9bf0f0f9917132b0cee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rio=20Victor=20Ribeiro=20Silva?= Date: Fri, 4 Sep 2020 16:26:49 +0000 Subject: [PATCH 218/582] 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 | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 3e749fdfe7..49e7aadfc4 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -427,7 +427,7 @@ "LabelAudioLanguagePreference": "Idioma preferido de áudio:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Atualizar automaticamente os metadados da internet:", "LabelBindToLocalNetworkAddress": "Vincular a um endereço de rede local:", - "LabelBindToLocalNetworkAddressHelp": "Opcional. Sobrepor o endereço de IP local para vincular o servidor http. Se deixar em branco, o servidor será vinculado a todos os endereços disponíveis. Para alterar este valor é necessário reiniciar.", + "LabelBindToLocalNetworkAddressHelp": "Sobrepor o endereço de IP local para vincular o servidor http. Se deixar em branco, o servidor será vinculado a todos os endereços disponíveis. Para alterar este valor é necessário reiniciar.", "LabelBirthDate": "Data de nascimento:", "LabelBirthYear": "Ano de nascimento:", "LabelBlastMessageInterval": "Intervalo das mensagens ao vivo (segundos)", @@ -1353,5 +1353,21 @@ "MessageGetInstalledPluginsError": "Um erro ocorreu durante a requisição da lista de plugins atualmente instalados.", "MessagePluginInstallError": "Um erro ocorreu durante a instalação do plugin.", "PlaybackRate": "Taxa de Reprodução", - "SubtitleVerticalPositionHelp": "Numero da linha onde o texto aparece. Números positivos indicam de cima para baixo. Números negativos indicam de baixo para cima." + "SubtitleVerticalPositionHelp": "Numero da linha onde o texto aparece. Números positivos indicam de cima para baixo. Números negativos indicam de baixo para cima.", + "VideoAudio": "Vídeo Áudio", + "Video": "Vídeo", + "Subtitle": "Legenda", + "SpecialFeatures": "Características especiais", + "SelectServer": "Selecionar Servidor", + "Restart": "Reiniciar", + "ResetPassword": "Redefinir Senha", + "Profile": "Perfil", + "Poster": "Poster", + "Photo": "Fotos", + "MusicVideos": "Clipes Musicais", + "LabelIconMaxResHelp": "Resolução máxima dos ícones expostos pela propriedade upnp:icon .", + "LabelAlbumArtMaxResHelp": "Resolução máxima da arte do álbum exposto pela propriedade upnp:albumArtURI .", + "Image": "Imagem", + "Other": "Outro", + "Data": "Dados" } From 19defe56112c76c5ebc216af2a5e890c82242a27 Mon Sep 17 00:00:00 2001 From: Thomas Schwery Date: Fri, 4 Sep 2020 20:09:02 +0000 Subject: [PATCH 219/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 5b5333693f..51977fedd5 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1370,5 +1370,6 @@ "ThumbCard": "Vignette", "SpecialFeatures": "Particularités", "Photo": "Photo", - "Other": "Autre" + "Other": "Autre", + "PosterCard": "Carte d'affiche" } From 62c46ac9a624f3debcbe7356613758c29f1523fd Mon Sep 17 00:00:00 2001 From: Pan Renzhou <1773834430@qq.com> Date: Sat, 5 Sep 2020 09:19:39 +0000 Subject: [PATCH 220/582] 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 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 3369323bd1..1a4f73d9d4 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1269,7 +1269,7 @@ "PathNotFound": "无法找到此路径。请确认路径有效并重试。", "Yadif": "YADIF", "LabelDeinterlaceMethod": "反交错方法:", - "DeinterlaceMethodHelp": "选择对隔行扫描内容进行转码时所用的反交错方法。", + "DeinterlaceMethodHelp": "选择对隔行扫描内容进行软转码时所用的反交错方法。当启用支持硬件反交错的硬件加速后,将使用硬件解码器代替此设置。", "LabelLibraryPageSize": "媒体库分页阈值:", "LabelLibraryPageSizeHelp": "设置媒体库页面每页要显示的最多媒体个数。设置为 0 以禁用分页。", "UnsupportedPlayback": "Jellyfin无法解密被DRM保护的内容,但仍然会尝试播放包括受保护内容在内的所有内容。某些文件由于被加密或包含不受支持的特性(如互动标题),在播放时可能显示为黑屏。", @@ -1370,5 +1370,6 @@ "MusicVideos": "音乐视频", "Image": "图片", "Other": "其他", - "Data": "数据" + "Data": "数据", + "UseDoubleRateDeinterlacing": "反交错时使帧率翻倍" } From 0e8caf9f0e3c76cfbe64d31ae634f342d041defa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Sat, 5 Sep 2020 13:54:24 +0000 Subject: [PATCH 221/582] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 4fe2d5504c..22a8c4ae12 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1271,7 +1271,7 @@ "LabelLibraryPageSizeHelp": "Určuje počet položek k zobrazení na stránce knihovny. Nastavte na 0 pro vypnutí stránkování.", "LabelLibraryPageSize": "Velikost stránky knihovny:", "LabelDeinterlaceMethod": "Metoda odstranění prokládání:", - "DeinterlaceMethodHelp": "Vyberte metodu odstranění prokládání obrazu při překódování obsahu.", + "DeinterlaceMethodHelp": "Vyberte způsob odstranění prokládání obrazu při softwarovém překódování obsahu. Pokud je povolena hardwarová akcelerace s podporou hardwarového odstranění prokládání, bude použita místo tohoto nastavení.", "UnsupportedPlayback": "Jellyfin nedokáže dešifrovat obsah chráněný Správou digitálních práv (DRM), ale pokusí se zobrazit veškerý obsah, včetně toho chráněného. Některé soubory se nemusí vůbec zobrazit kvůli šifrování nebo jiným nepodporovaným funkcím, např.: interaktivním názvům.", "Filter": "Filtr", "New": "Nové", @@ -1370,5 +1370,8 @@ "Photo": "Fotka", "LabelIconMaxResHelp": "Maximální rozlišení ikon daných vlastností upnp:icon.", "LabelAlbumArtMaxResHelp": "Maximální rozlišení obrázku v souboru dané vlastností upnp:albumArtURI.", - "Other": "Ostatní" + "Other": "Ostatní", + "Bwdif": "BWDIF", + "UseDoubleRateDeinterlacingHelp": "Toto nastavení při odstranění prokládání zdvojnásobuje snímkovou frekvenci, aby výsledné video vypadalo stejně plynule, jako při přehrávání prokládaného obsahu v televizi.", + "UseDoubleRateDeinterlacing": "Zdvojnásobit snímkovou frekvenci při odstranění prokládání" } From 2abc6a43b5ce00475e4fa67e248eda3ccefe6adb Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 5 Sep 2020 16:52:18 +0000 Subject: [PATCH 222/582] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 2b5483787f..f17e623a7a 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -205,7 +205,7 @@ "DeleteImage": "படத்தை நீக்கு", "DeleteDeviceConfirmation": "இந்த சாதனத்தை நீக்க விரும்புகிறீர்களா? அடுத்த முறை ஒரு பயனர் உள்நுழையும்போது அது மீண்டும் தோன்றும்.", "Delete": "அழி", - "DeinterlaceMethodHelp": "ஒன்றோடொன்று உள்ளடக்கத்தை டிரான்ஸ்கோடிங் செய்யும்போது பயன்படுத்த வேண்டிய deinterlacing முறையைத் தேர்ந்தெடுக்கவும்.", + "DeinterlaceMethodHelp": "மென்பொருளானது ஒன்றோடொன்று உள்ளடக்கத்தை டிரான்ஸ்கோடிங் செய்யும்போது பயன்படுத்த வேண்டிய செயலிழப்பு முறையைத் தேர்ந்தெடுக்கவும். வன்பொருள் முடுக்கம் ஆதரிக்கும் வன்பொருள் செயலிழப்பு இயக்கப்பட்டால், இந்த அமைப்பிற்கு பதிலாக வன்பொருள் deinterlacer பயன்படுத்தப்படும்.", "DefaultSubtitlesHelp": "உட்பொதிக்கப்பட்ட மெட்டாடேட்டாவில் இயல்புநிலை மற்றும் கட்டாயக் கொடிகளின் அடிப்படையில் வசன வரிகள் ஏற்றப்படுகின்றன. பல விருப்பங்கள் கிடைக்கும்போது மொழி விருப்பத்தேர்வுகள் கருதப்படுகின்றன.", "DefaultMetadataLangaugeDescription": "இவை உங்கள் இயல்புநிலைகள் மற்றும் ஒவ்வொரு நூலக அடிப்படையில் தனிப்பயனாக்கலாம்.", "ErrorDefault": "கோரிக்கையை செயலாக்குவதில் பிழை ஏற்பட்டது. பின்னர் மீண்டும் முயற்சிக்கவும்.", @@ -1385,5 +1385,8 @@ "Photo": "புகைப்படம்", "LabelIconMaxResHelp": "Upnp: ஐகான் வழியாக வெளிப்படும் ஐகான்களின் அதிகபட்ச தீர்மானம்.", "LabelAlbumArtMaxResHelp": "ஆல்பம் படத்தின் அதிகபட்ச தெளிவுத்திறன் upnp: albumArtURI வழியாக வெளிப்படும்.", - "Other": "மற்றவை" + "Other": "மற்றவை", + "Bwdif": "BWDIF", + "UseDoubleRateDeinterlacingHelp": "டீஇன்டர்லேசிங் செய்யும் போது இந்த அமைப்பு புலம் வீதத்தைப் பயன்படுத்துகிறது, இது பெரும்பாலும் பாப் டீஇன்டர்லேசிங் என அழைக்கப்படுகிறது, இது டிவியில் ஒன்றோடொன்று இணைக்கப்பட்ட வீடியோவைப் பார்க்கும்போது நீங்கள் பார்ப்பது போன்ற முழு இயக்கத்தையும் வழங்க வீடியோவின் பிரேம் வீதத்தை இரட்டிப்பாக்குகிறது.", + "UseDoubleRateDeinterlacing": "செயலிழக்கும்போது பிரேம் வீதத்தை இரட்டிப்பாக்குங்கள்" } From 3bbbae2e97fede1304f44e0fe0a7b7d9ddf46ae3 Mon Sep 17 00:00:00 2001 From: Ronen Hayun Date: Sat, 5 Sep 2020 19:34:59 +0000 Subject: [PATCH 223/582] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 133 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 126 insertions(+), 7 deletions(-) diff --git a/src/strings/he.json b/src/strings/he.json index 9cd60a8a72..aa9e89590b 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -33,7 +33,7 @@ "ChannelNameOnly": "ערוץ {0} בלבד", "ChannelNumber": "מספר ערוץ", "Composer": "מלחין", - "ConfigureDateAdded": "‫הגדר כיצד תאריך ההוספה נקבע בלוח המחוונים של שרת ה-Jellyfin תחת הגדרות הספרייה", + "ConfigureDateAdded": "‫הגדר כיצד תאריך ההוספה נקבע בלוח המחוונים תחת הגדרות הספרייה", "ConfirmDeleteImage": "למחוק את התמונה?", "ConfirmDeleteItem": "מחיקת פריט זה תמחק אותו הן ממערכת הקבצים והן מספריית המדיה שלך. האם אתה בטוח שברצונך להמשיך?", "ConfirmDeleteItems": "מחיקת פריטים אלה תמחק אותם הן ממערכת הקבצים והן מספריית המדיה שלך. האם אתה בטוח שברצונך להמשיך?", @@ -153,7 +153,7 @@ "LabelEnableBlastAliveMessagesHelp": "אפשר זאת אם השרת לא מזוהה כאמין על ידי מכשירי UPnP אחרים ברשת שלך.", "LabelEnableDlnaClientDiscoveryInterval": "זמן גילוי קליינטים", "LabelEnableDlnaDebugLogging": "אפשר ניהול רישום באגים בDLNA", - "LabelEnableDlnaDebugLoggingHelp": "אפשרות זו תיצור קבצי לוג גדולים יותר ועליך להשתמש בה רק על מנת לפתור תקלות.", + "LabelEnableDlnaDebugLoggingHelp": "צור קבצי לוג גדולים יותר ועליך להשתמש בה רק על מנת לפתור תקלות.", "LabelEnableDlnaPlayTo": "מאפשר ניגון DLNA ל", "LabelEnableDlnaServer": "אפשר שרת DLNA", "LabelEnableRealtimeMonitor": "אפשר מעקב בזמן אמת", @@ -411,7 +411,7 @@ "Books": "ספרים", "Absolute": "מוחלט", "AccessRestrictedTryAgainLater": "הגישה מוגבלת כרגע, נסה שוב במועד מאוחר יותר.", - "AddedOnValue": "נוספו {0}", + "AddedOnValue": "התווסף {0}", "Blacklist": "רשימה שחורה", "Banner": "באנר", "Auto": "אוטומטי", @@ -430,7 +430,7 @@ "AlwaysPlaySubtitlesHelp": "כתוביות בשפה המועדפת ייטענו ללא קשר לשפת השמע.", "AlwaysPlaySubtitles": "הפעל תמיד", "AllowRemoteAccessHelp": "אם לא מסומן, כל החיבורים המרוחקים ייחסמו.", - "AllowRemoteAccess": "אפשר חיבור מרוחק לשרת Jellyfin זה.", + "AllowRemoteAccess": "אפשר חיבור מרוחק לשרת זה.", "AllowMediaConversionHelp": "הענק או דחה גישה להמרת מדיה.", "Aired": "שודר", "AirDate": "תאריך שידור", @@ -442,7 +442,7 @@ "Channels": "ערוצים", "HeaderContinueWatching": "המשך לצפות", "AllowOnTheFlySubtitleExtraction": "אפשר חילוץ כתוביות בזמן אמת", - "AllowHWTranscodingHelp": "אפשר למלקט לקודד הזרמות בזמן אמת. זה עשוי לעזור בהפחתת הקידוד שנעשה ע\"י השרת.", + "AllowHWTranscodingHelp": "אפשר למקלט לקודד הזרמות בזמן אמת. זה עשוי לעזור בהפחתת הקידוד שנעשה ע\"י השרת.", "AllComplexFormats": "כל הפורמטים המורכבים (ASS, SSA, VOBSUB, PGS, SUB/IDX, …)", "Songs": "שירים", "Shows": "סדרות", @@ -476,7 +476,7 @@ "ButtonAddMediaLibrary": "הוסף ספריית מדיה", "ButtonAddImage": "הוסף תמונה", "AskAdminToCreateLibrary": "בקש ממנהל ליצור ספרייה.", - "Ascending": "סדר עולה", + "Ascending": "בסדר עולה", "Photos": "תמונות", "MessageConfirmShutdown": "‫האם אתה בטוח שברצונך לכבות את השרת?", "MessageConfirmRestart": "‫האם אתה בטוח שברצונך לאתחל את שרת ה-Jellyfin‏?", @@ -708,5 +708,124 @@ "OptionEnableExternalContentInSuggestions": "הפעל תוכן חיצוני בהמלצות", "OptionEnableAccessToAllLibraries": "אפשר גישה לכל הספריות", "OptionEnableAccessToAllChannels": "אפשר גישה לכל הערוצים", - "HeaderSyncPlaySelectGroup": "הצטרף לקבוצה" + "HeaderSyncPlaySelectGroup": "הצטרף לקבוצה", + "LatestFromLibrary": "{0} אחרונים", + "OptionResElement": "אלמנט res", + "LabelCustomDeviceDisplayNameHelp": "ספק שם תצוגה מותאם אישית או השאר ריק כדי להשתמש בשם המדווח על ידי המכשיר.", + "LabelCustomCssHelp": "החל סגנונות מותאמים אישית משלך על ממשק האינטרנט.", + "LabelCustomCertificatePath": "נתיב אישור SSL מותאם אישית:", + "LabelCorruptedFrames": "פריימים פגומים:", + "LabelCertificatePassword": "סיסמת האישור:", + "LabelCancelled": "מבוטל", + "LabelCache": "מטמון:", + "LabelBitrate": "קצב סיביות:", + "LabelAuthProvider": "ספק הזדהות:", + "LabelAudioCodec": "קידוד שמע:", + "LabelAudioChannels": "ערוצי שמע:", + "LabelAppName": "שם האפליקציה", + "LabelAccessStart": "שעת התחלה:", + "LabelAccessEnd": "שעת סיום:", + "LabelAccessDay": "יום בשבוע:", + "Items": "פריטים", + "Image": "תמונה", + "Horizontal": "אופקי", + "Hide": "הסתרה", + "HeaderYears": "שנים", + "HeaderVideos": "וידאו", + "HeaderVideoTypes": "סוגי וידאו", + "HeaderVideoType": "סוג וידאו", + "HeaderVideoQuality": "איכות וידאו", + "HeaderUser": "משתמש", + "HeaderUploadImage": "העלאת תמונה", + "HeaderTypeText": "הזן טקסט", + "HeaderTranscodingProfileHelp": "הוסף פרופילי קידוד כדי לציין באילו פורמטים יש להשתמש כאשר דרוש קידוד.", + "HeaderTranscodingProfile": "פרופיל קידוד", + "HeaderSyncPlayEnabled": "SyncPlay מופעל", + "HeaderSubtitleProfilesHelp": "פרופילי כתוביות מתארים את פורמטי הכתוביות הנתמכים על ידי המכשיר.", + "HeaderSubtitleProfiles": "פרופילי כתוביות", + "HeaderSubtitleProfile": "פרופיל כתוביות", + "HeaderSubtitleDownloads": "הורדות כתוביות", + "HeaderSubtitleAppearance": "מראה כתוביות", + "HeaderStartNow": "התחל עכשיו", + "HeaderServerAddressSettings": "הגדרות כתובת שרת", + "HeaderSeriesStatus": "סטטוס הסדרה", + "HeaderProfileServerSettingsHelp": "ערכים אלה שולטים כיצד השרת יציג את עצמו בפני לקוחות.", + "HeaderPlaybackError": "שגיאת הפעלה", + "HeaderPlayback": "הפעלת מדיה", + "HeaderParentalRatings": "דירוג הורים", + "HeaderOnNow": "עכשיו", + "HeaderLoginFailure": "כישלון התחברות", + "HeaderLiveTvTunerSetup": "התקנת טיונר בשידור חי", + "HeaderLibraryOrder": "סדר הספרייה", + "HeaderLibraryAccess": "גישה לספרייה", + "HeaderLatestMedia": "המדיה האחרונה", + "HeaderKodiMetadataHelp": "כדי להפעיל או להשבית מטא נתונים של NFO, ערוך ספרייה ואתר את החלק חוסך המטא נתונים.", + "HeaderInstantMix": "מיקס מיידי", + "HeaderIdentificationHeader": "כותרת זיהוי", + "HeaderIdentificationCriteriaHelp": "הזן לפחות קריטריון זיהוי אחד.", + "HeaderIdentification": "זיהוי", + "HeaderHttpsSettings": "הגדרות HTTPS", + "HeaderHttpHeaders": "כותרות HTTP", + "HeaderGuideProviders": "ספקי נתונים של מדריך טלוויזיה", + "HeaderFetcherSettings": "הגדרות שולף", + "EnableNextVideoInfoOverlayHelp": "בסוף סרטון, הציגו מידע על הסרטון הבא שיופיע בפלייליסט הנוכחי.", + "EnableDecodingColorDepth10Vp9": "אפשר פענוח חומרה של 10 סיביות עבור VP9", + "EnableDecodingColorDepth10Hevc": "אפשר פענוח חומרה של 10 סיביות עבור HEVC", + "EnableBackdropsHelp": "הצג תפאורות ברקע של כמה דפים בעת גלישה בספרייה.", + "DisplayMissingEpisodesWithinSeasonsHelp": "יש להפעיל זאת גם עבור ספריות טלוויזיה בתצורת השרת.", + "DisplayInOtherHomeScreenSections": "הצג בקטעי מסך הבית כגון המדיה העדכנית והמשיך בצפייה", + "DeinterlaceMethodHelp": "בחר בשיטת deinterlacing לשימוש בהמרת תוכנה מקושרת לתוכן. כאשר מופעלת האצת חומרה התומכת בפירוק חומרה של חומרה, ישתמש במתקן החומרה במקום בהגדרה זו.", + "DefaultSubtitlesHelp": "כתוביות נטענות על סמך ברירת המחדל והדגלים המאולצים במטא הנתונים המוטמעים. העדפות שפה נחשבות כאשר קיימות אפשרויות מרובות.", + "ColorTransfer": "העברת צבע", + "ChangingMetadataImageSettingsNewContent": "שינויים בהגדרות הורדת מטא-נתונים או גרפיקה יחולו רק על תוכן חדש שנוסף לספרייה שלך. כדי להחיל את השינויים על כותרות קיימות, יהיה עליך לרענן את המטא נתונים שלהם באופן ידני.", + "AllowFfmpegThrottlingHelp": "כאשר קידוד או remux מתקדמים מספיק ממיקום ההפעלה הנוכחי, השהה את התהליך כך שיצרוך פחות משאבים. זה שימושי ביותר בעת צפייה מבלי לחפש לעתים קרובות. כבה את זה אם אתה נתקל בבעיות הפעלה.", + "AllowFfmpegThrottling": "מצמצת קידודים", + "AllowOnTheFlySubtitleExtractionHelp": "ניתן לחלץ כתוביות מוטמעות מסרטונים ולהעביר ללקוחות בטקסט רגיל, במטרה לסייע במניעת העתקת וידאו. במערכות מסוימות זה יכול להימשך זמן רב ולגרום להפעלת הווידיאו להיתקע במהלך תהליך החילוץ. השבת אפשרות זו כדי שהכתוביות המוטמעות נצרבו בהמרת וידאו כאשר הם אינם נתמכים באופן מקורי על ידי מכשיר הלקוח.", + "HeaderDirectPlayProfile": "פרופיל נגן ישיר", + "HeaderDeviceAccess": "גישה למכשירים", + "HeaderDetectMyDevices": "זהה את המכשירים שלי", + "HeaderDefaultRecordingSettings": "הגדרות הקלטה המוגדרות כברירת מחדל", + "HeaderDateIssued": "תאריך שהונפק", + "HeaderConnectionFailure": "כשל בחיבור", + "HeaderConfirmProfileDeletion": "אשר את מחיקת הפרופיל", + "HeaderConfigureRemoteAccess": "הגדר את הגישה מרחוק", + "HeaderCodecProfile": "פרופיל קודק", + "HeaderChapterImages": "תמונות פרק", + "HeaderChannelAccess": "גישה לערוץ", + "HeaderBlockItemsWithNoRating": "חסום פריטים ללא פרטי דירוג או לא מוכרים:", + "HeaderAppearsOn": "מופיע ב", + "HeaderApp": "אפליקציה", + "ApiKeysCaption": "רשימה של מפתחות ה- API המופעלים כעת", + "HeaderAllowMediaDeletionFrom": "אפשר מחיקת מדיה מ", + "HeaderAlert": "התראה", + "HeaderAccessScheduleHelp": "צור לוח זמנים לגישה להגבלת הגישה לשעות מסוימות.", + "HeaderAccessSchedule": "לוח הזמנים לגישה", + "GuideProviderLogin": "התחברות", + "GroupBySeries": "קבץ לפי סדרה", + "Other": "אחר", + "FormatValue": "פורמט: {0}", + "FetchingData": "שולף מידע נוסף", + "Features": "מאפיינים", + "ErrorSavingTvProvider": "אירעה שגיאה בשמירת ספק הטלוויזיה. אנא וודא שהוא נגיש ונסה שוב.", + "ErrorPleaseSelectLineup": "אנא בחר מערך ונסה שוב. אם אין מערכים זמינים, אנא בדוק ששם המשתמש, הסיסמה והמיקוד שלך נכונים.", + "ErrorGettingTvLineups": "אירעה שגיאה בהורדת מערכי הטלוויזיה. אנא ודא שהמידע שלך נכון ונסה שוב.", + "ErrorDeletingItem": "אירעה שגיאה במחיקת הפריט מהשרת. אנא בדוק שיש ל- Jellyfin גישה לכתיבה לתיקיית המדיה ונסה שוב.", + "ErrorAddingXmlTvFile": "אירעה שגיאה בגישה לקובץ XMLTV. אנא ודא שהקובץ קיים ונסה שוב.", + "ErrorAddingTunerDevice": "אירעה שגיאה בהוספת מכשיר המקלט. אנא וודא שהוא נגיש ונסה שוב.", + "ErrorAddingMediaPathToVirtualFolder": "אירעה שגיאה בהוספת נתיב המדיה. אנא וודא שהנתיב תקף ול- Jellyfin יש גישה למיקום זה.", + "Episode": "פרק", + "EnableDetailsBannerHelp": "הצג תמונת באנר בראש עמוד פרטי הפריט.", + "EnableDetailsBanner": "באנר פרטים", + "EnableThemeVideosHelp": "הפעל סרטוני נושא ברקע בעת גלישה בספרייה.", + "EnableStreamLooping": "סטרימינג בשידור חי באמצעות לולאה אוטומטית", + "EnablePhotosHelp": "תמונות יזוהו ויוצגו לצד קבצי מדיה אחרים.", + "EnableNextVideoInfoOverlay": "הצג את פרטי הסרטון הבא במהלך ההפעלה", + "EnableExternalVideoPlayersHelp": "תפריט נגן חיצוני יוצג בעת התחלת השמעת הווידאו.", + "EnableDisplayMirroring": "שיקוף תצוגה", + "DisplayModeHelp": "בחר את סגנון הפריסה הרצוי לממשק.", + "Depressed": "מורד", + "Data": "נתונים", + "ColorPrimaries": "צבעים ראשיים", + "ClientSettings": "הגדרות לקוח", + "BoxSet": "מארז" } From e7552945c8651efed53397f7862d5e89e897f04a Mon Sep 17 00:00:00 2001 From: oytal Date: Sat, 5 Sep 2020 23:13:43 +0000 Subject: [PATCH 224/582] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 62ba72736f..bd1f85a55f 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1253,7 +1253,7 @@ "LabelLibraryPageSizeHelp": "Angir hvor mange elementer som vises på en bibliotekside. Velg 0 for å deaktivere oppdeling i sider.", "LabelLibraryPageSize": "Størrelse på bibliotekside:", "LabelDeinterlaceMethod": "Deinterlacing metode:", - "DeinterlaceMethodHelp": "Velg deinterlacing metoden som skal bli brukt når man transkoder interlaced innhold.", + "DeinterlaceMethodHelp": "Velg interlace metoden som skal bli brukt når man transkoder interlaced innhold.", "ButtonTogglePlaylist": "Spilleliste", "EnableBlurHashHelp": "Bilder som fortsatt lastes inn vil vises med en unik plassholder.", "EnableBlurHash": "Aktiver tåkete plassholdere for bilder", From 2a5929454323295f454226deac56c6616c110702 Mon Sep 17 00:00:00 2001 From: SaddFox Date: Sun, 6 Sep 2020 08:58:39 +0000 Subject: [PATCH 225/582] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 9bd38a5d74..a8a7cbd3a8 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -31,7 +31,7 @@ "Settings": "Nastavitve", "TabAccess": "Dostop", "TabCatalog": "Katalog", - "TabLatest": "Zadnje", + "TabLatest": "Najnovejše", "TabMusic": "Glasba", "TabMyPlugins": "Moji dodatki", "TabNetworks": "Omrezja", From 917a895c0bae1b58d7876e52e62d06cd04333bbb Mon Sep 17 00:00:00 2001 From: Etienne Date: Sun, 6 Sep 2020 09:30:36 +0000 Subject: [PATCH 226/582] 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, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index dcdfc28a0b..2ead1304be 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1269,7 +1269,7 @@ "PathNotFound": "Le chemin d'accès n'a pas pu être trouvé. Merci de le vérifier et de réessayer.", "Yadif": "YADIF", "LabelDeinterlaceMethod": "Méthode de désentrelacement :", - "DeinterlaceMethodHelp": "Sélectionnes la méthode de désentrelacement à utiliser lors du transcodage de contenu entrelacé.", + "DeinterlaceMethodHelp": "Sélectionner la méthode de désentrelacement à utiliser lors du transcodage de contenu entrelacé. Lorsque l'accélération matérielle supportant le désentrelacement matériel est activée, the désentrelaceur matériel sera utilisé à la place de ce paramètre.", "LabelLibraryPageSize": "Taille de la page de la médiathèque :", "LabelLibraryPageSizeHelp": "Définit la quantité d'éléments à afficher sur une page de médiathèque. Définir à 0 afin de désactiver la pagination.", "UnsupportedPlayback": "Jellyfin ne peut pas décoder du contenu protégé par un système de gestion des droits numériques, mais une tentative de lecture sera effectuée sur tout le contenu, y compris les titres protégés. Certains fichiers peuvent apparaître complètement noir, du fait de protections ou de fonctionnalités non supportées, comme les titres interactifs.", @@ -1370,5 +1370,6 @@ "SpecialFeatures": "Particularités", "Photo": "Photo", "Other": "Autre", - "PosterCard": "Carte d'affiche" + "PosterCard": "Affiche", + "UseDoubleRateDeinterlacing": "Multiplier par deux la fréquence d'images lors du désentrelacement" } From 655ba1987816933b12f3e9f3e78ee59d597fd543 Mon Sep 17 00:00:00 2001 From: Thomas Schwery Date: Sun, 6 Sep 2020 11:54:28 +0000 Subject: [PATCH 227/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 2ead1304be..587bc1a555 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1371,5 +1371,7 @@ "Photo": "Photo", "Other": "Autre", "PosterCard": "Affiche", - "UseDoubleRateDeinterlacing": "Multiplier par deux la fréquence d'images lors du désentrelacement" + "UseDoubleRateDeinterlacing": "Multiplier par deux la fréquence d'images lors du désentrelacement", + "Bwdif": "BWDIF", + "UseDoubleRateDeinterlacingHelp": "Ce réglage utilise la fréquence de trame lors du désentrelacement, souvent appelé \"bob deinterlacing\", qui double la fréquence d'image de la vidéo pour fournir un mouvement fluide comme en regardant une vidéo entrelacée sur un téléviseur." } From f31801c85b19f80bfca0accedff99d051ec4c399 Mon Sep 17 00:00:00 2001 From: 4d1m Date: Mon, 7 Sep 2020 08:44:40 +0000 Subject: [PATCH 228/582] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index f0bc6f47b8..f2be928cd7 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1270,7 +1270,7 @@ "YadifBob": "Gigi Bob", "Yadif": "YADIF", "LabelDeinterlaceMethod": "Metoda de intercalare:", - "DeinterlaceMethodHelp": "Selectați metoda de intercalat pe care să o utilizați la transcodarea conținutului intercalat.", + "DeinterlaceMethodHelp": "Selectați metoda de intercalat pe care să o utilizați la transcodarea software a conținutului intercalat. Când este activată accelerarea hardware care acceptă dezintercalarea hardware, va fi utilizat deinterlacerul hardware în locul acestei setări.", "UnsupportedPlayback": "Jellyfin nu poate decripta conținut protejat de DRM, dar tot conținutul va fi încercat indiferent de titlurile protejate. Unele fișiere pot părea complet negre din cauza criptării sau a altor funcții neacceptate, cum ar fi titluri interactive.", "LabelLibraryPageSizeHelp": "Setează cantitatea de elemente de afișat pe o pagină a bibliotecii. Setați la 0 pentru a dezactiva paginarea.", "LabelLibraryPageSize": "Mărimea paginii Bibliotecă:", @@ -1353,5 +1353,26 @@ "PreviousTrack": "Sari anterior", "MessageGetInstalledPluginsError": "A apărut o eroare la obținerea listei de plugin-uri instalate în prezent.", "MessagePluginInstallError": "A apărut o eroare la instalarea pluginului.", - "PlaybackRate": "Rata de redare" + "PlaybackRate": "Rata de redare", + "Bwdif": "BWDIF", + "VideoAudio": "Video Audio", + "Video": "Video", + "UseDoubleRateDeinterlacingHelp": "Această setare folosește rata cadrului la dezintercalare, adesea denumită dezintercalare bob, care dublează rata de cadre a videoclipului pentru a oferi o mișcare completă, precum ceea ce ați vedea atunci când vizionați videoclipuri intercalate pe un televizor.", + "UseDoubleRateDeinterlacing": "Dublați rata cadrelor la dezintercalare", + "ThumbCard": "Miniatură", + "Subtitle": "Subtitrare", + "SpecialFeatures": "Caracteristici Speciale", + "SelectServer": "Selectează server", + "Restart": "Redemarare", + "ResetPassword": "Resetează Parola", + "Profile": "Profil", + "PosterCard": "Afiș", + "Poster": "Afiș", + "Photo": "Fotografie", + "MusicVideos": "Videoclipuri muzicale", + "LabelIconMaxResHelp": "Rezoluția maximă a pictogramelor expuse prin proprietatea upnp:icon.", + "LabelAlbumArtMaxResHelp": "Rezoluția maximă a imaginii albumului expus prin proprietatea upnp:albumArtURI.", + "Image": "Imagine", + "Other": "Altele", + "Data": "Data" } From 05b9170b8fa6023d5869df76f03441d3c0aab1d9 Mon Sep 17 00:00:00 2001 From: linzack Date: Mon, 7 Sep 2020 14:02:57 +0000 Subject: [PATCH 229/582] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 6eaebfbf78..f65bd6b91a 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1270,7 +1270,7 @@ "LabelLibraryPageSize": "媒體庫分頁大小:", "LabelDeinterlaceMethod": "反交錯方法:", "Episode": "劇集", - "DeinterlaceMethodHelp": "選擇對隔行掃描內容進行轉檔時所用的反交錯方法。", + "DeinterlaceMethodHelp": "選擇對隔行掃描內容進行軟體轉碼時所用的反交錯方法。當硬體加速支援的硬體反交錯選項啟用時,硬體方式將取代此設定。", "BoxSet": "套裝", "UnsupportedPlayback": "Jellyfin 無法解密受 DRM 保護的內容,但仍然會嘗試播放所有內容。某些檔案由於被加密或包含如互動標題等不受支援的內容,在播放時可能會沒有畫面。", "Filter": "篩選器", @@ -1357,5 +1357,12 @@ "Poster": "海報", "MusicVideos": "音樂影片", "Image": "圖片", - "Data": "資料" + "Data": "資料", + "Subtitle": "字幕", + "SelectServer": "選擇伺服器", + "Profile": "設定檔", + "Photo": "相片", + "LabelIconMaxResHelp": "透過 upnp:icon 屬性使用的圖示最高解析度。", + "LabelAlbumArtMaxResHelp": "透過 upnp:albumArtURI 屬性使用的專輯封面最高解析度。", + "Other": "其它" } From e9caf5e336bd2830d5ebc66853d6a55b057c8aea Mon Sep 17 00:00:00 2001 From: Ian Walton Date: Mon, 7 Sep 2020 12:54:12 -0400 Subject: [PATCH 230/582] Add auto-cast feature. --- package.json | 1 + src/components/autocast.js | 49 +++++++++++++++++++ .../playback/playerSelectionMenu.js | 21 ++++++++ src/scripts/libraryMenu.js | 8 +++ src/scripts/site.js | 1 + src/strings/en-us.json | 1 + 6 files changed, 81 insertions(+) create mode 100644 src/components/autocast.js diff --git a/package.json b/package.json index 5ca5c15151..1521a1d918 100644 --- a/package.json +++ b/package.json @@ -177,6 +177,7 @@ "src/components/remotecontrol/remotecontrol.js", "src/components/sanatizefilename.js", "src/components/scrollManager.js", + "src/components/autocast.js", "src/plugins/experimentalWarnings/plugin.js", "src/plugins/sessionPlayer/plugin.js", "src/plugins/htmlAudioPlayer/plugin.js", diff --git a/src/components/autocast.js b/src/components/autocast.js new file mode 100644 index 0000000000..3572f42bb2 --- /dev/null +++ b/src/components/autocast.js @@ -0,0 +1,49 @@ +import events from 'events'; +import playbackManager from 'playbackManager'; + +export function supported() { + return typeof(Storage) !== 'undefined'; +} + +export function enable(isEnabled) { + if (!supported()) return; + + if (isEnabled) { + const currentPlayerInfo = playbackManager.getPlayerInfo(); + + if (currentPlayerInfo && currentPlayerInfo.id && currentPlayerInfo.id) { + localStorage.setItem('autocastPlayerId', currentPlayerInfo.id); + } + } else { + localStorage.removeItem('autocastPlayerId'); + } +} + +export function isEnabled() { + if (!supported()) return false; + + const playerId = localStorage.getItem('autocastPlayerId'); + const currentPlayerInfo = playbackManager.getPlayerInfo(); + + return (currentPlayerInfo && playerId && currentPlayerInfo.id === playerId); +} + +function onOpen() { + if (!supported()) return; + + const playerId = localStorage.getItem('autocastPlayerId'); + + playbackManager.getTargets().then(function (targets) { + for (var i = 0; i < targets.length; i++) { + if (targets[i].id == playerId) { + playbackManager.trySetActivePlayer(targets[i].playerName, targets[i]); + break; + } + } + }); +} + +const apiClient = window.connectionManager.currentApiClient(); +if (apiClient) { + events.on(apiClient, 'websocketopen', onOpen); +} diff --git a/src/components/playback/playerSelectionMenu.js b/src/components/playback/playerSelectionMenu.js index 7799613400..3fe5be70d8 100644 --- a/src/components/playback/playerSelectionMenu.js +++ b/src/components/playback/playerSelectionMenu.js @@ -6,6 +6,7 @@ import playbackManager from 'playbackManager'; import appRouter from 'appRouter'; import globalize from 'globalize'; import appHost from 'apphost'; +import * as autocast from 'autocast'; function mirrorItem(info, player) { var item = info.item; @@ -219,6 +220,16 @@ function showActivePlayerMenuInternal(dialogHelper, playerInfo) { html += ''; } + html += '
    '; + + if (autocast.supported()) { + html += ''; + } + html += '
    '; html += '
    '; @@ -237,6 +248,12 @@ function showActivePlayerMenuInternal(dialogHelper, playerInfo) { chkMirror.addEventListener('change', onMirrorChange); } + var chkAutoCast = dlg.querySelector('.chkAutoCast'); + + if (chkAutoCast) { + chkAutoCast.addEventListener('change', onAutoCastChange); + } + var destination = ''; var btnRemoteControl = dlg.querySelector('.btnRemoteControl'); @@ -269,6 +286,10 @@ function onMirrorChange() { playbackManager.enableDisplayMirroring(this.checked); } +function onAutoCastChange() { + autocast.enable(this.checked); +} + document.addEventListener('viewshow', function (e) { var state = e.detail.state || {}; var item = state.item; diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 04edecf198..7a332a853c 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -52,6 +52,7 @@ import 'flexStyles'; lazyLoadViewMenuBarImages(); bindMenuEvents(); + updateCastIcon(); } function getCurrentApiClient() { @@ -910,6 +911,12 @@ import 'flexStyles'; } } + function ensureHeader() { + return new Promise(function (resolve) { + window.connectionManager.user(getCurrentApiClient()).then(updateUserInHeader).then(resolve); + }); + } + let currentPageType; pageClassOn('pagebeforeshow', 'page', function (e) { if (!this.classList.contains('withTabs')) { @@ -996,6 +1003,7 @@ import 'flexStyles'; }; window.LibraryMenu = LibraryMenu; + renderHeader(); export default LibraryMenu; diff --git a/src/scripts/site.js b/src/scripts/site.js index f14670d82d..e8f00080f1 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -591,6 +591,7 @@ function initClient() { define('metadataEditor', [componentsPath + '/metadataEditor/metadataEditor'], returnFirstDependency); define('personEditor', [componentsPath + '/metadataEditor/personEditor'], returnFirstDependency); define('playerSelectionMenu', [componentsPath + '/playback/playerSelectionMenu'], returnFirstDependency); + define('autocast', [componentsPath + '/autocast'], returnFirstDependency); define('playerSettingsMenu', [componentsPath + '/playback/playersettingsmenu'], returnFirstDependency); define('playMethodHelper', [componentsPath + '/playback/playmethodhelper'], returnFirstDependency); define('brightnessOsd', [componentsPath + '/playback/brightnessosd'], returnFirstDependency); diff --git a/src/strings/en-us.json b/src/strings/en-us.json index e39199c56f..074d9c95f1 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -183,6 +183,7 @@ "EditImages": "Edit images", "EditMetadata": "Edit metadata", "EditSubtitles": "Edit subtitles", + "EnableAutoCast": "Set as Default", "EnableBackdropsHelp": "Display backdrops in the background of some pages while browsing the library.", "EnableCinemaMode": "Cinema mode", "EnableColorCodedBackgrounds": "Color coded backgrounds", From c8c8be39cda9258bebb0adf18a72062cee70d003 Mon Sep 17 00:00:00 2001 From: Ian Walton Date: Mon, 7 Sep 2020 13:10:38 -0400 Subject: [PATCH 231/582] Appease SonarCloud. --- src/components/autocast.js | 4 ++-- src/components/playback/playerSelectionMenu.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/autocast.js b/src/components/autocast.js index 3572f42bb2..4d191a62da 100644 --- a/src/components/autocast.js +++ b/src/components/autocast.js @@ -5,10 +5,10 @@ export function supported() { return typeof(Storage) !== 'undefined'; } -export function enable(isEnabled) { +export function enable(enabled) { if (!supported()) return; - if (isEnabled) { + if (enabled) { const currentPlayerInfo = playbackManager.getPlayerInfo(); if (currentPlayerInfo && currentPlayerInfo.id && currentPlayerInfo.id) { diff --git a/src/components/playback/playerSelectionMenu.js b/src/components/playback/playerSelectionMenu.js index 3fe5be70d8..dcf36dd9b4 100644 --- a/src/components/playback/playerSelectionMenu.js +++ b/src/components/playback/playerSelectionMenu.js @@ -224,8 +224,8 @@ function showActivePlayerMenuInternal(dialogHelper, playerInfo) { if (autocast.supported()) { html += ''; } From c4b1f16d12111c892eaf4edf0977d7371c2990d3 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2020 20:19:31 +0000 Subject: [PATCH 232/582] Bump material-design-icons-iconfont from 6.0.1 to 6.1.0 Bumps [material-design-icons-iconfont](https://github.com/jossef/material-design-icons-iconfont) from 6.0.1 to 6.1.0. - [Release notes](https://github.com/jossef/material-design-icons-iconfont/releases) - [Commits](https://github.com/jossef/material-design-icons-iconfont/compare/6.0.1...v6.1.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 5ca5c15151..3d04ca8de7 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "jstree": "^3.3.10", "libarchive.js": "^1.3.0", "libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-smarttv", - "material-design-icons-iconfont": "^6.0.1", + "material-design-icons-iconfont": "^6.1.0", "native-promise-only": "^0.8.0-a", "page": "^1.11.6", "query-string": "^6.13.1", diff --git a/yarn.lock b/yarn.lock index afb0f040a6..415745e59d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7066,10 +7066,10 @@ matchdep@^2.0.0: resolve "^1.4.0" stack-trace "0.0.10" -material-design-icons-iconfont@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-6.0.1.tgz#e5834ad566105013c68e1348bec7615481645434" - integrity sha512-NDC8gQD0ORRum5dkwwF8hiDzW+y4cROyu213HJa1c7ediok9lsi8TMmmSvbA51WApYbgcdE9X5u0TzgL8n4zTw== +material-design-icons-iconfont@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-6.1.0.tgz#ffad21a71f2000336fd410cbeba36ddbf301f0f2" + integrity sha512-wRJtOo1v1ch+gN8PRsj0IGJznk+kQ8mz13ds/nuhLI+Qyf/931ZlRpd92oq0IRPpZIb+bhX8pRjzIVdcPDKmiQ== mathml-tag-names@^2.0.1, mathml-tag-names@^2.1.3: version "2.1.3" From 9a12e2d354ef96079d47abafbca0b439de2ad899 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2020 20:20:07 +0000 Subject: [PATCH 233/582] Bump @babel/core from 7.11.5 to 7.11.6 Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.11.5 to 7.11.6. - [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.6/packages/babel-core) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 5ca5c15151..cf228768df 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.11.5", + "@babel/core": "^7.11.6", "@babel/eslint-parser": "^7.11.5", "@babel/eslint-plugin": "^7.11.5", "@babel/plugin-proposal-class-properties": "^7.10.1", diff --git a/yarn.lock b/yarn.lock index afb0f040a6..c5c788a6b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,13 +18,13 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.5.tgz#6ad96e2f71899ea3f9b651f0a911e85205d1ff6d" - integrity sha512-fsEANVOcZHzrsV6dMVWqpSeXClq3lNbYrfFGme6DE25FQWe7pyeYpXyx9guqUnpy466JLzZ8z4uwSr2iv60V5Q== +"@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.11.6": + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" + integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.5" + "@babel/generator" "^7.11.6" "@babel/helper-module-transforms" "^7.11.0" "@babel/helpers" "^7.10.4" "@babel/parser" "^7.11.5" @@ -38,7 +38,7 @@ lodash "^4.17.19" resolve "^1.3.2" semver "^5.4.1" - source-map "^0.6.1" + source-map "^0.5.0" "@babel/eslint-parser@^7.11.5": version "7.11.5" @@ -56,14 +56,14 @@ dependencies: eslint-rule-composer "^0.3.0" -"@babel/generator@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.5.tgz#a5582773425a468e4ba269d9a1f701fbca6a7a82" - integrity sha512-9UqHWJ4IwRTy4l0o8gq2ef8ws8UPzvtMkVKjTLAiRmza9p9V6Z+OfuNd9fB1j5Q67F+dVJtPC2sZXI8NM9br4g== +"@babel/generator@^7.11.5", "@babel/generator@^7.11.6": + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" + integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== dependencies: "@babel/types" "^7.11.5" jsesc "^2.5.1" - source-map "^0.6.1" + source-map "^0.5.0" "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" @@ -10341,7 +10341,7 @@ source-map@^0.4.2: dependencies: amdefine ">=0.0.4" -source-map@^0.5.1, source-map@^0.5.6: +source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= From ce41ee4275a8969f435cbd50393742ecae06a5d0 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2020 20:21:08 +0000 Subject: [PATCH 234/582] Bump whatwg-fetch from 3.4.0 to 3.4.1 Bumps [whatwg-fetch](https://github.com/github/fetch) from 3.4.0 to 3.4.1. - [Release notes](https://github.com/github/fetch/releases) - [Commits](https://github.com/github/fetch/compare/v3.4.0...v3.4.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 5ca5c15151..d1e13a22c4 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "sortablejs": "^1.10.2", "swiper": "^6.1.1", "webcomponents.js": "^0.7.24", - "whatwg-fetch": "^3.4.0" + "whatwg-fetch": "^3.4.1" }, "babel": { "presets": [ diff --git a/yarn.lock b/yarn.lock index afb0f040a6..81e91e5e90 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12036,10 +12036,10 @@ webworkify@^1.5.0: resolved "https://registry.yarnpkg.com/webworkify/-/webworkify-1.5.0.tgz#734ad87a774de6ebdd546e1d3e027da5b8f4a42c" integrity sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g== -whatwg-fetch@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.4.0.tgz#e11de14f4878f773fbebcde8871b2c0699af8b30" - integrity sha512-rsum2ulz2iuZH08mJkT0Yi6JnKhwdw4oeyMjokgxd+mmqYSd9cPpOQf01TIWgjxG/U4+QR+AwKq6lSbXVxkyoQ== +whatwg-fetch@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz#e5f871572d6879663fa5674c8f833f15a8425ab3" + integrity sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ== which-module@^1.0.0: version "1.0.0" From 1cb98e8f5b2c6b3d3ff9b2dd6fbc1fb63090b085 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2020 20:21:22 +0000 Subject: [PATCH 235/582] Bump swiper from 6.1.1 to 6.2.0 Bumps [swiper](https://github.com/nolimits4web/Swiper) from 6.1.1 to 6.2.0. - [Release notes](https://github.com/nolimits4web/Swiper/releases) - [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md) - [Commits](https://github.com/nolimits4web/Swiper/compare/v6.1.1...v6.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 5ca5c15151..58bd25d45b 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.0.2", "sortablejs": "^1.10.2", - "swiper": "^6.1.1", + "swiper": "^6.2.0", "webcomponents.js": "^0.7.24", "whatwg-fetch": "^3.4.0" }, diff --git a/yarn.lock b/yarn.lock index afb0f040a6..f66fa53378 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11009,10 +11009,10 @@ svgo@^1.0.0, svgo@^1.3.2: unquote "~1.1.1" util.promisify "~1.0.0" -swiper@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/swiper/-/swiper-6.1.1.tgz#1246f28557dd33968dc43e926bc6e9e9a7b3850d" - integrity sha512-w6rmEUnpuSWvzuIDJ+nTi7YQ4+pvr++zUnBO2VxkzOZbzQzcMNKNw1yj0RFEok682IHDPCs3LXSl8zSQ+zDEdw== +swiper@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/swiper/-/swiper-6.2.0.tgz#f9dafdc2ccb5d6dd2bd728c78db87605329cb50e" + integrity sha512-lOQeWRAHXwWPDu6k5cJYkf/eVRq2IUiHpMSGS143PVBg91J+2ZCXwM+Uv2sUckrZn3AMGcpcpnEBqD8Rwz9XGQ== dependencies: dom7 "^3.0.0-alpha.7" ssr-window "^3.0.0-alpha.4" From 7df79e7a8d9507c56bf24c0697c46d394a9b5993 Mon Sep 17 00:00:00 2001 From: Manuel Date: Mon, 7 Sep 2020 19:08:11 +0000 Subject: [PATCH 236/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index 0f1bd5a729..ebd6ed698c 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -65,7 +65,7 @@ "ButtonPreviousTrack": "Pista anterior", "ButtonQuickStartGuide": "Guía de inicio rápido", "ButtonRefreshGuideData": "Actualizar datos de la guía", - "ButtonRemove": "Quitar", + "ButtonRemove": "Eliminar", "ButtonRename": "Renombrar", "ButtonResetEasyPassword": "Restablecer código PIN", "ButtonResume": "Continuar", @@ -143,7 +143,7 @@ "Ended": "Finalizado", "EndsAtValue": "Termina a las {0}", "Episodes": "Episodios", - "ErrorAddingListingsToSchedulesDirect": "Ha habido un error añadiendo la alineación a tu cuenta de Schedules Direct. Schedules Direct solo permite un determinado número de alineaciones por cuenta. Necesitarás iniciar sesión en la web de Schedules Direct y quitar otras listas de tu cuenta antes de proceder.", + "ErrorAddingListingsToSchedulesDirect": "Ha habido un error al añadir la alineación a tu cuenta de Schedules Direct. Schedules Direct solo permite un determinado número de alineaciones por cuenta. Necesitarás iniciar sesión en la web de Schedules Direct y eliminar otras listas de tu cuenta antes de proceder.", "ErrorAddingMediaPathToVirtualFolder": "Ha habido un error añadiendo la ruta de los Medios. Por favor, asegúrate de que la ruta es válida y el servidor Jellyfin tiene acceso a esa ubicación.", "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.", @@ -152,7 +152,7 @@ "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", - "ExitFullscreen": "Quitar pantalla completa", + "ExitFullscreen": "Salir de pantalla completa", "ExtraLarge": "Extragrande", "ExtractChapterImagesHelp": "La extracción de imágenes de capítulos permitirá a los clientes mostrar gráficamente la selección de escenas. El proceso puede ser lento, intensivo en recursos y requerir varios gigabytes de espacio. Se ejecuta cuando se añaden vídeos y también como tarea programable por la noche. El horario es configurable en el área de tareas programadas. No se recomienda ejecutar esta tarea durante las horas pico de uso.", "FFmpegSavePathNotFound": "No se ha podido localizar ffmpeg ni ffprobe en la ruta especificada. Comprueba la ruta y vuelva a intentarlo.", @@ -291,8 +291,8 @@ "HeaderRecordingOptions": "Ajustes de grabación", "HeaderRecordingPostProcessing": "Grabación post procesamiento", "HeaderRemoteControl": "Control remoto", - "HeaderRemoveMediaFolder": "Quitar carpeta de medios", - "HeaderRemoveMediaLocation": "Quitar ubicación de medios", + "HeaderRemoveMediaFolder": "Eliminar carpeta de medios", + "HeaderRemoveMediaLocation": "Eliminar ubicación de medios", "HeaderResponseProfile": "Perfil de respuesta", "HeaderResponseProfileHelp": "Perfiles de respuesta proporcionan una forma de personalizar la información que se envía al dispositivo cuando se reproducen ciertos tipos de medios.", "HeaderRevisionHistory": "Histórico de revisiones", @@ -548,7 +548,7 @@ "LabelNumberOfGuideDays": "Número de días a descargar de la guía:", "LabelNumberOfGuideDaysHelp": "Descargar más días de la guía ofrece la posibilidad de programar grabaciones con mayor antelación y ver más listas, pero también tarda más en descargarse. Auto elegirá en función del número de canales.", "LabelOptionalNetworkPath": "Carpeta de red compartida:", - "LabelOptionalNetworkPathHelp": "Si esta carpeta se comparte en la red, el suministro de la ruta de acceso compartido de red puede permitir a las aplicaciones Jellyfin de otros dispositivos acceder directamente a los archivos multimedia.", + "LabelOptionalNetworkPathHelp": "Si esta carpeta se comparte en la red, suministrar la ruta de acceso compartido puede permitir a clientes de otros dispositivos acceder directamente a los archivos multimedia. Por ejemplo, {0} o {1}.", "LabelOriginalAspectRatio": "Relación de aspecto original:", "LabelOriginalTitle": "Título original:", "LabelOverview": "Resumen:", @@ -656,7 +656,7 @@ "LabelYoureDone": "¡Ya está!", "LabelZipCode": "Código postal:", "LabelffmpegPath": "Ruta de ffmpeg:", - "LabelffmpegPathHelp": "Carpeta donde se encuentra ffmpeg, el componente utilizado para realizar las conversiones. No la cambies a no ser que sepas lo que haces.", + "LabelffmpegPathHelp": "Ruta completa de la aplicación ffmpeg, o de la carpeta que la contiene.", "LanNetworksHelp": "Lista de direcciones IP separadas por comas o entradas de dirección IP / máscara de red para redes que se considerarán en la red local al imponer restricciones de ancho de banda. Si se establece, todas las demás direcciones IP se considerarán en la red externa y estarán sujetas a las restricciones de ancho de banda externo. Si se deja en blanco, solo se considera que la subred del servidor está en la red local.", "Large": "Grande", "LatestFromLibrary": "Reciente en {0}", @@ -697,19 +697,19 @@ "Menu": "Menú", "MessageAlreadyInstalled": "Esta versión ya está instalada.", "MessageAreYouSureDeleteSubtitles": "¿Está seguro que desea eliminar este archivo de subtítulos?", - "MessageAreYouSureYouWishToRemoveMediaFolder": "¿Está seguro de que quieres quitar esta carpeta de medios?", + "MessageAreYouSureYouWishToRemoveMediaFolder": "¿Está seguro de que quiere eliminar esta carpeta de medios?", "MessageConfirmDeleteGuideProvider": "¿Está seguro de que quieres borrar este proveedor de guía?", "MessageConfirmDeleteTunerDevice": "¿Está seguro de que quieres borrar este dispositivo?", "MessageConfirmProfileDeletion": "¿Está seguro que desea eliminar este perfil?", "MessageConfirmRecordingCancellation": "¿Está seguro que desea cancelar esta grabación?", - "MessageConfirmRemoveMediaLocation": "¿Estás seguro que quieres quitar esta ubicación?", + "MessageConfirmRemoveMediaLocation": "¿Está seguro de que quiere eliminar esta ubicación?", "MessageConfirmRestart": "¿Está seguro de que quieres reiniciar Jellyfin?", "MessageConfirmRevokeApiKey": "¿Está seguro de que quieres revocar esta clave API? Las conexiones de aplicaciones que usen la API se terminarán.", "MessageConfirmShutdown": "¿Está seguro que quiere apagar el servidor?", "MessageContactAdminToResetPassword": "Por favor, contacta con el administrador del sistema para restablecer tu contraseña.", "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.", + "MessageDirectoryPickerBSDInstruction": "Para BSD, necesitarás configurar el almacenamiento del \"FreeNAS Jail\" para permitir a Jellyfin acceder a tu biblioteca.", "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.", @@ -730,7 +730,7 @@ "MessagePleaseEnsureInternetMetadata": "Asegúrate de que la descarga de etiquetas desde internet está activada.", "MessagePleaseWait": "Por favor, espere.", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento inicia sesión en tu servidor local directamente.", - "MessagePluginInstallDisclaimer": "Las extensiones creadas por los miembros de la comunidad de Jellyfin son una buena forma de mejorar tu experiencia con características adicionales y otros beneficios. Antes de instalarlos considera los efectos que pueden tener en tu servidor Jellyfin, como escaneos de la biblioteca más largos, procesado en segundo plano adicional y una reducción de la estabilidad del sistema.", + "MessagePluginInstallDisclaimer": "Las extensiones creadas por los miembros de la comunidad son una buena forma de mejorar tu experiencia con características adicionales y otros beneficios. Antes de instalarlos considera los efectos que pueden tener en tu servidor, como escaneos de la biblioteca más largos, aumento del procesado en segundo plano o inestabilidad del sistema.", "MessageReenableUser": "Mira abajo para reactivarlo", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Se eliminarán las siguientes ubicaciones de medios de tu biblioteca:", "MessageUnableToConnectToServer": "No podemos conectar con el servidor seleccionado ahora mismo. Por favor, asegúrate de que esta funcionando e inténtalo otra vez.", @@ -909,8 +909,8 @@ "RefreshQueued": "Actualización programada.", "ReleaseDate": "Fecha de lanzamiento", "RememberMe": "Recuérdame", - "RemoveFromCollection": "Quitar de la colección", - "RemoveFromPlaylist": "Quitar de la lista de reproducción", + "RemoveFromCollection": "Eliminar de la colección", + "RemoveFromPlaylist": "Eliminar de la lista de reproducción", "Repeat": "Repetir", "RepeatAll": "Repetir todo", "RepeatEpisodes": "Repetir episodios", @@ -1271,7 +1271,7 @@ "AlbumArtist": "Artista del álbum", "Album": "Álbum", "LabelDeinterlaceMethod": "Metodo de desentrelazar:", - "DeinterlaceMethodHelp": "Seleccione el tipo de filtro que se aplicará para desentrelazar el contenido que esté entrelazado durante la conversión.", + "DeinterlaceMethodHelp": "Seleccione el tipo de filtro que se aplicará para desentrelazar el contenido que esté entrelazado durante la conversión. Si la aceleración por hardware para el desentrelazado está activada, se usará en lugar de este filtro.", "LabelLibraryPageSize": "Tamaño de la página de la biblioteca:", "LabelLibraryPageSizeHelp": "Establece la cantidad de artículos a mostrar en una página de la biblioteca. Ponlo en 0 para desactivar la paginación.", "UnsupportedPlayback": "No es posible desencriptar contenido protegido mediante DRM; sin embargo se intentará su reproducción. Algunos archivos pueden aparecer completamente negros debido a encriptación u otras características no soportadas, como títulos interactivos.", @@ -1362,5 +1362,12 @@ "SelectServer": "Seleccionar Servidor", "Restart": "Reiniciar", "ResetPassword": "Reiniciar Contraseña", - "Profile": "Perfil" + "Profile": "Perfil", + "Bwdif": "BWDIF", + "UseDoubleRateDeinterlacing": "Duplicar el número de cuadros por segundo al desentrelazar", + "Photo": "Fotografía", + "MusicVideos": "Vídeos Musicales", + "LabelIconMaxResHelp": "Máxima resolución de los iconos expuesta a través de la propiedad upnp:icon.", + "LabelAlbumArtMaxResHelp": "Máxima resolución del material artístico del álbum expuesta a través de la propiedad upnp:albumArtURI.", + "Other": "Otro" } From f269e7d9a4cffe5792a9dab9e19172af83d3d272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Tue, 8 Sep 2020 01:50:36 +0000 Subject: [PATCH 237/582] =?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 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index bd1f85a55f..a7b1363574 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1366,5 +1366,8 @@ "MusicVideos": "Musikkvideoer", "Image": "Bilde", "Data": "Data", - "Other": "Annet" + "Other": "Annet", + "VideoAudio": "Film lyd", + "Photo": "Bilde", + "LabelAlbumArtMaxResHelp": "Høyeste tillatte oppløsning for album cover som er tilgjengelig via upnp:albumArtURI." } From cb859167afb5ce6f42dd75f664127ca9f1e2fedc Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Tue, 8 Sep 2020 03:44:06 +0000 Subject: [PATCH 238/582] Translated using Weblate (Spanish (Argentina)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_AR/ --- src/strings/es-ar.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index fd46b8f8c2..521f4ef98f 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1370,5 +1370,8 @@ "Photo": "Foto", "LabelIconMaxResHelp": "Resolución máxima de los iconos expuestos a través de la propiedad upnp:icon.", "LabelAlbumArtMaxResHelp": "Resolución máxima de la carátula del álbum expuesta a través de la propiedad upnp:albumArtURI.", - "Other": "Otro" + "Other": "Otro", + "Bwdif": "BWDIF", + "UseDoubleRateDeinterlacingHelp": "Esta configuración utiliza la velocidad de campo al desentrelazar, a menudo denominado desentrelazado bob, que duplica la velocidad de fotogramas del video para proporcionar un movimiento completo como lo que vería al ver un video entrelazado en un televisor.", + "UseDoubleRateDeinterlacing": "Duplique la velocidad de fotogramas al desentrelazar" } From 0c8d3889498aae5329a4f31ff6fad41dcb554822 Mon Sep 17 00:00:00 2001 From: millallo Date: Tue, 8 Sep 2020 06:41:39 +0000 Subject: [PATCH 239/582] 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, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index de7de471a1..e56bb17d6d 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1251,7 +1251,7 @@ "OnWakeFromSleep": "Al risveglio", "Person": "Persona", "LabelDeinterlaceMethod": "Metodo di deinterlacciamento:", - "DeinterlaceMethodHelp": "Metodo di deinterlacciamento da usare durante la transcodifica.", + "DeinterlaceMethodHelp": "Metodo di deinterlacciamento da usare durante la transcodifica software. Se è abilitata l'accelerazione hardware per il deinterlacciamento, questa opzione sarà ignorata.", "Artist": "Artista", "OnApplicationStartup": "All'avvio", "EveryXHours": "Ogni {0} ore", @@ -1368,5 +1368,7 @@ "LabelAlbumArtMaxResHelp": "Massima risoluzione dell'album art esposto dalla proprietà upnp:albumArtURI.", "Image": "Immagine", "Other": "Altro", - "Data": "Dati" + "Data": "Dati", + "Bwdif": "BWDIF", + "UseDoubleRateDeinterlacing": "Raddoppia il frame rate durante il deinterlacciamento" } From afa1403769e1b5ccc0bf27e585d763a3fd888a82 Mon Sep 17 00:00:00 2001 From: Larvitar Date: Tue, 8 Sep 2020 08:40:45 +0000 Subject: [PATCH 240/582] 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, 9 insertions(+), 2 deletions(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index 0893252ce3..860d369d32 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1253,7 +1253,7 @@ "LabelLibraryPageSize": "Rozmiar strony biblioteki:", "LabelDeinterlaceMethod": "Metoda usuwania przeplotu:", "Episode": "Odcinek", - "DeinterlaceMethodHelp": "Wybierz metodę usuwania przeplotu używaną podczas transkodowania.", + "DeinterlaceMethodHelp": "Wybierz metodę usuwania przeplotu używaną podczas transkodowania. Gdy przyśpieszenie sprzętowe wspierające usuwanie przeplotu jest włączone sprzętowe usuwanie przeplotu zostanie użyte zamiast tego ustawienia.", "ClientSettings": "Ustawienia klienta", "ButtonTogglePlaylist": "Playlista", "ButtonSyncPlay": "SyncPlay", @@ -1365,5 +1365,12 @@ "Profile": "Profil", "PosterCard": "Widokówka", "Poster": "Plakat", - "MusicVideos": "Teledyski" + "MusicVideos": "Teledyski", + "VideoAudio": "Dźwięk Wideo", + "Bwdif": "BWDIF", + "UseDoubleRateDeinterlacing": "Podwój częstotliwość wyświetlania klatek podczas usuwania przeplotu", + "Photo": "Zdjęcie", + "LabelIconMaxResHelp": "Maksymalna rozdzielczość ikon udostępnianych przez upnp:icon.", + "LabelAlbumArtMaxResHelp": "Maksymalna rozdzielczość okładki albumu udostępnianej przez upnp:albumArtURI.", + "Other": "Inne" } From 64e6a114aee2754925d40724051509e52fcaa339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Miguel=20Moreno?= Date: Tue, 8 Sep 2020 18:10:46 +0000 Subject: [PATCH 241/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index ebd6ed698c..2ebe9fba2f 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1077,7 +1077,7 @@ "DirectStreamHelp2": "La transmisión directa del archivo usa muy poco procesamiento sin mínima pérdida de calidad en el vídeo.", "Director": "Dirección de", "Directors": "Directores", - "Display": "Mostrar", + "Display": "Visualización", "DisplayInMyMedia": "Mostrar en la pantalla de inicio", "DisplayInOtherHomeScreenSections": "Mostrar en las secciones de la pantalla de inicio al igual que \"últimos\" y \"continuar viendo\"", "DisplayMissingEpisodesWithinSeasons": "Mostrar episodios ausentes en las temporadas", From a2854de17f5e0f2b15148638a120bda358a27354 Mon Sep 17 00:00:00 2001 From: Dengomanolo Date: Tue, 8 Sep 2020 18:09:58 +0000 Subject: [PATCH 242/582] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index dd3dc6e960..d08244d010 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -915,19 +915,19 @@ "Banner": "Insígnia", "Backdrops": "Imagens de Fundo", "Backdrop": "Imagem de Fundo", - "AuthProviderHelp": "Seleccione um mecanismo de autenticação a ser utilizado para validar as credenciais deste utilizador.", + "AuthProviderHelp": "Selecione um mecanismo de autenticação a ser utilizado para validar as credenciais do usuário.", "Audio": "Áudio", "AspectRatio": "Proporção da tela", "Ascending": "Crescente", "Art": "Capa", - "AroundTime": "Por volta das {0}", + "AroundTime": "Por volta das", "Anytime": "Qualquer altura", "AnyLanguage": "Qualquer idioma", "Artists": "Artistas", "AsManyAsPossible": "Tantos quanto possível", "AllowedRemoteAddressesHelp": "Lista separada por vírgula de endereços IP ou entradas de máscara de IP/rede para redes que terão permissão para se conectar remotamente. Se deixado em branco, todos os endereços remotos serão permitidos.", "AllowRemoteAccessHelp": "Se desmarcada, todas as conexões remotas serão bloqueadas.", - "AllowRemoteAccess": "Permitir ligações remotas a este Servidor Jellyfin.", + "AllowRemoteAccess": "Permitir conexões remotas a este servidor.", "AllowOnTheFlySubtitleExtractionHelp": "Legendas integradas podem ser extraídas do vídeo e enviadas como texto simples para os clientes de forma a evitar transcodificação. Em certos dispositivos, esta operação pode demorar algum tempo e causar paragens de reprodução durante o processo de extração. Desative esta opção para que as legendas sejam integradas no vídeo durante a conversão para um formato suportado pelo dispositivo de destino.", "AllowOnTheFlySubtitleExtraction": "Permitir a extração de legendas em tempo real", "AllowHWTranscodingHelp": "Permita que o sintonizador transcodifique os fluxos em tempo real. Isso pode ajudar a reduzir a transcodificação exigida pelo servidor.", From 9dc2c44c98b2c76c0d10c7b0a5b3e7ace0548e7d Mon Sep 17 00:00:00 2001 From: DeruytterA Date: Tue, 8 Sep 2020 19:39:00 +0000 Subject: [PATCH 243/582] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index dcdfa80e78..05c0bdd05c 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -1231,7 +1231,7 @@ "TabStreaming": "Streamen", "AlbumArtist": "Album Artiest", "Album": "Album", - "DeinterlaceMethodHelp": "Selecteer de deinterlacingmethode die u wilt gebruiken bij het transcoderen van geïnterlinieerde inhoud.", + "DeinterlaceMethodHelp": "Selecteer de deinterlacingmethode die u wilt gebruiken bij het software transcoderen van geïnterlinieerde inhoud. Wanneer hardware versnelling ondersteuning voor hardware deinterlacing is ingeschakeld de hardware deinterlacer gaat worden gebruikt in plaats van deze instelling.", "ClientSettings": "Client instellingen", "ButtonSplit": "Splitsen", "BoxSet": "Box Set", @@ -1347,5 +1347,9 @@ "MessageGetInstalledPluginsError": "Er is een fout opgetreden bij het ophalen van de lijst met geïnstalleerde plugins.", "MessagePluginInstallError": "Er is een fout opgetreden tijdens het installeren van de plugin.", "LabelUnstable": "Niet stabiel", - "NextTrack": "Ga naar volgende" + "NextTrack": "Ga naar volgende", + "LabelAlbumArtMaxResHelp": "Maximum resolutie van het album art is blootgesteld via de eigenschap upnp:albumArtURI.", + "Image": "Afbeelding", + "Other": "Andere", + "Data": "Gegevens" } From 5f61bf8ff2d8b4710297af2f460b0bf4ed6ca066 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Tue, 8 Sep 2020 22:13:02 +0000 Subject: [PATCH 244/582] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index 144a2d4ecb..20df7a795a 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1274,7 +1274,7 @@ "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Используется информация об эпизоде из встроенных метаданных, если они доступны.", "LabelLibraryPageSizeHelp": "Устанавливается количество элементов для отображения на странице медиатеки. Установите 0 для отключения нумерации страниц.", "LabelDeinterlaceMethod": "Метод устранения гребёнки:", - "DeinterlaceMethodHelp": "Выберите метод устранения гребёнки, который будет использоваться при перекодировании чересстрочного содержания.", + "DeinterlaceMethodHelp": "Выберите метод устранения гребёнки, который будет использоваться при программном перекодировании чересстрочного содержания. Когда аппаратное ускорение поддерживающее аппаратное устранение гребёнки включено, аппаратное устранение гребёнки будет использоваться вместо этого параметра.", "UnsupportedPlayback": "Jellyfin не может расшифровать содержимое, защищенное DRM, но в любом случае будет предпринята попытка расшифровки всего содержимого, включая защищенные заголовки. Некоторые файлы могут выглядеть полностью черными из-за шифрования или других неподдерживаемых функций, таких как интерактивные заголовки.", "LabelRequireHttpsHelp": "Если этот флажок установлен, сервер будет автоматически перенаправлять все запросы через HTTP на HTTPS. Это не имеет никакого эффекта, если сервер не слушает HTTPS.", "LabelEnableHttpsHelp": "Прослушивается указанный HTTPS-порт. Чтобы это вступило в силу, также необходимо предоставить действительный сертификат.", @@ -1352,5 +1352,26 @@ "Preview": "Предварительный просмотр", "MessageGetInstalledPluginsError": "Произошла ошибка при получении списка установленных плагинов.", "MessagePluginInstallError": "Во время установки плагина произошла ошибка.", - "PlaybackRate": "Рейтинг" + "PlaybackRate": "Рейтинг", + "Bwdif": "Фильтр BWDIF", + "VideoAudio": "Видео Аудио", + "Video": "Видео", + "UseDoubleRateDeinterlacingHelp": "Этот параметр использует частоту полей при устранении гребёнки, часто называемом \"bob\", который удваивает частоту кадров видео, чтобы обеспечить полное движение, подобное просмотру чересстрочного видео на телевизоре.", + "UseDoubleRateDeinterlacing": "Удваивать частоту кадров при устранении гребёнки", + "ThumbCard": "Бегунок-карта", + "Subtitle": "Субтитры", + "SpecialFeatures": "Особенности", + "SelectServer": "Выбрать сервер", + "Restart": "Перезапустить", + "ResetPassword": "Сбросить пароль", + "Profile": "Профиль", + "PosterCard": "Постер-карта", + "Poster": "Постер", + "Photo": "Фото", + "MusicVideos": "Музыкальные видео", + "LabelIconMaxResHelp": "Максимальное разрешение значков, являемое через свойство upnp:icon.", + "LabelAlbumArtMaxResHelp": "Максимальное разрешение обложки альбома, являемое через свойство upnp:albumArtURI.", + "Image": "Рисунок", + "Other": "Другое", + "Data": "Данные" } From c947d848a0f2d6e2cb895a5c538fa34434dbdff7 Mon Sep 17 00:00:00 2001 From: Juan Date: Tue, 8 Sep 2020 23:44:15 +0000 Subject: [PATCH 245/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index 2ebe9fba2f..76ac4a9249 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1369,5 +1369,6 @@ "MusicVideos": "Vídeos Musicales", "LabelIconMaxResHelp": "Máxima resolución de los iconos expuesta a través de la propiedad upnp:icon.", "LabelAlbumArtMaxResHelp": "Máxima resolución del material artístico del álbum expuesta a través de la propiedad upnp:albumArtURI.", - "Other": "Otro" + "Other": "Otro", + "VideoAudio": "Vídeo Audio" } From 0c012f193881263f026e379fa157ee66d4d5835e Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Wed, 9 Sep 2020 01:55:18 +0000 Subject: [PATCH 246/582] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 1a4f73d9d4..a43c5efa4b 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1371,5 +1371,7 @@ "Image": "图片", "Other": "其他", "Data": "数据", - "UseDoubleRateDeinterlacing": "反交错时使帧率翻倍" + "UseDoubleRateDeinterlacing": "反交错时使帧率翻倍", + "UseDoubleRateDeinterlacingHelp": "此设置使用去隔行时的场频,通常称为 Bob 去隔行,它将视频的帧频加倍,以提供完整的运动效果,就像在电视上观看隔行视频时看到的那样。", + "Bwdif": "BWDIF" } From 0ee827bca8b43952f5c6b11fb73281437a43815b Mon Sep 17 00:00:00 2001 From: GiJaLo Date: Wed, 9 Sep 2020 10:26:21 +0000 Subject: [PATCH 247/582] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 05c0bdd05c..0138f0879c 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -1351,5 +1351,6 @@ "LabelAlbumArtMaxResHelp": "Maximum resolutie van het album art is blootgesteld via de eigenschap upnp:albumArtURI.", "Image": "Afbeelding", "Other": "Andere", - "Data": "Gegevens" + "Data": "Gegevens", + "LabelIconMaxResHelp": "Maximale resolutie van pictogrammen die worden weergegeven via de eigenschap upnp:icon." } From 42ba1e80ed01a5ebde7898466a939537702dc2cc Mon Sep 17 00:00:00 2001 From: GiJaLo Date: Wed, 9 Sep 2020 10:26:36 +0000 Subject: [PATCH 248/582] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 0138f0879c..14d47f7407 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -1352,5 +1352,6 @@ "Image": "Afbeelding", "Other": "Andere", "Data": "Gegevens", - "LabelIconMaxResHelp": "Maximale resolutie van pictogrammen die worden weergegeven via de eigenschap upnp:icon." + "LabelIconMaxResHelp": "Maximale resolutie van pictogrammen die worden weergegeven via de eigenschap upnp:icon.", + "MusicVideos": "Muziek Videos" } From 77efca12f62333ac96d96725825ee7654eb57bd1 Mon Sep 17 00:00:00 2001 From: GiJaLo Date: Wed, 9 Sep 2020 10:27:51 +0000 Subject: [PATCH 249/582] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 14d47f7407..6df9ebd5bc 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -856,7 +856,7 @@ "OptionHideUserFromLoginHelp": "Handig voor pivé of verborgen beheer accounts. De gebruiker zal handmatig moeten inloggen met een gebruikersnaam en wachtwoord.", "OptionHlsSegmentedSubtitles": "HLS gesegmenteerde ondertiteling", "OptionIgnoreTranscodeByteRangeRequests": "Transcodeer byte range-aanvragen negeren", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "Indien ingeschakeld, zullen deze verzoeken worden gehonoreerd, maar zal de byte bereik header worden genegeerd.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Deze verzoeken worden gehonoreerd, maar zal de byte bereik header worden genegeerd.", "OptionImdbRating": "IMDb Waardering", "OptionLikes": "Leuk", "OptionMissingEpisode": "Ontbrekende Afleveringen", From 1c2d22309a4bca96a933f83e172e8abd23fa1012 Mon Sep 17 00:00:00 2001 From: GiJaLo Date: Wed, 9 Sep 2020 10:28:15 +0000 Subject: [PATCH 250/582] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 46 ++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 6df9ebd5bc..02cc20c13a 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -864,9 +864,9 @@ "OptionOnInterval": "Op interval", "OptionParentalRating": "Kijkwijzer classificatie", "OptionPlainStorageFolders": "Alle mappen weergeven als gewone opslagmappen", - "OptionPlainStorageFoldersHelp": "Indien ingeschakeld worden alle mappen in DIDL weergegeven als 'object.container.storageFolder' in plaats van een meer specifiek type, zoals 'object.container.person.musicArtist'.", + "OptionPlainStorageFoldersHelp": "Alle mappen in DIDL worden weergegeven als 'object.container.storageFolder' in plaats van een meer specifiek type, zoals 'object.container.person.musicArtist'.", "OptionPlainVideoItems": "Alle video's weergeven als gewone video items", - "OptionPlainVideoItemsHelp": "Indien ingeschakeld worden alle video's in DIDL weergegeven als 'object.item.videoItem' in plaats van een meer specifiek type, zoals 'object.item.videoItem.movie'.", + "OptionPlainVideoItemsHelp": "Alle video's in DIDL worden weergegeven als 'object.item.videoItem' in plaats van een meer specifiek type, zoals 'object.item.videoItem.movie'.", "OptionPlayCount": "Afspeel telling", "OptionPremiereDate": "Première Datum", "OptionReleaseDate": "Uitgave datum", @@ -876,7 +876,7 @@ "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", "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.", + "OptionSaveMetadataAsHiddenHelp": "Als u dit wijzigt, is dit van toepassing op nieuwe metagegevens die in de toekomst worden opgeslagen. Bestaande metadatabestanden worden bijgewerkt de volgende keer dat ze door de server worden opgeslagen.", "OptionSubstring": "Subtekenreeks", "OptionTrackName": "Naam van Nummer", "OptionTvdbRating": "TVDB Waardering", @@ -913,9 +913,9 @@ "PleaseAddAtLeastOneFolder": "Voeg tenminste 1 map aan deze bibliotheek toe door op de Toevoegen knop te klikken.", "PleaseConfirmPluginInstallation": "Klik op OK om te bevestigen dat u bovenstaande heeft gelezen en door wenst te gaan met het installeren van de plugin.", "PleaseEnterNameOrId": "Voer een naam of een externe ID in.", - "PleaseRestartServerName": "Herstart Jellyfin Server - {0} aub.", + "PleaseRestartServerName": "Start Jellyfin opnieuw op {0}.", "PleaseSelectTwoItems": "Selecteer ten minste twee items.", - "MessagePluginInstalled": "Het installeren van de plugin is gelukt. Jellyfin Server zal heropgestart moeten worden om de wijzigingen door te voeren.", + "MessagePluginInstalled": "De plug-in is succesvol geïnstalleerd. De server moet opnieuw worden opgestart 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", @@ -939,7 +939,7 @@ "RecordingScheduled": "Opname schema.", "Recordings": "Opnames", "Refresh": "Vernieuwen", - "RefreshDialogHelp": "Metadata wordt vernieuwd op basis van de instellingen en internet diensten die zijn ingeschakeld in het dashboard van de Jellyfin Server.", + "RefreshDialogHelp": "Metagegevens worden vernieuwd op basis van instellingen en internetservices die zijn ingeschakeld in het dashboard.", "RefreshMetadata": "Metadata vernieuwen", "RefreshQueued": "Verversen wachtrij.", "ReleaseDate": "Uitgave datum", @@ -975,10 +975,10 @@ "SeriesRecordingScheduled": "Serieopname gepland.", "SeriesSettings": "Series instellingen", "SeriesYearToPresent": "{0} - Heden", - "ServerNameIsRestarting": "Jellyfin Server - {0} is opnieuw aan het opstarten.", - "ServerNameIsShuttingDown": "Jellyfin Server - {0} is aan het afsluiten.", - "ServerRestartNeededAfterPluginInstall": "Jellyfin server zal heropgestart moeten worden na het installeren van een plugin.", - "ServerUpdateNeeded": "Deze Jellyfin Server moet worden bijgewerkt. Om de laatste versie te downloaden, gaat u naar {0}", + "ServerNameIsRestarting": "De server op {0} wordt opnieuw opgestart.", + "ServerNameIsShuttingDown": "De server op {0} wordt afgesloten.", + "ServerRestartNeededAfterPluginInstall": "Jellyfin moet opnieuw worden opgestart na het installeren van een plug-in.", + "ServerUpdateNeeded": "Deze server moet worden bijgewerkt. Ga naar {0} om de nieuwste versie te downloaden", "Settings": "Instellingen", "SettingsSaved": "Instellingen opgeslagen.", "SettingsWarning": "Het veranderen van deze waarden kunnen instabiliteit of connectiviteit storingen veroorzaken. Als u problemen ondervindt, raden wij aan de veranderingen terug te zetten naar standaard.", @@ -1174,7 +1174,7 @@ "LabelAudioBitDepth": "Audio bit diepte:", "OptionRandom": "Willekeurig", "PlaybackData": "Afspeel Data", - "PasswordResetProviderHelp": "Kies een wachtwoord reset provider om te gebruiken wanneer deze gebruiker een wachtwoord reset aanvraagt", + "PasswordResetProviderHelp": "Kies een provider voor wachtwoordherstel die moet worden gebruikt wanneer deze gebruiker een wachtwoordherstel aanvraagt.", "Screenshots": "Schermafdruk", "Series": "Series", "Trailers": "Trailers", @@ -1269,7 +1269,7 @@ "LastSeen": "Laatst bekeken {0}", "PersonRole": "als {0}", "ListPaging": "{0}-{1} van de {2}", - "WriteAccessRequired": "De Jellyfin Server vereist schrijftoegang tot deze map. Zorg evoor dat Jellyfin schrijftoegang tot de map heeft en probeer opnieuw.", + "WriteAccessRequired": "Jellyfin vereist schrijftoegang tot deze map. Zorg voor schrijftoegang en probeer het opnieuw.", "PathNotFound": "Het pad kan niet gevonden worden. Zorg ervoor dat het pad correct is en probeer opnieuw.", "Yadif": "YADIF", "SelectAdminUsername": "Selecteer een gebruikersnaam voor het beheerder account.", @@ -1353,5 +1353,25 @@ "Other": "Andere", "Data": "Gegevens", "LabelIconMaxResHelp": "Maximale resolutie van pictogrammen die worden weergegeven via de eigenschap upnp:icon.", - "MusicVideos": "Muziek Videos" + "MusicVideos": "Muziek Videos", + "Preview": "Preview", + "SubtitleVerticalPositionHelp": "Regelnummer waar tekst verschijnt. Positieve cijfers geven top-down aan. Negatieve getallen geven bottom-up aan.", + "ButtonCast": "Cast", + "Bwdif": "BWDIF", + "VideoAudio": "Video Geluid", + "Video": "Video", + "UseDoubleRateDeinterlacingHelp": "Deze instelling gebruikt de veldsnelheid bij de-interlacing, ook wel bob-de-interliniëring genoemd, waarmee de framesnelheid van de video wordt verdubbeld om volledige beweging te bieden, zoals je zou zien bij het bekijken van geïnterlinieerde video op een tv.", + "UseDoubleRateDeinterlacing": "Verdubbel de framesnelheid bij de-interliniëring", + "ThumbCard": "Thumb Card", + "Subtitle": "Ondertiteling", + "SpecialFeatures": "Speciale Features", + "SelectServer": "Selecteer Server", + "Restart": "Herstarten", + "ResetPassword": "Wachtwoord opnieuw instellen", + "Profile": "Profiel", + "PreviousTrack": "Ga naar vorige", + "PosterCard": "Poster kaart", + "Poster": "Poster", + "PlaybackRate": "Afspeelsnelheid", + "Photo": "Foto" } From fba96da9548ee7cba28a912339c910fcd90ffed2 Mon Sep 17 00:00:00 2001 From: Matt Date: Wed, 9 Sep 2020 17:34:08 -0400 Subject: [PATCH 251/582] Alpha picker only returns items starting with selected letter --- src/controllers/list.js | 2 +- src/controllers/movies/movies.js | 4 ++-- src/controllers/movies/movietrailers.js | 4 ++-- src/controllers/music/musicalbums.js | 4 ++-- src/controllers/music/musicartists.js | 4 ++-- src/controllers/shows/tvshows.js | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/controllers/list.js b/src/controllers/list.js index fe04fc18e8..07e07eeb05 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -163,7 +163,7 @@ import 'emby-scroller'; instance.setFilterStatus(hasFilters); if (instance.alphaPicker) { - query.NameStartsWithOrGreater = instance.alphaPicker.value(); + query.NameStartsWith = instance.alphaPicker.value(); } return query; diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index ab5aff9ecd..e05b1fa96a 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -25,7 +25,7 @@ import 'emby-itemscontainer'; const updateFilterControls = () => { if (this.alphaPicker) { - this.alphaPicker.value(query.NameStartsWithOrGreater); + this.alphaPicker.value(query.NameStartsWith); } }; @@ -168,7 +168,7 @@ import 'emby-itemscontainer'; if (alphaPickerElement) { alphaPickerElement.addEventListener('alphavaluechanged', function (e) { let newValue = e.detail.value; - query.NameStartsWithOrGreater = newValue; + query.NameStartsWith = newValue; query.StartIndex = 0; itemsContainer.refreshItems(); }); diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js index f2c7feada7..def55d919a 100644 --- a/src/controllers/movies/movietrailers.js +++ b/src/controllers/movies/movietrailers.js @@ -185,7 +185,7 @@ import 'emby-itemscontainer'; const updateFilterControls = (tabContent) => { const query = getQuery(tabContent); - this.alphaPicker.value(query.NameStartsWithOrGreater); + this.alphaPicker.value(query.NameStartsWith); }; const data = {}; @@ -216,7 +216,7 @@ import 'emby-itemscontainer'; alphaPickerElement.addEventListener('alphavaluechanged', function (e) { const newValue = e.detail.value; const query = getQuery(tabContent); - query.NameStartsWithOrGreater = newValue; + query.NameStartsWith = newValue; query.StartIndex = 0; reloadItems(); }); diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index 7947aa1376..42490fd2f4 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -186,7 +186,7 @@ import 'emby-itemscontainer'; const updateFilterControls = (tabContent) => { const query = getQuery(); - this.alphaPicker.value(query.NameStartsWithOrGreater); + this.alphaPicker.value(query.NameStartsWith); }; let savedQueryKey; @@ -219,7 +219,7 @@ import 'emby-itemscontainer'; alphaPickerElement.addEventListener('alphavaluechanged', function (e) { const newValue = e.detail.value; const query = getQuery(); - query.NameStartsWithOrGreater = newValue; + query.NameStartsWith = newValue; query.StartIndex = 0; reloadItems(tabContent); }); diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index 32e0a22a07..3517437622 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -169,7 +169,7 @@ import 'emby-itemscontainer'; const updateFilterControls = (tabContent) => { const query = getQuery(tabContent); - this.alphaPicker.value(query.NameStartsWithOrGreater); + this.alphaPicker.value(query.NameStartsWith); }; const data = {}; @@ -201,7 +201,7 @@ import 'emby-itemscontainer'; alphaPickerElement.addEventListener('alphavaluechanged', function (e) { const newValue = e.detail.value; const query = getQuery(tabContent); - query.NameStartsWithOrGreater = newValue; + query.NameStartsWith = newValue; query.StartIndex = 0; reloadItems(tabContent); }); diff --git a/src/controllers/shows/tvshows.js b/src/controllers/shows/tvshows.js index ef45eba0f7..fee4fd24a5 100644 --- a/src/controllers/shows/tvshows.js +++ b/src/controllers/shows/tvshows.js @@ -198,7 +198,7 @@ import 'emby-itemscontainer'; function updateFilterControls(tabContent) { const query = getQuery(tabContent); - self.alphaPicker.value(query.NameStartsWithOrGreater); + self.alphaPicker.value(query.NameStartsWith); } const self = this; @@ -231,7 +231,7 @@ import 'emby-itemscontainer'; alphaPickerElement.addEventListener('alphavaluechanged', function (e) { const newValue = e.detail.value; const query = getQuery(tabContent); - query.NameStartsWithOrGreater = newValue; + query.NameStartsWith = newValue; query.StartIndex = 0; reloadItems(tabContent); }); From e06b9ec4d05824a675f95297063243fde08c16c7 Mon Sep 17 00:00:00 2001 From: Lars Kerick Date: Thu, 10 Sep 2020 06:53:38 +0000 Subject: [PATCH 252/582] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index cd4428c124..4979faf1da 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1270,7 +1270,7 @@ "Yadif": "YADIF", "LabelLibraryPageSizeHelp": "Setzt die Anzahl der auf einer Seite angezeigten Objekte. Setze auf 0, um alle Elemente auf einer Seite anzuzeigen.", "LabelLibraryPageSize": "Bibliothek Seiten Größe:", - "DeinterlaceMethodHelp": "Wähle die Deinterlacing-Methode zum Transkodieren von Inhalten im Zeilensprungverfahren (Interlace).", + "DeinterlaceMethodHelp": "Wähle die Deinterlacing-Methode zum Transkodieren von Inhalten im Zeilensprungverfahren (Interlace). Sofern bei unterstützten Geräten Deinterlacing durch Hardwarebeschleunigung aktiviert ist, wird der Hardware-Deinterlacer anstelle dieser Einstellung verwendet.", "LabelDeinterlaceMethod": "Deinterlacing-Methode:", "UnsupportedPlayback": "Jellyfin kann keine DRM-geschützten Inhalte entschlüsseln, aber es wird versucht, alle Inhalte unabhängig davon zu entschlüsseln, einschließlich geschützter Titel. Einige Dateien können aufgrund der Verschlüsselung oder anderer nicht unterstützter Funktionen, wie z.B. interaktive Titel, komplett schwarz erscheinen.", "Filter": "Filter", From 17fb508d048f746d2ac5a68a4f647c1856a2a167 Mon Sep 17 00:00:00 2001 From: cvium Date: Thu, 10 Sep 2020 11:10:24 +0200 Subject: [PATCH 253/582] Add known proxies config option --- src/controllers/dashboard/networking.html | 5 +++++ src/controllers/dashboard/networking.js | 6 ++++++ src/strings/en-us.json | 2 ++ 3 files changed, 13 insertions(+) diff --git a/src/controllers/dashboard/networking.html b/src/controllers/dashboard/networking.html index 899d0976b7..9fb08aa661 100644 --- a/src/controllers/dashboard/networking.html +++ b/src/controllers/dashboard/networking.html @@ -43,6 +43,11 @@
    ${LanNetworksHelp}
    + +
    + +
    ${KnownProxiesHelp}
    +
    diff --git a/src/controllers/dashboard/networking.js b/src/controllers/dashboard/networking.js index a7f3076056..7fc161a90b 100644 --- a/src/controllers/dashboard/networking.js +++ b/src/controllers/dashboard/networking.js @@ -30,6 +30,11 @@ import 'emby-select'; }).filter(function (s) { return s.length > 0; }); + config.KnownProxies = form.querySelector('#txtKnownProxies').value.split(',').map(function (s) { + return s.trim(); + }).filter(function (s) { + return s.length > 0; + }); config.IsRemoteIPFilterBlacklist = form.querySelector('#selectExternalAddressFilterMode').value === 'blacklist'; config.PublicPort = form.querySelector('#txtPublicPort').value; config.PublicHttpsPort = form.querySelector('#txtPublicHttpsPort').value; @@ -108,6 +113,7 @@ import 'emby-select'; page.querySelector('#txtPublicHttpsPort').value = config.PublicHttpsPort; page.querySelector('#txtLocalAddress').value = config.LocalNetworkAddresses[0] || ''; page.querySelector('#txtLanNetworks').value = (config.LocalNetworkSubnets || []).join(', '); + page.querySelector('#txtKnownProxies').value = (config.KnownProxies || []).join(', '); page.querySelector('#txtExternalAddressFilter').value = (config.RemoteIPFilter || []).join(', '); page.querySelector('#selectExternalAddressFilterMode').value = config.IsRemoteIPFilterBlacklist ? 'blacklist' : 'whitelist'; page.querySelector('#chkRemoteAccess').checked = config.EnableRemoteAccess == null || config.EnableRemoteAccess; diff --git a/src/strings/en-us.json b/src/strings/en-us.json index e39199c56f..0f61286e92 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -451,6 +451,7 @@ "ItemCount": "{0} items", "Items": "Items", "Kids": "Kids", + "KnownProxiesHelp": "Comma separated list of IP addresses of known proxies used when connecting to your Jellyfin instance. This is required to make proper use of X-Forwarded-For headers. Requires a reboot after saving.", "Label3DFormat": "3D format:", "LabelAbortedByServerShutdown": "(Aborted by server shutdown)", "LabelAccessDay": "Day of week:", @@ -598,6 +599,7 @@ "LabelInNetworkSignInWithEasyPasswordHelp": "Use the easy pin code to sign in to clients within your local network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", "LabelInternetQuality": "Internet quality:", "LabelKeepUpTo": "Keep up to:", + "LabelKnownProxies": "Known proxies:", "LabelKidsCategories": "Children's categories:", "LabelKodiMetadataDateFormat": "Release date format:", "LabelKodiMetadataDateFormatHelp": "All dates within NFO files will be parsed using this format.", From fa7d8bf4daf4fb2aba5a706219b77d68f3b5b83a Mon Sep 17 00:00:00 2001 From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com> Date: Thu, 10 Sep 2020 15:04:06 -0500 Subject: [PATCH 254/582] Apply suggestions from code review --- .../quickConnectSettings.js | 4 - src/controllers/dashboard/quickconnect.js | 90 +++++++++---------- src/controllers/user/quickConnect/index.js | 5 -- 3 files changed, 45 insertions(+), 54 deletions(-) diff --git a/src/components/quickConnectSettings/quickConnectSettings.js b/src/components/quickConnectSettings/quickConnectSettings.js index a62cfc2298..e802f92ba1 100644 --- a/src/components/quickConnectSettings/quickConnectSettings.js +++ b/src/components/quickConnectSettings/quickConnectSettings.js @@ -36,10 +36,6 @@ export class QuickConnectSettings { throw e; }); } - - submit() { - return false; - } } export default QuickConnectSettings; diff --git a/src/controllers/dashboard/quickconnect.js b/src/controllers/dashboard/quickconnect.js index 012f7b7aa3..87c88d8a41 100644 --- a/src/controllers/dashboard/quickconnect.js +++ b/src/controllers/dashboard/quickconnect.js @@ -2,57 +2,57 @@ import loading from 'loading'; import toast from 'toast'; import globalize from 'globalize'; -/* eslint-disable indent */ +const unavailable = 'Unavailable'; +const available = 'Available'; +const active = 'Active'; +let page; - let page; - export default function(view) { - view.addEventListener('viewshow', function () { - page = this; - loading.show(); - page.querySelector('#btnQuickConnectSubmit').onclick = onSubmit; - updatePage(); - }); - } - - function loadPage(status) { - let available = status === 'Available' || status === 'Active'; - - page.querySelector('#quickConnectStatus').textContent = status.toLocaleLowerCase(); - page.querySelector('#chkQuickConnectAvailable').checked = available; - - loading.hide(); - } - - function onSubmit() { +export default function(view) { + view.addEventListener('viewshow', function () { + page = this; loading.show(); + page.querySelector('#btnQuickConnectSubmit').onclick = onSubmit; + updatePage(); + }); +} - let newStatus = page.querySelector('#chkQuickConnectAvailable').checked ? 'Available' : 'Unavailable'; +function loadPage(status) { + let check = status === available || status === active; - let url = ApiClient.getUrl('/QuickConnect/Available?Status=' + newStatus); + page.querySelector('#quickConnectStatus').textContent = status.toLocaleLowerCase(); + page.querySelector('#chkQuickConnectAvailable').checked = check; - ApiClient.ajax({ - type: 'POST', - url: url - }, true).then(() => { - toast(globalize.translate('SettingsSaved')); - setTimeout(updatePage, 500); + loading.hide(); +} - return true; - }).catch((e) => { - console.error('Unable to set quick connect status. error:', e); - }); +function onSubmit() { + loading.show(); - loading.hide(); - return false; - } + let newStatus = page.querySelector('#chkQuickConnectAvailable').checked ? available : unavailable; - function updatePage() { - ApiClient.getQuickConnect('Status').then((response) => { - loadPage(response); - return true; - }).catch((e) => { - console.error('Unable to get quick connect status. error:', e); - }); - } + let url = ApiClient.getUrl('/QuickConnect/Available?Status=' + newStatus); -/* eslint-enable indent */ + ApiClient.ajax({ + type: 'POST', + url: url + }, true).then(() => { + toast(globalize.translate('SettingsSaved')); + setTimeout(updatePage, 500); + + return true; + }).catch((e) => { + console.error('Unable to set quick connect status. error:', e); + }); + + loading.hide(); + return false; +} + +function updatePage() { + ApiClient.getQuickConnect('Status').then((response) => { + loadPage(response); + return true; + }).catch((e) => { + console.error('Unable to get quick connect status. error:', e); + }); +} diff --git a/src/controllers/user/quickConnect/index.js b/src/controllers/user/quickConnect/index.js index 9e8d1a3b31..00fc5488b9 100644 --- a/src/controllers/user/quickConnect/index.js +++ b/src/controllers/user/quickConnect/index.js @@ -33,11 +33,6 @@ export default function (view) { renderPage(); }); - view.addEventListener('viewbeforehide', function () { - if (quickConnectSettingsInstance) { - quickConnectSettingsInstance.submit(); - } - }); function renderPage(forceActive = false) { ApiClient.getQuickConnect('Status').then((status) => { From c8b6b44b7bf79c5a14055c6262b85b5af9cd7554 Mon Sep 17 00:00:00 2001 From: Deniz Date: Thu, 10 Sep 2020 17:05:39 +0000 Subject: [PATCH 255/582] Translated using Weblate (Turkish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/tr/ --- src/strings/tr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/tr.json b/src/strings/tr.json index f480257f69..9730857ea8 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -614,5 +614,6 @@ "LabelSize": "Boyut:", "LabelSimultaneousConnectionLimit": "Eşzamanlı yayın limiti:", "LabelServerName": "Sunucu adı:", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "Settings": "Ayarlar" } From eb67f3fb8893a858bcf17cd31e1f0646eeb4d899 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 10 Sep 2020 16:29:02 +0000 Subject: [PATCH 256/582] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 4979faf1da..4e3a002b86 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1365,5 +1365,10 @@ "SpecialFeatures": "Besonderheiten", "Poster": "Poster", "Photo": "Foto", - "Other": "Sonstiges" + "Other": "Sonstiges", + "Bwdif": "BWDIF", + "UseDoubleRateDeinterlacingHelp": "Diese Einstellung verwendet die Halbbildrate beim Deinterlacing, oft auch als Bob-Deinterlacing bezeichnet, die die Bildrate des Videos verdoppelt, um eine vollständige Bewegung wie beim Betrachten von Interlaced-Video auf einem Fernseher zu erzielen.", + "UseDoubleRateDeinterlacing": "Verdoppelung der Bildfrequenz beim Deinterlacing", + "LabelIconMaxResHelp": "Maximale Auflösung der Icons, die über die Eigenschaft upnp:icon bereitgestellt wird.", + "LabelAlbumArtMaxResHelp": "Maximale Auflösung des Albumcovers, die über die Eigenschaft upnp:albumArtURI bereitgestellt wird." } From 8c0e35487484cb9145a5a74abe6eb0002a6c9eb2 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Fri, 11 Sep 2020 05:08:27 +0000 Subject: [PATCH 257/582] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 296 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 286 insertions(+), 10 deletions(-) diff --git a/src/strings/id.json b/src/strings/id.json index 1d5ef06332..c7a83a9efa 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -3,8 +3,8 @@ "ButtonSignOut": "Sign out", "HeaderEasyPinCode": "Kode Pin Mudah", "HeaderSetupLibrary": "Atur pustaka media Anda", - "LabelContentType": "Tipe konten:", - "LabelCountry": "Negara:", + "LabelContentType": "Tipe konten :", + "LabelCountry": "Negara :", "LabelFinish": "Selesai", "LabelLanguage": "Bahasa:", "LabelSaveLocalMetadata": "Simpan artwork dan metadata ke dalam folder media", @@ -31,7 +31,7 @@ "Favorites": "Favorit", "Genres": "Aliran", "HeaderAlbumArtists": "Album Artis", - "HeaderContinueWatching": "Lanjutkan Menonton", + "HeaderContinueWatching": "Lanjut Menonton", "Artists": "Artis", "AllowMediaConversion": "Izinkan konversi media", "AllEpisodes": "Semua episode", @@ -203,7 +203,7 @@ "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.", + "DeinterlaceMethodHelp": "Pilih metode deinterlacing yang akan digunakan saat software mentranskode konten yang saling terkait. Ketika akselerasi perangkat keras yang mendukung penghilangan interlacing perangkat keras diaktifkan, penghilang antar-kabel perangkat keras akan digunakan alih-alih pengaturan ini.", "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", @@ -253,7 +253,7 @@ "LanNetworksHelp": "Daftar alamat IP atau entri IP / netmask yang dipisahkan koma untuk jaringan yang akan dipertimbangkan di jaringan lokal saat memberlakukan pembatasan bandwidth. Jika disetel, semua alamat IP lainnya akan dianggap berada di jaringan eksternal dan tunduk pada pembatasan bandwidth eksternal. Jika dibiarkan kosong, hanya subnet server yang dianggap berada di jaringan lokal.", "DashboardServerName": "Server : {0}", "LabelUserRemoteClientBitrateLimitHelp": "Ganti nilai global default yang ditetapkan di pengaturan pemutaran server.", - "LabelTranscodingTempPathHelp": "Tentukan jalur kustom untuk file transcode yang disajikan ke klien. Biarkan kosong untuk menggunakan default server.", + "LabelTranscodingTempPathHelp": "Tentukan lokasi kustom untuk file transcode yang disajikan ke klien. Biarkan kosong untuk menggunakan default server.", "LabelSyncPlayTimeOffset": "Pengimbangan waktu dengan server :", "LabelServerName": "Nama Server :", "LabelServerHostHelp": "192.168.1.100:8096 atau https://myserver.com", @@ -264,7 +264,7 @@ "LabelMoviePrefixHelp": "Jika prefiks diterapkan pada judul film, masukkan di sini agar server dapat menanganinya dengan benar.", "LabelLocalHttpServerPortNumberHelp": "Nomor port TCP untuk server HTTP.", "LabelLocalHttpServerPortNumber": "Nomor port HTTP lokal :", - "LabelKodiMetadataEnablePathSubstitutionHelp": "Mengaktifkan substitusi jalur dari jalur gambar menggunakan pengaturan substitusi jalur server.", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Mengaktifkan substitusi lokasi dari lokasi gambar menggunakan pengaturan substitusi lokasi server.", "LabelHttpsPortHelp": "Nomor port TCP untuk server HTTPS.", "LabelServerNameHelp": "Nama ini akan digunakan untuk mengidentifikasi server dan akan menggunakan nama host server secara default.", "LabelBaseUrlHelp": "Tambahkan subdirektori khusus ke URL server. Misalnya: http://example.com/<baseurl> ", @@ -277,7 +277,7 @@ "LabelAbortedByServerShutdown": "(Dibatalkan oleh penghentian server)", "HeaderServerSettings": "Pengaturan Server", "HeaderServerAddressSettings": "Pengaturan Alamat Server", - "HeaderSelectServerCachePathHelp": "Jelajahi atau masukkan jalur yang akan digunakan untuk file cache server. Folder harus dapat akses.", + "HeaderSelectServerCachePathHelp": "Jelajahi atau masukkan lokasi yang akan digunakan untuk file cache server. Folder harus dapat akses.", "HeaderSelectServerCachePath": "Pilih lokasi Cache Server", "HeaderProfileServerSettingsHelp": "Nilai-nilai ini mengontrol bagaimana server akan menampilkan dirinya kepada klien.", "HeaderConnectToServer": "Sambungkan ke server", @@ -348,7 +348,7 @@ "Features": "Fitur", "Favorite": "Favorit", "FastForward": "Maju cepat", - "FFmpegSavePathNotFound": "Kami tidak dapat menemukan FFmpeg menggunakan jalur yang Anda masukkan. FFprobe juga diperlukan dan harus ada di folder yang sama. Komponen ini biasanya digabungkan dalam unduhan yang sama. Harap periksa jalurnya dan coba lagi.", + "FFmpegSavePathNotFound": "Kami tidak dapat menemukan FFmpeg menggunakan lokasi yang Anda masukkan. FFprobe juga diperlukan dan harus ada di folder yang sama. Komponen ini biasanya digabungkan dalam unduhan yang sama. Harap periksa lokasi dan coba lagi.", "Extras": "Ekstra", "ExtractChapterImagesHelp": "Mengekstrak gambar bab akan memungkinkan klien untuk menampilkan menu pemilihan adegan grafis. Prosesnya bisa lambat, membutuhkan banyak sumber daya, dan mungkin memerlukan beberapa gigabyte ruang. Ini berjalan saat video ditemukan, dan juga sebagai tugas yang dijadwalkan setiap malam. Jadwal dapat dikonfigurasi di area tugas terjadwal. Tidak disarankan untuk menjalankan tugas ini selama jam penggunaan puncak.", "ExtraLarge": "Ekstra besar", @@ -360,7 +360,7 @@ "ErrorGettingTvLineups": "Terjadi kesalahan saat mengunduh daftar TV. Harap pastikan informasi Anda benar dan coba lagi.", "ErrorAddingXmlTvFile": "Ada kesalahan saat mengakses file XMLTV. Harap pastikan file tersebut ada dan coba lagi.", "ErrorAddingTunerDevice": "Terjadi kesalahan saat menambahkan perangkat tuner. Harap pastikan itu dapat diakses dan coba lagi.", - "ErrorAddingMediaPathToVirtualFolder": "Terjadi kesalahan saat menambahkan jalur media. Harap pastikan jalurnya valid dan Jellyfin memiliki akses ke lokasi itu.", + "ErrorAddingMediaPathToVirtualFolder": "Terjadi kesalahan saat menambahkan lokasi media. Harap pastikan lokasi valid dan Jellyfin memiliki akses ke lokasi itu.", "ErrorAddingListingsToSchedulesDirect": "Terjadi kesalahan saat menambahkan daftar ke akun Jadwal Langsung Anda. Jadwal Langsung hanya mengizinkan jumlah daftar terbatas per akun. Anda mungkin perlu masuk ke situs web Jadwal Langsung dan menghapus daftar orang lain dari akun Anda sebelum melanjutkan.", "Episodes": "Episodes", "Episode": "Episode", @@ -371,5 +371,281 @@ "EnableThemeVideosHelp": "Putar video tema di latar belakang saat menjelajahi pustaka.", "EnableThemeSongsHelp": "Putar lagu tema di latar belakang saat menjelajahi pustaka.", "EnableStreamLoopingHelp": "Aktifkan ini jika live streaming hanya berisi beberapa detik data dan perlu terus diminta. Mengaktifkan ini saat tidak diperlukan dapat menyebabkan masalah.", - "EnableStreamLooping": "Putar otomatis live streaming" + "EnableStreamLooping": "Putar otomatis live streaming", + "LabelEnableAutomaticPortMap": "Aktifkan pemetaan port otomatis", + "LabelEmbedAlbumArtDidlHelp": "Beberapa perangkat lebih memilih metode ini untuk mendapatkan seni album. Orang lain mungkin gagal bermain dengan opsi ini diaktifkan.", + "LabelEmbedAlbumArtDidl": "Sematkan seni album di Didl", + "LabelEasyPinCode": "Kode pin mudah :", + "LabelDynamicExternalId": "{0} Id:", + "LabelDropShadow": "Bayangan jatuh :", + "LabelDroppedFrames": "Frame jatuh :", + "LabelDropImageHere": "Lepaskan gambar di sini, atau klik untuk menelusuri.", + "LabelDownloadLanguages": "Unduh bahasa :", + "LabelDownMixAudioScaleHelp": "Tingkatkan audio saat downmixing. Nilai satu akan mempertahankan volume aslinya.", + "LabelDownMixAudioScale": "Peningkatan audio saat downmixing :", + "LabelDisplaySpecialsWithinSeasons": "Tampilkan spesial dalam musim mereka ditayangkan", + "LabelDisplayOrder": "Urutan tampilan :", + "LabelDisplayName": "Nama tampilan :", + "LabelDisplayMode": "Mode tampilan :", + "LabelDisplayLanguageHelp": "Menerjemahkan Jellyfin adalah proyek yang sedang berlangsung.", + "LabelDisplayLanguage": "Bahasa tampilan :", + "LabelDiscNumber": "Nomor disk :", + "LabelDidlMode": "Mode DIDL :", + "LabelDeviceDescription": "Deskripsi perangkat", + "LabelDeinterlaceMethod": "Metode deinterlacing :", + "LabelDefaultUserHelp": "Menentukan pustaka pengguna mana yang harus ditampilkan pada perangkat yang terhubung. Ini dapat diganti untuk setiap perangkat menggunakan profil.", + "LabelDefaultUser": "Pengguna awal :", + "LabelDefaultScreen": "Layar awal :", + "LabelDeathDate": "Tanggal kematian :", + "LabelDay": "Hari :", + "LabelDateTimeLocale": "Tanggal waktu lokal :", + "LabelDateAddedBehaviorHelp": "Jika ada nilai metadata, nilai itu akan selalu digunakan sebelum salah satu opsi ini.", + "LabelDateAddedBehavior": "Tanggal ditambahkan perilaku untuk konten baru :", + "LabelDateAdded": "Tanggal Ditambahkan :", + "LabelCustomRating": "Peringkat khusus :", + "LabelCustomDeviceDisplayNameHelp": "Berikan nama tampilan khusus atau biarkan kosong untuk menggunakan nama yang dilaporkan oleh perangkat.", + "LabelCustomCssHelp": "Terapkan gaya kustom Anda sendiri di antarmuka web.", + "LabelCustomCss": "CSS Kustom :", + "LabelCurrentPassword": "Kata sandi saat ini :", + "LabelCriticRating": "Peringkat kritik :", + "LabelCorruptedFrames": "Bingkai rusak :", + "LabelCommunityRating": "Peringkat komunitas :", + "LabelCollection": "Koleksi :", + "LabelChannels": "Saluran :", + "LabelCertificatePasswordHelp": "Jika sertifikat Anda memerlukan kata sandi, harap masukkan di sini.", + "LabelCertificatePassword": "Kata sandi sertifikat :", + "LabelCancelled": "Dibatalkan", + "LabelCache": "Cache :", + "LabelBurnSubtitles": "Membakar subtitle :", + "LabelBlockContentWithTags": "Blokir item dengan tag :", + "LabelBlastMessageIntervalHelp": "Menentukan durasi dalam detik antara pesan ledakan hidup.", + "LabelBlastMessageInterval": "Interval pesan hidup", + "LabelBitrate": "Bitrate :", + "LabelBirthYear": "Tahun lahir :", + "LabelBirthDate": "Tanggal lahir :", + "LabelBindToLocalNetworkAddress": "Ikat ke alamat jaringan lokal :", + "LabelAutomaticallyRefreshInternetMetadataEvery": "Segarkan metadata secara otomatis dari internet :", + "LabelAuthProvider": "Penyedia Otentikasi :", + "LabelAudioSampleRate": "Tingkat sampel audio :", + "LabelAudioLanguagePreference": "Bahasa audio yang disukai :", + "LabelAudioCodec": "Codec audio :", + "LabelAudioChannels": "Saluran audio :", + "LabelAudioBitrate": "Kecepatan bit audio :", + "LabelAudioBitDepth": "Kedalaman bit audio :", + "LabelArtistsHelp": "Pisahkan beberapa artis dengan titik koma.", + "LabelArtists": "Artis :", + "LabelAppNameExample": "Contoh : Sickbeard, Sonarr", + "LabelAppName": "Nama aplikasi", + "LabelAllowedRemoteAddressesMode": "Mode filter alamat IP jarak jauh :", + "LabelAllowedRemoteAddresses": "Filter alamat IP jarak jauh :", + "LabelAllowHWTranscoding": "Izinkan transcoding perangkat keras", + "LabelAlbumArtists": "Artis album :", + "LabelAlbumArtPN": "Seni album PN :", + "LabelAlbumArtMaxWidth": "Lebar maksimal seni album :", + "LabelAlbumArtMaxHeight": "Tinggi maksimal seni album :", + "LabelAlbumArtHelp": "PN digunakan untuk seni album, dalam atribut dlna : profileID di upnp : albumArtURI. Beberapa perangkat memerlukan nilai tertentu, terlepas dari ukuran gambarnya.", + "LabelAlbumArtMaxResHelp": "Resolusi maksimum seni album yang diekspos melalui properti upnp : albumArtURI.", + "LabelAlbum": "Album :", + "LabelAirsBeforeSeason": "Tayang sebelum musim :", + "LabelAirsBeforeEpisode": "Tayang setelah musim :", + "LabelAirsAfterSeason": "Tayang setelah musim :", + "LabelAirTime": "Jam tayang :", + "LabelAirDays": "Hari tayang :", + "LabelAccessStart": "Waktu mulai :", + "LabelAccessEnd": "Akhir waktu :", + "LabelAccessDay": "Hari dalam seminggu :", + "Label3DFormat": "Format 3D :", + "Kids": "Anak-anak", + "Items": "Item", + "ItemCount": "{0} item", + "InstantMix": "Instant mix", + "InstallingPackage": "Memasang {0} (versi {1})", + "ImportMissingEpisodesHelp": "Informasi tentang episode yang hilang akan diimpor ke database Anda dan ditampilkan dalam musim dan serial. Ini dapat menyebabkan pemindaian pustaka jauh lebih lama.", + "ImportFavoriteChannelsHelp": "Hanya saluran yang ditandai sebagai favorit di perangkat tuner yang akan diimpor.", + "Images": "Gambar", + "Image": "Gambar", + "Identify": "Mengenali", + "HttpsRequiresCert": "Untuk mengaktifkan koneksi aman, Anda perlu memberikan sertifikat SSL terpercaya, seperti Let's Encrypt. Harap berikan sertifikat, atau nonaktifkan koneksi aman.", + "Horizontal": "Horisontal", + "Home": "Home", + "HideWatchedContentFromLatestMedia": "Sembunyikan konten yang ditonton dari media terbaru", + "Hide": "Sembunyikan", + "Help": "Tolong", + "HeaderYears": "Tahun", + "HeaderXmlSettings": "Pengaturan Xml", + "HeaderXmlDocumentAttributes": "Atribut Dokumen Xml", + "HeaderXmlDocumentAttribute": "Atribut Dokumen Xml", + "HeaderVideos": "Video", + "HeaderVideoTypes": "Jenis Video", + "HeaderVideoType": "Jenis Video", + "HeaderVideoQuality": "Kualitas video", + "HeaderUsers": "Pengguna", + "HeaderUser": "Pengguna", + "HeaderUploadImage": "Unggah Gambar", + "HeaderUpcomingOnTV": "Yang Akan Datang Di TV", + "HeaderTypeText": "Masukkan teks", + "HeaderTypeImageFetchers": "{0} Pengambil Gambar", + "HeaderTuners": "Tuner", + "HeaderTunerDevices": "Perangkat Tuner", + "HeaderTranscodingProfileHelp": "Tambahkan profil transcoding untuk menunjukkan format mana yang harus digunakan saat transcoding diperlukan.", + "HeaderTranscodingProfile": "Profil Transcoding", + "HeaderTracks": "Trek", + "HeaderThisUserIsCurrentlyDisabled": "Pengguna saat ini dinonaktifkan", + "HeaderTaskTriggers": "Pemicu Tugas", + "HeaderSystemDlnaProfiles": "Profil Sistem", + "HeaderSyncPlayEnabled": "SyncPlay diaktifkan", + "HeaderSyncPlaySelectGroup": "Bergabung dengan grup", + "HeaderSubtitleProfilesHelp": "Profil subtitle mendeskripsikan format subtitle yang didukung oleh perangkat.", + "HeaderSubtitleProfiles": "Profil Subtitle", + "HeaderSubtitleProfile": "Profil Subtitle", + "HeaderSubtitleDownloads": "Download Subtitle", + "HeaderSubtitleAppearance": "Penampilan Subtitle", + "HeaderStopRecording": "Berhenti Merekam", + "HeaderStatus": "Status", + "HeaderStartNow": "Mulai sekarang", + "HeaderSpecialEpisodeInfo": "Info Episode Spesial", + "HeaderSortOrder": "Urutan Sortir", + "HeaderSortBy": "Sortir dengan", + "HeaderSeriesStatus": "Status Seri", + "HeaderSeriesOptions": "Opsi Seri", + "HeaderSendMessage": "Mengirim pesan", + "HeaderSecondsValue": "{0} Detik", + "HeaderSeasons": "Musim", + "HeaderScenes": "Adegan", + "HeaderRunningTasks": "Menjalankan Tugas", + "HeaderRevisionHistory": "Jejak Revisi", + "HeaderRecordingPostProcessing": "Merekam Post Processing", + "PathNotFound": "Lokasi tidak dapat ditemukan. Harap pastikan lokasinya valid dan coba lagi.", + "XmlTvPathHelp": "Lokasi ke file XMLTV. Jellyfin akan membaca file ini dan secara berkala memeriksanya untuk pembaruan. Anda bertanggung jawab untuk membuat dan memperbarui file.", + "MessageChangeRecordingPath": "Mengubah folder rekaman Anda tidak akan memindahkan rekaman yang ada dari lokasi lama ke yang baru. Anda harus memindahkannya secara manual jika diinginkan.", + "MediaInfoPath": "Lokasi", + "LabelffmpegPathHelp": "Lokasi ke file aplikasi ffmpeg atau folder yang berisi ffmpeg.", + "LabelffmpegPath": "Lokasi FFmpeg :", + "LabelTranscodePath": "Lokasi transcode :", + "LabelSeriesRecordingPath": "Lokasi perekaman seri :", + "LabelRecordingPath": "Lokasi awal perekaman :", + "LabelPostProcessorArgumentsHelp": "Gunakan {path} sebagai lokasi ke file rekaman.", + "LabelPath": "Lokasi :", + "LabelOptionalNetworkPathHelp": "Jika folder ini dibagikan di jaringan Anda, menyediakan lokasi berbagi jaringan dapat memungkinkan klien di perangkat lain untuk mengakses file media secara langsung. Misalnya, {0} atau {1}.", + "LabelOptionalNetworkPath": "Folder jaringan bersama :", + "LabelMovieRecordingPath": "Lokasi perekaman film :", + "LabelMetadataPathHelp": "Tentukan lokasi khusus untuk karya seni dan metadata yang diunduh.", + "LabelMetadataPath": "Lokasi metadata :", + "LabelKodiMetadataSaveImagePathsHelp": "Ini disarankan jika Anda memiliki nama file gambar yang tidak sesuai dengan pedoman Kodi.", + "LabelKodiMetadataSaveImagePaths": "Simpan lokasi gambar dalam file nfo", + "LabelKodiMetadataEnablePathSubstitution": "Aktifkan substitusi lokasi", + "LabelCustomCertificatePathHelp": "Lokasi ke file PKCS #12 yang berisi sertifikat dan kunci pribadi untuk mengaktifkan dukungan TLS di domain khusus.", + "LabelCustomCertificatePath": "Lokasi khusus sertifikat SSL :", + "LabelCachePath": "Lokasi cache :", + "HeaderSelectTranscodingPathHelp": "Jelajahi atau masukkan lokasi yang akan digunakan untuk file transcode. Folder tersebut harus dapat ditulisi.", + "HeaderSelectMetadataPath": "Pilih Lokasi Metadata", + "HeaderSelectCertificatePath": "Pilih Lokasi Sertifikat", + "HeaderSelectTranscodingPath": "Pilih Lokasi Transcoding Temporary", + "HeaderSelectPath": "Pilih Lokasi", + "HeaderSelectMetadataPathHelp": "Jelajahi atau masukkan lokasi yang ingin Anda gunakan untuk metadata. Folder tersebut harus dapat ditulisi.", + "HeaderRemoteAccessSettings": "Pengaturan Akses Jarak Jauh", + "HeaderResponseProfile": "Profil Tanggapan", + "HeaderRemoveMediaLocation": "Hapus Lokasi Media", + "HeaderRemoveMediaFolder": "Hapus Folder Media", + "HeaderRemoteControl": "Kontrol Jarak Jauh", + "HeaderResponseProfileHelp": "Profil respons menyediakan cara untuk menyesuaikan informasi yang dikirim ke perangkat saat memutar jenis media tertentu.", + "HeaderRecordingOptions": "Opsi Perekaman", + "HeaderRecentlyPlayed": "Terakhir diputar", + "HeaderProfileInformation": "Informasi Profil", + "HeaderPreferredMetadataLanguage": "Bahasa Metadata Pilihan", + "HeaderPluginInstallation": "Instalasi Plugin", + "HeaderPleaseSignIn": "Silakan masuk", + "HeaderPlaybackError": "Kesalahan Pemutaran", + "HeaderPlayback": "Pemutaran Media", + "HeaderPlayOn": "Mainkan", + "HeaderPlayAll": "Mainkan Semua", + "HeaderPinCodeReset": "Atur Ulang Kode Pin", + "HeaderPhotoAlbums": "Album Foto", + "HeaderPaths": "Lokasi", + "HeaderPasswordReset": "Atur Ulang Kata Sandi", + "HeaderPassword": "Kata sandi", + "HeaderParentalRatings": "Peringkat Orang Tua", + "HeaderOtherItems": "Item Lainnya", + "HeaderOnNow": "Sekarang", + "HeaderNextVideoPlayingInValue": "Video Berikutnya Diputar di {0}", + "HeaderNextEpisodePlayingInValue": "Episode Berikutnya Diputar di {0}", + "HeaderNewDevices": "Perangkat Baru", + "HeaderNewApiKey": "Kunci API Baru", + "HeaderNavigation": "Navigasi", + "HeaderMyMediaSmall": "Media Saya (kecil)", + "HeaderMyMedia": "Media Saya", + "HeaderMyDevice": "Perangkat Saya", + "HeaderMusicQuality": "Kualitas Musik", + "HeaderMoreLikeThis": "Lainnya Seperti Ini", + "HeaderMetadataSettings": "Pengaturan Metadata", + "HeaderMediaFolders": "Folder Media", + "HeaderMedia": "Media", + "HeaderLoginFailure": "Kegagalan Login", + "HeaderLiveTvTunerSetup": "Penyiapan TV Tuner Langsung", + "HeaderLibrarySettings": "Pengaturan Pustaka", + "HeaderLibraryOrder": "Memesan Pustaka", + "HeaderLibraryFolders": "Folder Pustaka", + "HeaderLibraryAccess": "Akses Pustaka", + "HeaderLibraries": "Pustaka", + "HeaderLatestRecordings": "Rekaman Terbaru", + "HeaderLatestMusic": "Musik Terbaru", + "HeaderLatestMovies": "Film Terbaru", + "HeaderLatestMedia": "Media Terbaru", + "HeaderLatestEpisodes": "Episode Terbaru", + "HeaderKodiMetadataHelp": "Untuk mengaktifkan atau menonaktifkan metadata NFO, edit perpustakaan dan temukan bagian penghemat metadata.", + "HeaderKeepSeries": "Pertahankan Seri", + "HeaderKeepRecording": "Terus Rekam", + "HeaderInstantMix": "Mix Instan", + "HeaderInstall": "Install", + "HeaderImageSettings": "Pengaturan Gambar", + "HeaderImageOptions": "Opsi Gambar", + "HeaderIdentifyItemHelp": "Masukkan satu atau lebih kriteria pencarian. Hapus kriteria untuk meningkatkan hasil pencarian.", + "HeaderIdentificationHeader": "Header Identifikasi", + "HeaderIdentificationCriteriaHelp": "Masukkan setidaknya satu kriteria identifikasi.", + "HeaderIdentification": "Identifikasi", + "HeaderHttpsSettings": "Pengaturan HTTPS", + "HeaderHttpHeaders": "Header HTTP", + "HeaderGuideProviders": "Penyedia Data Panduan TV", + "HeaderFrequentlyPlayed": "Sering Dimainkan", + "HeaderForKids": "Untuk anak-anak", + "HeaderFetcherSettings": "Pengaturan Pengambil", + "HeaderFetchImages": "Ambil Gambar :", + "HeaderFeatureAccess": "Akses Fitur", + "HeaderExternalIds": "ID Eksternal :", + "HeaderError": "Kesalahan", + "HeaderEnabledFieldsHelp": "Hapus centang pada bidang untuk menguncinya dan mencegah datanya berubah.", + "HeaderEnabledFields": "Bidang Diaktifkan", + "HeaderEditImages": "Edit Gambar", + "HeaderDVR": "DVR", + "HeaderDownloadSync": "Unduh & Sinkronkan", + "HeaderDirectPlayProfileHelp": "Tambahkan profil putar langsung untuk menunjukkan format mana yang dapat ditangani perangkat secara asli.", + "HeaderDirectPlayProfile": "Profil Putar Langsung", + "HeaderDevices": "Perangkat", + "HeaderDeviceAccess": "Akses Perangkat", + "HeaderDeveloperInfo": "Info Pengembang", + "HeaderDetectMyDevices": "Deteksi Perangkat Saya", + "HeaderDeleteTaskTrigger": "Hapus Pemicu Tugas", + "HeaderDeleteProvider": "Hapus Penyedia", + "HeaderDeleteItems": "Hapus Item", + "HeaderDeleteItem": "Hapus Item", + "HeaderDeleteDevice": "Hapus Perangkat", + "HeaderDefaultRecordingSettings": "Pengaturan Awal Perekaman", + "HeaderDateIssued": "Tanggal diterbitkan", + "HeaderCustomDlnaProfiles": "Profil Kustom", + "HeaderContinueListening": "Lanjut Mendengarkan", + "HeaderContainerProfileHelp": "Wadah profil menunjukkan batasan perangkat saat memainkan format tertentu. Jika batasan berlaku maka media akan ditranskode, bahkan jika formatnya dikonfigurasi untuk pemutaran langsung.", + "HeaderContainerProfile": "Wadah Profil", + "HeaderConnectionFailure": "Koneksi Bermasalah", + "HeaderConfirmRevokeApiKey": "Cabut Kunci API", + "HeaderConfirmProfileDeletion": "Konfirmasi Penghapusan Profil", + "HeaderConfirmPluginInstallation": "Konfirmasi Instalasi Plugin", + "HeaderConfigureRemoteAccess": "Konfigurasi Akses Jarak Jauh", + "HeaderCodecProfileHelp": "Profil codec menunjukkan batasan perangkat saat memainkan codec tertentu. Jika batasan berlaku maka media akan ditranskode, meskipun codec dikonfigurasi untuk pemutaran langsung.", + "HeaderCodecProfile": "Profil Codec", + "HeaderChapterImages": "Gambar Bagian", + "Other": "Lainnya", + "Directors": "Direktur", + "Director": "Direktur", + "Depressed": "Murung", + "Data": "Data" } From 111820fe84f8b5e9333d00598372008817584359 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Fri, 11 Sep 2020 13:28:07 +0000 Subject: [PATCH 258/582] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 22a8c4ae12..697f13ea7f 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1373,5 +1373,29 @@ "Other": "Ostatní", "Bwdif": "BWDIF", "UseDoubleRateDeinterlacingHelp": "Toto nastavení při odstranění prokládání zdvojnásobuje snímkovou frekvenci, aby výsledné video vypadalo stejně plynule, jako při přehrávání prokládaného obsahu v televizi.", - "UseDoubleRateDeinterlacing": "Zdvojnásobit snímkovou frekvenci při odstranění prokládání" + "UseDoubleRateDeinterlacing": "Zdvojnásobit snímkovou frekvenci při odstranění prokládání", + "LabelTonemappingParamHelp": "Pro ladění algoritmu mapování tónů. Doporučená a výchozí hodnota je NaN. Obecně je pole ponecháváno prázdné.", + "LabelTonemappingParam": "Parametr mapování tónů:", + "LabelTonemappingPeakHelp": "Tato hodnota nahradí signální/nominální/referenční vrchol. Užitečné, pokud je informace o vrcholu z metadat nespolehlivá, nebo při mapování tónů z nižšího rozsahu na vyšší. Doporučená a výchozí hodnota je 0.", + "LabelTonemappingPeak": "Vrchol mapování tónů:", + "LabelTonemappingThresholdHelp": "Parametry algoritmu mapování tónů jsou přizpůsobené jednotlivým scénám. Tato mez se používá pro zjištění, zda se scéna změnila. Pokud rozdíl mezi aktuální průměrnou světlostí snímku a průběžným průměrem tuto mez překročí, bude průměr a vrchol světlosti scény přepočítán. Doporučené a výchozí hodnoty jsou 0,8 a 0,2.", + "LabelTonemappingThreshold": "Mez mapování tónů:", + "LabelTonemappingDesatHelp": "Snižuje barevnost příliš světlých míst obrazu. Vyšší hodnoty umožňují zachovat více barevných informací. Nepřirozené barvy v příliš světlých místech budou nahrazeny plynulým přechodem na bílou barvu a obraz tak bude vypadat přirozeněji na úkor barevných detailů v těchto místech. Doporučené a výchozí hodnoty jsou 0 a 0,5.", + "LabelTonemappingDesat": "Snížení barevnosti při mapování tónů:", + "TonemappingRangeHelp": "Výstupní rozsah barev. Automaticky znamená stejný jako vstupní.", + "LabelTonemappingRange": "Rozsah mapování tónů:", + "TonemappingAlgorithmHelp": "Mapování tonů je možné dále ladit. Pokud možnostem zde nerozumíte, je možné ponechat vše ve výchozím nastavení.
    Doporučená hodnota je Reinhard.", + "LabelTonemappingAlgorithm": "Algoritmus mapování tónů:", + "AllowTonemappingHelp": "Mapování tónů umožňuje změnit dynamický rozsah videa z HDR na SDR bez ztráty důležitých informací původního obrazu, např. detailů a barev.", + "EnableTonemapping": "Zapnout mapování tónů", + "LabelOpenclDeviceHelp": "Zařízení OpenCL použité pro mapování tónů. Nalevo od tečky je číslo platformy, napravo pak číslo zařízení na této platformě. Výchozí hodnota je 0.0. Soubor aplikace ffmpeg, který obsahuje metodu pro hardwarovou akceleraci OpenCL, je povinný.", + "LabelOpenclDevice": "Zařízení OpenCL:", + "LabelColorPrimaries": "Primární barvy:", + "LabelColorTransfer": "Převod barev:", + "LabelColorSpace": "Barevný prostor:", + "LabelVideoRange": "Rozsah videa:", + "MediaInfoColorPrimaries": "Primární barvy", + "MediaInfoColorTransfer": "Převod barev", + "MediaInfoColorSpace": "Barevný prostor", + "MediaInfoVideoRange": "Rozsah videa" } From 81166cffe1f71335cb958cd7e5cdbc064171c4fc Mon Sep 17 00:00:00 2001 From: ben-dl Date: Fri, 11 Sep 2020 18:06:09 +0000 Subject: [PATCH 259/582] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 4e3a002b86..4baee1cb69 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1370,5 +1370,11 @@ "UseDoubleRateDeinterlacingHelp": "Diese Einstellung verwendet die Halbbildrate beim Deinterlacing, oft auch als Bob-Deinterlacing bezeichnet, die die Bildrate des Videos verdoppelt, um eine vollständige Bewegung wie beim Betrachten von Interlaced-Video auf einem Fernseher zu erzielen.", "UseDoubleRateDeinterlacing": "Verdoppelung der Bildfrequenz beim Deinterlacing", "LabelIconMaxResHelp": "Maximale Auflösung der Icons, die über die Eigenschaft upnp:icon bereitgestellt wird.", - "LabelAlbumArtMaxResHelp": "Maximale Auflösung des Albumcovers, die über die Eigenschaft upnp:albumArtURI bereitgestellt wird." + "LabelAlbumArtMaxResHelp": "Maximale Auflösung des Albumcovers, die über die Eigenschaft upnp:albumArtURI bereitgestellt wird.", + "EnableTonemapping": "Tone Mapping aktivieren", + "LabelOpenclDeviceHelp": "Dies ist das OpenCL-Gerät, welches für Tone Mapping genutzt wird. Die linke Seite des Punktes ist die Plattform-Nummer, und die rechte Seite ist die Gerätenummer. Der Standardwert ist 0.0. ffmpeg mit OpenCL-Hardwarebeschleunigung wird benötigt.", + "LabelOpenclDevice": "OpenCL-Gerät:", + "LabelColorSpace": "Farbraum:", + "MediaInfoColorSpace": "Farbraum", + "VideoAudio": "Videoton" } From eec822ef34085e079e66948e8915078cbd6957ff Mon Sep 17 00:00:00 2001 From: dkanada Date: Sat, 12 Sep 2020 05:44:06 +0900 Subject: [PATCH 260/582] enable prefer-const rule for eslint --- .eslintrc.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index dfb65cb4d4..dc8729fb2a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -44,10 +44,9 @@ module.exports = { 'no-restricted-globals': ['error'].concat(restrictedGlobals), 'no-trailing-spaces': ['error'], '@babel/no-unused-expressions': ['error', { 'allowShortCircuit': true, 'allowTernary': true, 'allowTaggedTemplates': true }], - //'no-unused-vars': ['error', { 'vars': 'all', 'args': 'none', 'ignoreRestSiblings': true }], 'one-var': ['error', 'never'], 'padded-blocks': ['error', 'never'], - //'prefer-const': ['error', {'destructuring': 'all'}], + 'prefer-const': ['error', {'destructuring': 'all'}], 'quotes': ['error', 'single', { 'avoidEscape': true, 'allowTemplateLiterals': false }], '@babel/semi': ['error'], 'space-before-blocks': ['error'], From a5776e98a72bae941c9c3e9f3f909bbb9dfbdb85 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sat, 12 Sep 2020 05:46:15 +0900 Subject: [PATCH 261/582] always use const when possible --- src/components/notifications/notifications.js | 32 ++++----- src/components/playback/playbackmanager.js | 8 +-- .../subtitleeditor/subtitleeditor.js | 70 +++++++++---------- src/components/viewContainer.js | 2 +- src/controllers/movies/movies.js | 8 +-- src/controllers/movies/moviesrecommended.js | 14 ++-- src/plugins/comicsPlayer/plugin.js | 24 +++---- src/scripts/clientUtils.js | 2 +- 8 files changed, 80 insertions(+), 80 deletions(-) diff --git a/src/components/notifications/notifications.js b/src/components/notifications/notifications.js index cf3ae88345..7f0e68f1d9 100644 --- a/src/components/notifications/notifications.js +++ b/src/components/notifications/notifications.js @@ -31,7 +31,7 @@ function closeAfter(notification, timeoutMs) { function resetRegistration() { /* eslint-disable-next-line compat/compat */ - let serviceWorker = navigator.serviceWorker; + const serviceWorker = navigator.serviceWorker; if (serviceWorker) { serviceWorker.ready.then(function (registration) { serviceWorkerRegistration = registration; @@ -47,7 +47,7 @@ function showPersistentNotification(title, options, timeoutMs) { function showNonPersistentNotification(title, options, timeoutMs) { try { - let notif = new Notification(title, options); /* eslint-disable-line compat/compat */ + const notif = new Notification(title, options); /* eslint-disable-line compat/compat */ if (notif.show) { notif.show(); @@ -67,7 +67,7 @@ function showNonPersistentNotification(title, options, timeoutMs) { } function showNotification(options, timeoutMs, apiClient) { - let title = options.title; + const title = options.title; options.data = options.data || {}; options.data.serverId = apiClient.serverInfo().Id; @@ -95,7 +95,7 @@ function showNewItemNotification(item, apiClient) { body = item.SeriesName + ' - ' + body; } - let notification = { + const notification = { title: 'New ' + item.Type, body: body, vibrate: true, @@ -103,7 +103,7 @@ function showNewItemNotification(item, apiClient) { data: {} }; - let imageTags = item.ImageTags || {}; + const imageTags = item.ImageTags || {}; if (imageTags.Primary) { notification.icon = apiClient.getScaledImageUrl(item.Id, { @@ -117,7 +117,7 @@ function showNewItemNotification(item, apiClient) { } function onLibraryChanged(data, apiClient) { - let newItems = data.ItemsAdded; + const newItems = data.ItemsAdded; if (!newItems.length) { return; @@ -140,7 +140,7 @@ function onLibraryChanged(data, apiClient) { EnableTotalRecordCount: false }).then(function (result) { - let items = result.Items; + const items = result.Items; for (const item of items) { showNewItemNotification(item, apiClient); @@ -159,7 +159,7 @@ function showPackageInstallNotification(apiClient, installation, status) { return; } - let notification = { + const notification = { tag: 'install' + installation.Id, data: {} }; @@ -188,12 +188,12 @@ function showPackageInstallNotification(apiClient, installation, status) { } if (status === 'progress') { - let percentComplete = Math.round(installation.PercentComplete || 0); + const percentComplete = Math.round(installation.PercentComplete || 0); notification.body = percentComplete + '% complete.'; } - let timeout = status === 'cancelled' ? 5000 : 0; + const timeout = status === 'cancelled' ? 5000 : 0; showNotification(notification, timeout, apiClient); }); @@ -220,8 +220,8 @@ events.on(serverNotifications, 'PackageInstalling', function (e, apiClient, data }); events.on(serverNotifications, 'ServerShuttingDown', function (e, apiClient, data) { - let serverId = apiClient.serverInfo().Id; - let notification = { + const serverId = apiClient.serverInfo().Id; + const notification = { tag: 'restart' + serverId, title: globalize.translate('ServerNameIsShuttingDown', apiClient.serverInfo().Name) }; @@ -229,8 +229,8 @@ events.on(serverNotifications, 'ServerShuttingDown', function (e, apiClient, dat }); events.on(serverNotifications, 'ServerRestarting', function (e, apiClient, data) { - let serverId = apiClient.serverInfo().Id; - let notification = { + const serverId = apiClient.serverInfo().Id; + const notification = { tag: 'restart' + serverId, title: globalize.translate('ServerNameIsRestarting', apiClient.serverInfo().Name) }; @@ -238,8 +238,8 @@ events.on(serverNotifications, 'ServerRestarting', function (e, apiClient, data) }); events.on(serverNotifications, 'RestartRequired', function (e, apiClient) { - let serverId = apiClient.serverInfo().Id; - let notification = { + const serverId = apiClient.serverInfo().Id; + const notification = { tag: 'restart' + serverId, title: globalize.translate('PleaseRestartServerName', apiClient.serverInfo().Name) }; diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 82bce8075e..a68663a769 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1110,8 +1110,8 @@ class PlaybackManager { self.increasePlaybackRate = function (player) { player = player || self._currentPlayer; if (player) { - let current = self.getPlaybackRate(player); - let supported = self.getSupportedPlaybackRates(player); + const current = self.getPlaybackRate(player); + const supported = self.getSupportedPlaybackRates(player); let index = -1; for (let i = 0, length = supported.length; i < length; i++) { @@ -1129,8 +1129,8 @@ class PlaybackManager { self.decreasePlaybackRate = function (player) { player = player || self._currentPlayer; if (player) { - let current = self.getPlaybackRate(player); - let supported = self.getSupportedPlaybackRates(player); + const current = self.getPlaybackRate(player); + const supported = self.getSupportedPlaybackRates(player); let index = -1; for (let i = 0, length = supported.length; i < length; i++) { diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index 2ade9966cb..8697a9a747 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -18,9 +18,9 @@ let currentItem; let hasChanges; function downloadRemoteSubtitles(context, id) { - let url = 'Items/' + currentItem.Id + '/RemoteSearch/Subtitles/' + id; + const url = 'Items/' + currentItem.Id + '/RemoteSearch/Subtitles/' + id; - let apiClient = window.connectionManager.getApiClient(currentItem.ServerId); + const apiClient = window.connectionManager.getApiClient(currentItem.ServerId); apiClient.ajax({ type: 'POST', @@ -38,7 +38,7 @@ function downloadRemoteSubtitles(context, id) { } function deleteLocalSubtitle(context, index) { - let msg = globalize.translate('MessageAreYouSureDeleteSubtitles'); + const msg = globalize.translate('MessageAreYouSureDeleteSubtitles'); import('confirm').then(({default: confirm}) => { confirm({ @@ -51,10 +51,10 @@ function deleteLocalSubtitle(context, index) { }).then(function () { loading.show(); - let itemId = currentItem.Id; - let url = 'Videos/' + itemId + '/Subtitles/' + index; + const itemId = currentItem.Id; + const url = 'Videos/' + itemId + '/Subtitles/' + index; - let apiClient = window.connectionManager.getApiClient(currentItem.ServerId); + const apiClient = window.connectionManager.getApiClient(currentItem.ServerId); apiClient.ajax({ @@ -70,9 +70,9 @@ function deleteLocalSubtitle(context, index) { } function fillSubtitleList(context, item) { - let streams = item.MediaStreams || []; + const streams = item.MediaStreams || []; - let subs = streams.filter(function (s) { + const subs = streams.filter(function (s) { return s.Type === 'Subtitle'; }); @@ -86,7 +86,7 @@ function fillSubtitleList(context, item) { html += subs.map(function (s) { let itemHtml = ''; - let tagName = layoutManager.tv ? 'button' : 'div'; + const tagName = layoutManager.tv ? 'button' : 'div'; let className = layoutManager.tv && s.Path ? 'listItem listItem-border btnDelete' : 'listItem listItem-border'; if (layoutManager.tv) { @@ -126,7 +126,7 @@ function fillSubtitleList(context, item) { html += '
    '; } - let elem = context.querySelector('.subtitleList'); + const elem = context.querySelector('.subtitleList'); if (subs.length) { elem.classList.remove('hide'); @@ -137,18 +137,18 @@ function fillSubtitleList(context, item) { } function fillLanguages(context, apiClient, languages) { - let selectLanguage = context.querySelector('#selectLanguage'); + const selectLanguage = context.querySelector('#selectLanguage'); selectLanguage.innerHTML = languages.map(function (l) { return ''; }); - let lastLanguage = userSettings.get('subtitleeditor-language'); + const lastLanguage = userSettings.get('subtitleeditor-language'); if (lastLanguage) { selectLanguage.value = lastLanguage; } else { apiClient.getCurrentUser().then(function (user) { - let lang = user.Configuration.SubtitleLanguagePreference; + const lang = user.Configuration.SubtitleLanguagePreference; if (lang) { selectLanguage.value = lang; @@ -171,9 +171,9 @@ function renderSearchResults(context, results) { context.querySelector('.noSearchResults').classList.add('hide'); for (let i = 0, length = results.length; i < length; i++) { - let result = results[i]; + const result = results[i]; - let provider = result.ProviderName; + const provider = result.ProviderName; if (provider !== lastProvider) { if (i > 0) { @@ -184,7 +184,7 @@ function renderSearchResults(context, results) { lastProvider = provider; } - let tagName = layoutManager.tv ? 'button' : 'div'; + const tagName = layoutManager.tv ? 'button' : 'div'; let className = layoutManager.tv ? 'listItem listItem-border btnOptions' : 'listItem listItem-border'; if (layoutManager.tv) { className += ' listItem-focusscale listItem-button'; @@ -194,7 +194,7 @@ function renderSearchResults(context, results) { html += ''; - let bodyClass = result.Comment || result.IsHashMatch ? 'three-line' : 'two-line'; + const bodyClass = result.Comment || result.IsHashMatch ? 'three-line' : 'two-line'; html += '
    '; @@ -231,7 +231,7 @@ function renderSearchResults(context, results) { html += '
    '; } - let elem = context.querySelector('.subtitleResults'); + const elem = context.querySelector('.subtitleResults'); elem.innerHTML = html; loading.hide(); @@ -242,8 +242,8 @@ function searchForSubtitles(context, language) { loading.show(); - let apiClient = window.connectionManager.getApiClient(currentItem.ServerId); - let url = apiClient.getUrl('Items/' + currentItem.Id + '/RemoteSearch/Subtitles/' + language); + const apiClient = window.connectionManager.getApiClient(currentItem.ServerId); + const url = apiClient.getUrl('Items/' + currentItem.Id + '/RemoteSearch/Subtitles/' + language); apiClient.getJSON(url).then(function (results) { renderSearchResults(context, results); @@ -258,7 +258,7 @@ function reload(context, apiClient, itemId) { fillSubtitleList(context, item); let file = item.Path || ''; - let index = Math.max(file.lastIndexOf('/'), file.lastIndexOf('\\')); + const index = Math.max(file.lastIndexOf('/'), file.lastIndexOf('\\')); if (index > -1) { file = file.substring(index + 1); } @@ -282,9 +282,9 @@ function reload(context, apiClient, itemId) { } function onSearchSubmit(e) { - let form = this; + const form = this; - let lang = form.querySelector('#selectLanguage', form).value; + const lang = form.querySelector('#selectLanguage', form).value; searchForSubtitles(dom.parentWithClass(form, 'formDialogContent'), lang); @@ -293,10 +293,10 @@ function onSearchSubmit(e) { } function onSubtitleListClick(e) { - let btnDelete = dom.parentWithClass(e.target, 'btnDelete'); + const btnDelete = dom.parentWithClass(e.target, 'btnDelete'); if (btnDelete) { - let index = btnDelete.getAttribute('data-index'); - let context = dom.parentWithClass(btnDelete, 'subtitleEditorDialog'); + const index = btnDelete.getAttribute('data-index'); + const context = dom.parentWithClass(btnDelete, 'subtitleEditorDialog'); deleteLocalSubtitle(context, index); } } @@ -305,14 +305,14 @@ function onSubtitleResultsClick(e) { let subtitleId; let context; - let btnOptions = dom.parentWithClass(e.target, 'btnOptions'); + const btnOptions = dom.parentWithClass(e.target, 'btnOptions'); if (btnOptions) { subtitleId = btnOptions.getAttribute('data-subid'); context = dom.parentWithClass(btnOptions, 'subtitleEditorDialog'); showDownloadOptions(btnOptions, context, subtitleId); } - let btnDownload = dom.parentWithClass(e.target, 'btnDownload'); + const btnDownload = dom.parentWithClass(e.target, 'btnDownload'); if (btnDownload) { subtitleId = btnDownload.getAttribute('data-subid'); context = dom.parentWithClass(btnDownload, 'subtitleEditorDialog'); @@ -321,7 +321,7 @@ function onSubtitleResultsClick(e) { } function showDownloadOptions(button, context, subtitleId) { - let items = []; + const items = []; items.push({ name: globalize.translate('Download'), @@ -347,7 +347,7 @@ function showDownloadOptions(button, context, subtitleId) { function centerFocus(elem, horiz, on) { import('scrollHelper').then(({default: scrollHelper}) => { - let fn = on ? 'on' : 'off'; + const fn = on ? 'on' : 'off'; scrollHelper.centerFocus[fn](elem, horiz); }); } @@ -355,9 +355,9 @@ function centerFocus(elem, horiz, on) { function showEditorInternal(itemId, serverId, template) { hasChanges = false; - let apiClient = window.connectionManager.getApiClient(serverId); + const apiClient = window.connectionManager.getApiClient(serverId); return apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) { - let dialogOptions = { + const dialogOptions = { removeOnClose: true, scrollY: false }; @@ -368,7 +368,7 @@ function showEditorInternal(itemId, serverId, template) { dialogOptions.size = 'small'; } - let dlg = dialogHelper.createDialog(dialogOptions); + const dlg = dialogHelper.createDialog(dialogOptions); dlg.classList.add('formDialog'); dlg.classList.add('subtitleEditorDialog'); @@ -379,7 +379,7 @@ function showEditorInternal(itemId, serverId, template) { dlg.querySelector('.subtitleSearchForm').addEventListener('submit', onSearchSubmit); - let btnSubmit = dlg.querySelector('.btnSubmit'); + const btnSubmit = dlg.querySelector('.btnSubmit'); if (layoutManager.tv) { centerFocus(dlg.querySelector('.formDialogContent'), false, true); @@ -388,7 +388,7 @@ function showEditorInternal(itemId, serverId, template) { btnSubmit.classList.add('hide'); } - let editorContent = dlg.querySelector('.formDialogContent'); + const editorContent = dlg.querySelector('.formDialogContent'); dlg.querySelector('.subtitleList').addEventListener('click', onSubtitleListClick); dlg.querySelector('.subtitleResults').addEventListener('click', onSubtitleResultsClick); diff --git a/src/components/viewContainer.js b/src/components/viewContainer.js index c39ad2ba84..0c0b705b52 100644 --- a/src/components/viewContainer.js +++ b/src/components/viewContainer.js @@ -14,7 +14,7 @@ import 'css!components/viewManager/viewContainer'; } controllerUrl = Dashboard.getPluginUrl(controllerUrl); - let apiUrl = ApiClient.getUrl('/web/' + controllerUrl); + const apiUrl = ApiClient.getUrl('/web/' + controllerUrl); return import(apiUrl).then((ControllerFactory) => { options.controllerFactory = ControllerFactory; }); diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index e05b1fa96a..01111d4c1b 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -163,11 +163,11 @@ import 'emby-itemscontainer'; itemsContainer.fetchData = fetchData; itemsContainer.getItemsHtml = getItemsHtml; itemsContainer.afterRefresh = afterRefresh; - let alphaPickerElement = tabContent.querySelector('.alphaPicker'); + const alphaPickerElement = tabContent.querySelector('.alphaPicker'); if (alphaPickerElement) { alphaPickerElement.addEventListener('alphavaluechanged', function (e) { - let newValue = e.detail.value; + const newValue = e.detail.value; query.NameStartsWith = newValue; query.StartIndex = 0; itemsContainer.refreshItems(); @@ -237,7 +237,7 @@ import 'emby-itemscontainer'; libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle, 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { - let viewStyle = e.detail.viewStyle; + const viewStyle = e.detail.viewStyle; userSettings.set(savedViewKey, viewStyle); query.StartIndex = 0; onViewStyleChange(); @@ -274,7 +274,7 @@ import 'emby-itemscontainer'; this.showFilterMenu = function () { import('components/filterdialog/filterdialog').then(({default: filterDialogFactory}) => { - let filterDialog = new filterDialogFactory({ + const filterDialog = new filterDialogFactory({ query: query, mode: 'movies', serverId: ApiClient.serverId() diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 5b85fbadae..4036128b51 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -58,7 +58,7 @@ import 'emby-button'; } function loadResume(page, userId, parentId) { - let screenWidth = dom.getWindowSize().innerWidth; + const screenWidth = dom.getWindowSize().innerWidth; const options = { SortBy: 'DatePlayed', SortOrder: 'Descending', @@ -154,8 +154,8 @@ import 'emby-button'; } function loadSuggestions(page, userId, parentId) { - let screenWidth = dom.getWindowSize().innerWidth; - let url = ApiClient.getUrl('Movies/Recommendations', { + const screenWidth = dom.getWindowSize().innerWidth; + const url = ApiClient.getUrl('Movies/Recommendations', { userId: userId, categoryLimit: 6, ItemLimit: screenWidth >= 1920 ? 8 : screenWidth >= 1600 ? 8 : screenWidth >= 1200 ? 6 : 5, @@ -172,7 +172,7 @@ import 'emby-button'; const html = recommendations.map(getRecommendationHtml).join(''); page.querySelector('.noItemsMessage').classList.add('hide'); - let recs = page.querySelector('.recommendations'); + const recs = page.querySelector('.recommendations'); recs.innerHTML = html; imageLoader.lazyChildren(recs); @@ -381,16 +381,16 @@ import 'emby-button'; const suggestionsTabIndex = 1; this.initTab = function () { - let tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']"); + const tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']"); initSuggestedTab(view, tabContent); }; this.renderTab = function () { - let tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']"); + const tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']"); loadSuggestionsTab(view, params, tabContent); }; - let tabControllers = []; + const tabControllers = []; let renderedTabs = []; view.addEventListener('viewshow', function (e) { initTabs(); diff --git a/src/plugins/comicsPlayer/plugin.js b/src/plugins/comicsPlayer/plugin.js index 7d0ac92df9..2928231391 100644 --- a/src/plugins/comicsPlayer/plugin.js +++ b/src/plugins/comicsPlayer/plugin.js @@ -19,14 +19,14 @@ export class ComicsPlayer { play(options) { this.progress = 0; - let elem = this.createMediaElement(); + const elem = this.createMediaElement(); return this.setCurrentSrc(elem, options); } stop() { this.unbindEvents(); - let elem = this.mediaElement; + const elem = this.mediaElement; if (elem) { dialogHelper.close(elem); this.mediaElement = null; @@ -40,7 +40,7 @@ export class ComicsPlayer { } onWindowKeyUp(e) { - let key = keyboardnavigation.getKeyName(e); + const key = keyboardnavigation.getKeyName(e); switch (key) { case 'Escape': this.stop(); @@ -87,20 +87,20 @@ export class ComicsPlayer { } setCurrentSrc(elem, options) { - let item = options.items[0]; + const item = options.items[0]; this.currentItem = item; loading.show(); - let serverId = item.ServerId; - let apiClient = window.connectionManager.getApiClient(serverId); + const serverId = item.ServerId; + const apiClient = window.connectionManager.getApiClient(serverId); libarchive.Archive.init({ workerUrl: appRouter.baseUrl() + '/libraries/worker-bundle.js' }); return new Promise((resolve, reject) => { - let downloadUrl = apiClient.getItemDownloadUrl(item.Id); + const downloadUrl = apiClient.getItemDownloadUrl(item.Id); const archiveSource = new ArchiveSource(downloadUrl); var instance = this; @@ -169,18 +169,18 @@ class ArchiveSource { } async load() { - let res = await fetch(this.url); + const res = await fetch(this.url); if (!res.ok) { return; } - let blob = await res.blob(); + const blob = await res.blob(); this.archive = await libarchive.Archive.open(blob); this.raw = await this.archive.getFilesArray(); this.numberOfFiles = this.raw.length; await this.archive.extractFiles(); - let files = await this.archive.getFilesArray(); + const files = await this.archive.getFilesArray(); files.sort((a, b) => { if (a.file.name < b.file.name) { return -1; @@ -189,9 +189,9 @@ class ArchiveSource { } }); - for (let file of files) { + for (const file of files) { /* eslint-disable-next-line compat/compat */ - let url = URL.createObjectURL(file.file); + const url = URL.createObjectURL(file.file); this.urls.push(url); } } diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index 4d3c049e8c..73801867c0 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -141,7 +141,7 @@ export function alert(options) { } export function capabilities(appHost) { - let capabilities = { + const 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: window.appMode === 'cordova' || window.appMode === 'android', From 6b6841c8c81ab3c24da9b85f008e5601cd3758dd Mon Sep 17 00:00:00 2001 From: Cameron Date: Fri, 11 Sep 2020 22:39:53 +0100 Subject: [PATCH 262/582] Update CONTRIBUTORS.md --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 778d899ef7..672795cce1 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -39,6 +39,7 @@ - [Andrei Oanca](https://github.com/OancaAndrei) - [Cromefire_](https://github.com/cromefire) - [Orry Verducci](https://github.com/orryverducci) + - [Camc314](https://github.com/camc314) # Emby Contributors From 09c7d73c633938a0f25d4bf45462208bda870676 Mon Sep 17 00:00:00 2001 From: ben-dl Date: Fri, 11 Sep 2020 21:37:22 +0000 Subject: [PATCH 263/582] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 4baee1cb69..b0af47256e 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1376,5 +1376,6 @@ "LabelOpenclDevice": "OpenCL-Gerät:", "LabelColorSpace": "Farbraum:", "MediaInfoColorSpace": "Farbraum", - "VideoAudio": "Videoton" + "VideoAudio": "Videoton", + "AllowTonemappingHelp": "Tone Mapping kann die Dynamic Range eines Videos von HDR zu SDR umwandeln und dabei Bilddetails und Farben beibehalten. Dies funktioniert zur Zeit nur mit dem NVENC HEVC-Decoder beim Transkodieren von HDR10 oder HLG-Videos." } From db98cf09b66b4a1fb6e3a0dfeb421e9fff29fa57 Mon Sep 17 00:00:00 2001 From: millallo Date: Sat, 12 Sep 2020 06:04:52 +0000 Subject: [PATCH 264/582] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index e56bb17d6d..60f312a4c6 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1370,5 +1370,7 @@ "Other": "Altro", "Data": "Dati", "Bwdif": "BWDIF", - "UseDoubleRateDeinterlacing": "Raddoppia il frame rate durante il deinterlacciamento" + "UseDoubleRateDeinterlacing": "Raddoppia il frame rate durante il deinterlacciamento", + "KnownProxiesHelp": "Lista degli IP separati da virgola dei proxy utilizzati per connettersi a Jellyfin. Ciò consente di gestire al meglio gli header X-Forwarded-For. Richiede il reboot.", + "LabelKnownProxies": "Proxy conosciuti:" } From 141787281a15bf1e6ae1df630893f715660c3b4b Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 12 Sep 2020 07:20:25 +0000 Subject: [PATCH 265/582] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index f17e623a7a..db359774fc 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1388,5 +1388,33 @@ "Other": "மற்றவை", "Bwdif": "BWDIF", "UseDoubleRateDeinterlacingHelp": "டீஇன்டர்லேசிங் செய்யும் போது இந்த அமைப்பு புலம் வீதத்தைப் பயன்படுத்துகிறது, இது பெரும்பாலும் பாப் டீஇன்டர்லேசிங் என அழைக்கப்படுகிறது, இது டிவியில் ஒன்றோடொன்று இணைக்கப்பட்ட வீடியோவைப் பார்க்கும்போது நீங்கள் பார்ப்பது போன்ற முழு இயக்கத்தையும் வழங்க வீடியோவின் பிரேம் வீதத்தை இரட்டிப்பாக்குகிறது.", - "UseDoubleRateDeinterlacing": "செயலிழக்கும்போது பிரேம் வீதத்தை இரட்டிப்பாக்குங்கள்" + "UseDoubleRateDeinterlacing": "செயலிழக்கும்போது பிரேம் வீதத்தை இரட்டிப்பாக்குங்கள்", + "LabelMaxMuxingQueueSizeHelp": "அனைத்து ஸ்ட்ரீம்களையும் துவக்கக் காத்திருக்கும்போது இடையகப்படுத்தக்கூடிய அதிகபட்ச பாக்கெட்டுகள். Ffmpeg பதிவுகளில் \"வெளியீட்டு ஸ்ட்ரீமுக்கு இடையகப்படுத்தப்பட்ட பல பாக்கெட்டுகள்\" பிழையை நீங்கள் இன்னும் சந்தித்தால் அதை அதிகரிக்க முயற்சிக்கவும். பரிந்துரைக்கப்பட்ட மதிப்பு 2048 ஆகும்.", + "LabelMaxMuxingQueueSize": "அதிகபட்ச மக்ஸிங் வரிசை அளவு:", + "LabelTonemappingParamHelp": "டோன் மேப்பிங் வழிமுறையை டியூன் செய்யுங்கள். பரிந்துரைக்கப்பட்ட மற்றும் இயல்புநிலை மதிப்புகள் NaN ஆகும். பொதுவாக அதை காலியாக விடவும்.", + "LabelTonemappingParam": "டோன் மேப்பிங் அளவுரு:", + "LabelTonemappingPeakHelp": "இந்த மதிப்புடன் சமிக்ஞை / பெயரளவு / குறிப்பு உச்சத்தை மேலெழுதவும். காட்சி மெட்டாடேட்டாவில் உட்பொதிக்கப்பட்ட உச்ச தகவல் நம்பகத்தன்மையற்றதாக இருக்கும்போது அல்லது குறைந்த வரம்பிலிருந்து அதிக வரம்பிற்கு டோன் மேப்பிங் செய்யும்போது பயனுள்ளதாக இருக்கும். பரிந்துரைக்கப்பட்ட மற்றும் இயல்புநிலை மதிப்புகள் 0 ஆகும்.", + "LabelTonemappingPeak": "டோன் மேப்பிங் உச்சம்:", + "LabelTonemappingThresholdHelp": "டோன் மேப்பிங் அல்காரிதம் அளவுருக்கள் ஒவ்வொரு காட்சிக்கும் நன்றாக வடிவமைக்கப்பட்டுள்ளன. காட்சி மாறிவிட்டதா இல்லையா என்பதைக் கண்டறிய ஒரு வாசல் பயன்படுத்தப்படுகிறது. தற்போதைய சட்ட சராசரி பிரகாசத்திற்கும் தற்போதைய இயங்கும் சராசரிக்கும் இடையிலான தூரம் ஒரு நுழைவு மதிப்பை மீறினால், காட்சி சராசரி மற்றும் உச்ச பிரகாசத்தை மீண்டும் கணக்கிடுவோம். பரிந்துரைக்கப்பட்ட மற்றும் இயல்புநிலை மதிப்புகள் 0.8 மற்றும் 0.2 ஆகும்.", + "LabelTonemappingThreshold": "டோன் மேப்பிங் தொடக்கநிலை:", + "LabelTonemappingDesatHelp": "இந்த பிரகாசத்தின் அளவைத் தாண்டிய சிறப்பம்சங்களுக்கு தேய்மானத்தைப் பயன்படுத்துங்கள். அதிக அளவுரு, அதிக வண்ண தகவல்கள் பாதுகாக்கப்படும். இந்த அமைப்பு சூப்பர்-சிறப்பம்சங்களுக்கான இயற்கைக்கு மாறான வண்ணங்களைத் தடுக்க உதவுகிறது, அதற்கு பதிலாக (சுமூகமாக) வெள்ளை நிறமாக மாறுவதன் மூலம். இது வரம்பற்ற வண்ணங்களைப் பற்றிய தகவல்களைக் குறைக்கும் செலவில், படங்கள் மிகவும் இயல்பானதாக உணரவைக்கும். பரிந்துரைக்கப்பட்ட மற்றும் இயல்புநிலை மதிப்புகள் 0 மற்றும் 0.5 ஆகும்.", + "LabelTonemappingDesat": "டோன் மேப்பிங் டெசாட்:", + "TonemappingRangeHelp": "வெளியீட்டு வண்ண வரம்பைத் தேர்ந்தெடுக்கவும். ஆட்டோ என்பது உள்ளீட்டு வரம்பைப் போன்றது.", + "LabelTonemappingRange": "டோன் மேப்பிங் வரம்பு:", + "TonemappingAlgorithmHelp": "டோன் மேப்பிங் நன்றாக இருக்கும். இந்த விருப்பங்களை நீங்கள் அறிந்திருக்கவில்லை என்றால், இயல்புநிலையை வைத்திருங்கள்.
    பரிந்துரைக்கப்பட்ட மதிப்பு ரெய்ன்ஹார்ட்.", + "LabelTonemappingAlgorithm": "பயன்படுத்த டோன் மேப்பிங் வழிமுறையைத் தேர்ந்தெடுக்கவும்:", + "AllowTonemappingHelp": "டோன் மேப்பிங் ஒரு வீடியோவின் டைனமிக் வரம்பை எச்.டி.ஆரிலிருந்து எஸ்.டி.ஆருக்கு மாற்றும், அதே நேரத்தில் பட விவரங்களையும் வண்ணங்களையும் பராமரிக்கும், அவை அசல் காட்சியைக் குறிக்கும் மிக முக்கியமான தகவல்கள். தற்போது NVENC HEVC டிகோடரைப் பயன்படுத்தும்போது மற்றும் HDR10 அல்லது HLG வீடியோக்களை டிரான்ஸ்கோடிங் செய்யும் போது மட்டுமே செயல்படும்.", + "EnableTonemapping": "டோன் மேப்பிங்கை இயக்கு", + "LabelOpenclDeviceHelp": "இது ஓப்பன்சிஎல் சாதனம் ஆகும், இது டன்மேப்பிங்கிற்கு பயன்படுத்தப்படுகிறது. புள்ளியின் இடது புறம் இயங்குதள எண், மற்றும் வலது புறம் இயங்குதளத்தின் சாதன எண். இயல்புநிலை மதிப்பு 0.0. OpenCL வன்பொருள் முடுக்கம் முறையைக் கொண்ட ffmpeg பயன்பாட்டுக் கோப்பு தேவை.", + "LabelOpenclDevice": "OpenCL சாதனம்:", + "LabelColorPrimaries": "வண்ண முதன்மைகள்:", + "LabelColorTransfer": "வண்ண பரிமாற்றம்:", + "LabelColorSpace": "வண்ண இடம்:", + "LabelVideoRange": "வீடியோ வரம்பு:", + "MediaInfoColorPrimaries": "வண்ண முதன்மைகள்", + "MediaInfoColorTransfer": "வண்ண பரிமாற்றம்", + "MediaInfoColorSpace": "வண்ண இடம்", + "MediaInfoVideoRange": "வீடியோ வரம்பு", + "LabelKnownProxies": "அறியப்பட்ட பிரதிநிதிகள்:", + "KnownProxiesHelp": "உங்கள் ஜெல்லிஃபின் நிகழ்வோடு இணைக்கும்போது பயன்படுத்தப்படும் அறியப்பட்ட ப்ராக்ஸிகளின் ஐபி முகவரிகளின் கமாவால் பிரிக்கப்பட்ட பட்டியல். எக்ஸ்-ஃபார்வர்ட்-ஃபார் தலைப்புகளை முறையாகப் பயன்படுத்த இது தேவைப்படுகிறது. சேமித்த பிறகு மறுதொடக்கம் தேவை." } From 2023ce37eb8b760269c43df9e46d69208aeea69a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Sat, 12 Sep 2020 11:20:21 +0000 Subject: [PATCH 266/582] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 697f13ea7f..15cb46f70a 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1397,5 +1397,9 @@ "MediaInfoColorPrimaries": "Primární barvy", "MediaInfoColorTransfer": "Převod barev", "MediaInfoColorSpace": "Barevný prostor", - "MediaInfoVideoRange": "Rozsah videa" + "MediaInfoVideoRange": "Rozsah videa", + "LabelMaxMuxingQueueSizeHelp": "Maximální počet paketů, které je možné napřed načíst při čekání na spuštění všech proudů. Pokud se stále zobrazuje chyba \"Příliš mnoho paketů načtených napřed ve výstupním proudu\" v protokolech ffmpeg, zkuste hodnotu zvýšit. Doporučená hodnota je 2048.", + "LabelMaxMuxingQueueSize": "Maximální velikost muxovací fronty:", + "LabelKnownProxies": "Známé proxy servery:", + "KnownProxiesHelp": "Čárkami oddělený seznam IP adres známých proxy serverů pro připojení k instanci Jellyfin. Vyžadováno pro správné využití HTTP hlavičky X-Forwarded-For. Vyžaduje restart." } From 70d7a561c5f4e9508782774374fb518e52ae7cb7 Mon Sep 17 00:00:00 2001 From: Thomas Schwery Date: Sat, 12 Sep 2020 11:28:16 +0000 Subject: [PATCH 267/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 587bc1a555..907c67f23e 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1373,5 +1373,22 @@ "PosterCard": "Affiche", "UseDoubleRateDeinterlacing": "Multiplier par deux la fréquence d'images lors du désentrelacement", "Bwdif": "BWDIF", - "UseDoubleRateDeinterlacingHelp": "Ce réglage utilise la fréquence de trame lors du désentrelacement, souvent appelé \"bob deinterlacing\", qui double la fréquence d'image de la vidéo pour fournir un mouvement fluide comme en regardant une vidéo entrelacée sur un téléviseur." + "UseDoubleRateDeinterlacingHelp": "Ce réglage utilise la fréquence de trame lors du désentrelacement, souvent appelé \"bob deinterlacing\", qui double la fréquence d'image de la vidéo pour fournir un mouvement fluide comme en regardant une vidéo entrelacée sur un téléviseur.", + "LabelTonemappingDesat": "Désaturation tonale :", + "TonemappingRangeHelp": "Sélectionnez la gamme de couleur de sortie. Auto représente la même gamme qu'en entrée.", + "LabelTonemappingRange": "Gamme de mappage tonal :", + "TonemappingAlgorithmHelp": "Le mappage tonal peut être affiné. Si vous n'êtes pas familier avec ces options, gardez les valeurs par défaut.
    La valeur recommandée est Reinhard.", + "LabelTonemappingAlgorithm": "Sélectionnez l'algorithme de mappage tonal à utiliser :", + "AllowTonemappingHelp": "Le mappage tonal peut transformer la gamme dynamique d'une vidéo de HDR à SDR tout en maintenant les détails et les couleurs d'image qui sont des informations importantes pour la représentation de la scène originale. Actuellement, ne fonctionne uniquement lorsque le décodeur NVENC HEVC est utilisé et que des vidéos HDR10 ou HLG sont transcodées.", + "EnableTonemapping": "Activer le mappage tonal", + "LabelOpenclDeviceHelp": "Ce dispositif OpenCL est utilisé pour le mappage tonal. La partie à gauche du point est le numéro de plate-forme et la partie à droite est le numéro du dispositif sur la plate-forme. La valeur par défaut est 0.0. Le fichier de l'application ffmpeg contenant l'accélération matérielle OpenCL est nécessaire.", + "LabelOpenclDevice": "Dispositif OpenCL :", + "LabelColorPrimaries": "Couleurs primaires :", + "LabelColorTransfer": "Transfert couleur :", + "LabelColorSpace": "Espace couleur :", + "MediaInfoColorPrimaries": "Couleurs primaires", + "MediaInfoColorTransfer": "Transfert couleur", + "MediaInfoColorSpace": "Espace couleur", + "LabelKnownProxies": "Proxies connus :", + "KnownProxiesHelp": "Liste séparée par des virgules d'adresses IP des proxies connus utilisés pour se connecter à l'instance Jellyfin. Ceci est nécessaire afin de pouvoir utiliser correctement les entêtes X-Forwarded-For. Nécessite un redémarrage après sauvegarde." } From 1dd771d446a3b55efabe1d18ecff62f527ca0388 Mon Sep 17 00:00:00 2001 From: Thomas Schwery Date: Sat, 12 Sep 2020 12:07:41 +0000 Subject: [PATCH 268/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 907c67f23e..ed243f98a4 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1390,5 +1390,7 @@ "MediaInfoColorTransfer": "Transfert couleur", "MediaInfoColorSpace": "Espace couleur", "LabelKnownProxies": "Proxies connus :", - "KnownProxiesHelp": "Liste séparée par des virgules d'adresses IP des proxies connus utilisés pour se connecter à l'instance Jellyfin. Ceci est nécessaire afin de pouvoir utiliser correctement les entêtes X-Forwarded-For. Nécessite un redémarrage après sauvegarde." + "KnownProxiesHelp": "Liste séparée par des virgules d'adresses IP des proxies connus utilisés pour se connecter à l'instance Jellyfin. Ceci est nécessaire afin de pouvoir utiliser correctement les entêtes X-Forwarded-For. Nécessite un redémarrage après sauvegarde.", + "LabelTonemappingThreshold": "Seuil de mappage tonal :", + "LabelTonemappingDesatHelp": "Désature les couleurs qui dépassent ce niveau de luminosité. Plus ce paramètre est élevé, plus les informations de couleur seront préservées. Ce paramètre permet d'éviter les couleurs anormalement éclatantes pour les couleurs super-lumineuses en les transformant (de manière lisse) en blanc. Ceci rend l'image plus naturelle au prix d'une réduction d'information dans les couleurs hors-gamme. Les valeurs recommandées et par défaut sont 0 et 0.5." } From 8f24c4d2c94b0e712028858b45ae8f7793578da1 Mon Sep 17 00:00:00 2001 From: Moritz Date: Sat, 12 Sep 2020 19:50:13 +0000 Subject: [PATCH 269/582] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index b0af47256e..d6104fba72 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1377,5 +1377,10 @@ "LabelColorSpace": "Farbraum:", "MediaInfoColorSpace": "Farbraum", "VideoAudio": "Videoton", - "AllowTonemappingHelp": "Tone Mapping kann die Dynamic Range eines Videos von HDR zu SDR umwandeln und dabei Bilddetails und Farben beibehalten. Dies funktioniert zur Zeit nur mit dem NVENC HEVC-Decoder beim Transkodieren von HDR10 oder HLG-Videos." + "AllowTonemappingHelp": "Tone Mapping kann die Dynamic Range eines Videos von HDR zu SDR umwandeln und dabei Bilddetails und Farben beibehalten. Dies funktioniert zur Zeit nur mit dem NVENC HEVC-Decoder beim Transkodieren von HDR10 oder HLG-Videos.", + "TonemappingRangeHelp": "Wählen Sie den Ausgabefarbbereich aus. Auto ist derselbe wie der Eingabebereich.", + "TonemappingAlgorithmHelp": "Das Tonemapping kann fein abgestimmt werden. Wenn Sie mit diesen Optionen nicht vertraut sind, behalten Sie einfach den Standardwert bei.
    Der empfohlene Wert ist Reinhard.", + "LabelTonemappingAlgorithm": "Wählen Sie den zu verwendenden Tonemapping-Algorithmus aus:", + "LabelKnownProxies": "Bekannte Proxys:", + "KnownProxiesHelp": "Kommagetrennte Liste von IP-Adressen bekannter Proxys, die bei der Verbindung mit Ihrer Jellyfin-Instanz verwendet werden. Dies ist erforderlich, um die X-Forwarded-For-Header korrekt verwenden zu können. Erfordert nach dem Speichern einen Neustart." } From 1014c6cd352b0d702f341a761018e1ee2a513336 Mon Sep 17 00:00:00 2001 From: millallo Date: Sun, 13 Sep 2020 17:59:00 +0000 Subject: [PATCH 270/582] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index 60f312a4c6..f1e30b754f 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -568,7 +568,7 @@ "LabelModelName": "Nome Modello", "LabelModelNumber": "Numero Modello", "LabelModelUrl": "Modello URL", - "LabelMonitorUsers": "Monitora l'attività da:", + "LabelMonitorUsers": "Monitora l'attività di:", "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.", From 71c44dccd6ab690bb720b47d01ec1c9b26bcf12d Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 14 Sep 2020 00:04:55 +0300 Subject: [PATCH 271/582] move music tabs suggestions to the second position --- .../homeScreenSettings/homeScreenSettings.js | 8 ++-- src/controllers/music/music.html | 40 +++++++++---------- src/controllers/music/musicrecommended.js | 19 ++++----- src/controllers/shows/tvrecommended.js | 34 ++++++++-------- 4 files changed, 51 insertions(+), 50 deletions(-) diff --git a/src/components/homeScreenSettings/homeScreenSettings.js b/src/components/homeScreenSettings/homeScreenSettings.js index 3348348f20..5825d19a24 100644 --- a/src/components/homeScreenSettings/homeScreenSettings.js +++ b/src/components/homeScreenSettings/homeScreenSettings.js @@ -88,13 +88,13 @@ import 'emby-checkbox'; }); } else if (type === 'music') { list.push({ - name: globalize.translate('Suggestions'), - value: 'suggestions', + name: globalize.translate('Albums'), + value: 'albums', isDefault: true }); list.push({ - name: globalize.translate('Albums'), - value: 'albums' + name: globalize.translate('Suggestions'), + value: 'suggestions' }); list.push({ name: globalize.translate('HeaderAlbumArtists'), diff --git a/src/controllers/music/music.html b/src/controllers/music/music.html index 84d324857d..aba8379f81 100644 --- a/src/controllers/music/music.html +++ b/src/controllers/music/music.html @@ -8,7 +8,26 @@ } } -
    +
    +
    +
    + + + + + +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    @@ -34,25 +53,6 @@
    -
    -
    -
    - - - - - -
    - -
    -
    - -
    -
    -
    -
    -
    -
    diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index a93bfea4e3..7b11a8eb21 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -177,9 +177,9 @@ import 'flexStyles'; function getTabs() { return [{ - name: globalize.translate('Suggestions') - }, { name: globalize.translate('Albums') + }, { + name: globalize.translate('Suggestions') }, { name: globalize.translate('HeaderAlbumArtists') }, { @@ -195,7 +195,7 @@ import 'flexStyles'; function getDefaultTabIndex(folderId) { switch (userSettings.get('landing-' + folderId)) { - case 'albums': + case 'suggestions': return 1; case 'albumartists': @@ -221,7 +221,7 @@ import 'flexStyles'; export default function (view, params) { function reload() { loading.show(); - const tabContent = view.querySelector(".pageTabContent[data-index='0']"); + const tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']"); loadSuggestionsTab(view, tabContent, params.topParentId); } @@ -268,11 +268,11 @@ import 'flexStyles'; switch (index) { case 0: - depends = 'controllers/music/musicrecommended'; + depends = 'controllers/music/musicalbums'; break; case 1: - depends = 'controllers/music/musicalbums'; + depends = 'controllers/music/musicrecommended'; break; case 2: @@ -296,7 +296,7 @@ import 'flexStyles'; import(depends).then(({default: controllerFactory}) => { let tabContent; - if (index == 0) { + if (index == 1) { tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"); this.tabContent = tabContent; } @@ -306,7 +306,7 @@ import 'flexStyles'; if (!controller) { tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"); - if (index === 0) { + if (index === 1) { controller = this; } else if (index === 7) { controller = new controllerFactory(view, tabContent, { @@ -360,9 +360,10 @@ import 'flexStyles'; } let currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId)); + const suggestionsTabIndex = 1; this.initTab = function () { - const tabContent = view.querySelector(".pageTabContent[data-index='0']"); + const tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']"); const containers = tabContent.querySelectorAll('.itemsContainer'); for (let i = 0, length = containers.length; i < length; i++) { diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js index 048d27d45d..da47f9f318 100644 --- a/src/controllers/shows/tvrecommended.js +++ b/src/controllers/shows/tvrecommended.js @@ -66,16 +66,16 @@ import 'emby-button'; } function initSuggestedTab(page, tabContent) { - var containers = tabContent.querySelectorAll('.itemsContainer'); + const containers = tabContent.querySelectorAll('.itemsContainer'); - for (var i = 0, length = containers.length; i < length; i++) { + for (let i = 0, length = containers.length; i < length; i++) { setScrollClasses(containers[i], enableScrollX()); } } function loadSuggestionsTab(view, params, tabContent) { - var parentId = params.topParentId; - var userId = ApiClient.getCurrentUserId(); + const parentId = params.topParentId; + const userId = ApiClient.getCurrentUserId(); console.debug('loadSuggestionsTab'); loadResume(tabContent, userId, parentId); loadLatest(tabContent, userId, parentId); @@ -83,8 +83,8 @@ import 'emby-button'; } function loadResume(view, userId, parentId) { - var screenWidth = dom.getWindowSize().innerWidth; - var options = { + const screenWidth = dom.getWindowSize().innerWidth; + const options = { SortBy: 'DatePlayed', SortOrder: 'Descending', IncludeItemTypes: 'Episode', @@ -105,8 +105,8 @@ import 'emby-button'; view.querySelector('#resumableSection').classList.add('hide'); } - var allowBottomPadding = !enableScrollX(); - var container = view.querySelector('#resumableItems'); + const allowBottomPadding = !enableScrollX(); + const container = view.querySelector('#resumableItems'); cardBuilder.buildCards(result.Items, { itemsContainer: container, preferThumb: true, @@ -128,7 +128,7 @@ import 'emby-button'; } function loadLatest(view, userId, parentId) { - var options = { + const options = { userId: userId, IncludeItemTypes: 'Episode', Limit: 30, @@ -138,9 +138,9 @@ import 'emby-button'; EnableImageTypes: 'Primary,Backdrop,Thumb' }; ApiClient.getLatestItems(options).then(function (items) { - var section = view.querySelector('#latestItemsSection'); - var allowBottomPadding = !enableScrollX(); - var container = section.querySelector('#latestEpisodesItems'); + const section = view.querySelector('#latestItemsSection'); + const allowBottomPadding = !enableScrollX(); + const container = section.querySelector('#latestEpisodesItems'); cardBuilder.buildCards(items, { parentContainer: section, itemsContainer: container, @@ -169,7 +169,7 @@ import 'emby-button'; } function loadNextUp(view, userId, parentId) { - var query = { + const query = { userId: userId, Limit: 24, Fields: 'PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo', @@ -186,8 +186,8 @@ import 'emby-button'; view.querySelector('.noNextUpItems').classList.remove('hide'); } - var section = view.querySelector('#nextUpItemsSection'); - var container = section.querySelector('#nextUpItems'); + const section = view.querySelector('#nextUpItemsSection'); + const container = section.querySelector('#nextUpItems'); cardBuilder.buildCards(result.Items, { parentContainer: section, itemsContainer: container, @@ -345,12 +345,12 @@ import 'emby-button'; const suggestionsTabIndex = 1; self.initTab = function () { - var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']"); + const tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']"); initSuggestedTab(view, tabContent); }; self.renderTab = function () { - var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']"); + const tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']"); loadSuggestionsTab(view, params, tabContent); }; From 3cc20ce480df43a23a3f6562436f4cac26112161 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 14 Sep 2020 01:09:59 +0300 Subject: [PATCH 272/582] add more Landing Screen Options --- .../homeScreenSettings/homeScreenSettings.js | 12 ++++++++---- src/controllers/movies/movies.html | 12 ++++++------ src/controllers/music/music.html | 2 +- src/controllers/shows/tvrecommended.html | 2 +- src/controllers/shows/tvrecommended.js | 10 ++++++++-- 5 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/components/homeScreenSettings/homeScreenSettings.js b/src/components/homeScreenSettings/homeScreenSettings.js index 5825d19a24..5138935408 100644 --- a/src/components/homeScreenSettings/homeScreenSettings.js +++ b/src/components/homeScreenSettings/homeScreenSettings.js @@ -75,16 +75,20 @@ import 'emby-checkbox'; value: 'suggestions' }); list.push({ - name: globalize.translate('Latest'), - value: 'latest' + name: globalize.translate('Upcoming'), + value: 'upcoming' }); list.push({ name: globalize.translate('Genres'), value: 'genres' }); list.push({ - name: globalize.translate('Favorites'), - value: 'favorites' + name: globalize.translate('Networks'), + value: 'networks' + }); + list.push({ + name: globalize.translate('Episodes'), + value: 'episodes' }); } else if (type === 'music') { list.push({ diff --git a/src/controllers/movies/movies.html b/src/controllers/movies/movies.html index dddda3f7f9..5c905d1225 100644 --- a/src/controllers/movies/movies.html +++ b/src/controllers/movies/movies.html @@ -1,6 +1,6 @@
    -
    +
    @@ -17,7 +17,7 @@
    -
    +

    ${HeaderContinueWatching}

    @@ -43,7 +43,7 @@

    ${MessageNoMovieSuggestionsAvailable}

    -
    +
    @@ -59,7 +59,7 @@
    -
    +
    @@ -71,7 +71,7 @@
    -
    +
    @@ -85,7 +85,7 @@
    -
    +
    diff --git a/src/controllers/music/music.html b/src/controllers/music/music.html index aba8379f81..0ec339db95 100644 --- a/src/controllers/music/music.html +++ b/src/controllers/music/music.html @@ -85,7 +85,7 @@
    -
    +
    diff --git a/src/controllers/shows/tvrecommended.html b/src/controllers/shows/tvrecommended.html index 0d7b7dced8..75e1546936 100644 --- a/src/controllers/shows/tvrecommended.html +++ b/src/controllers/shows/tvrecommended.html @@ -54,7 +54,7 @@
    -
    +
    diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js index da47f9f318..9955df6b58 100644 --- a/src/controllers/shows/tvrecommended.js +++ b/src/controllers/shows/tvrecommended.js @@ -36,12 +36,18 @@ import 'emby-button'; case 'suggestions': return 1; - case 'favorites': - return 1; + case 'upcoming': + return 2; case 'genres': return 3; + case 'networks': + return 4; + + case 'episodes': + return 5; + default: return 0; } From d3c5b83b290ab5ed3baef95f44ba7c182f5ca563 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 14 Sep 2020 01:23:20 +0300 Subject: [PATCH 273/582] clean up unused search tab condition --- src/controllers/movies/movies.html | 2 -- src/controllers/movies/moviesrecommended.js | 5 ----- src/controllers/music/music.html | 2 -- src/controllers/music/musicrecommended.js | 5 ----- src/controllers/shows/tvrecommended.html | 2 -- src/controllers/shows/tvrecommended.js | 5 ----- 6 files changed, 21 deletions(-) diff --git a/src/controllers/movies/movies.html b/src/controllers/movies/movies.html index 5c905d1225..ec2a975db1 100644 --- a/src/controllers/movies/movies.html +++ b/src/controllers/movies/movies.html @@ -88,6 +88,4 @@
    -
    -
    diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 4036128b51..44b0fe25fe 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -320,11 +320,6 @@ import 'emby-button'; if (index === suggestionsTabIndex) { controller = this; - } else if (index === 6) { - controller = new controllerFactory(view, tabContent, { - collectionType: 'movies', - parentId: params.topParentId - }); } else if (index == 0 || index == 3) { controller = new controllerFactory(view, params, tabContent, { mode: index ? 'favorites' : 'movies' diff --git a/src/controllers/music/music.html b/src/controllers/music/music.html index 0ec339db95..43251226c9 100644 --- a/src/controllers/music/music.html +++ b/src/controllers/music/music.html @@ -105,6 +105,4 @@
    -
    -
    diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index 7b11a8eb21..6c569ddd41 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -308,11 +308,6 @@ import 'flexStyles'; if (index === 1) { controller = this; - } else if (index === 7) { - controller = new controllerFactory(view, tabContent, { - collectionType: 'music', - parentId: params.topParentId - }); } else { controller = new controllerFactory(view, params, tabContent); } diff --git a/src/controllers/shows/tvrecommended.html b/src/controllers/shows/tvrecommended.html index 75e1546936..dbfac37b91 100644 --- a/src/controllers/shows/tvrecommended.html +++ b/src/controllers/shows/tvrecommended.html @@ -67,6 +67,4 @@
    -
    -
    diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js index 9955df6b58..db7bef2d50 100644 --- a/src/controllers/shows/tvrecommended.js +++ b/src/controllers/shows/tvrecommended.js @@ -285,11 +285,6 @@ import 'emby-button'; if (index === 1) { controller = self; - } else if (index === 6) { - controller = new controllerFactory(view, tabContent, { - collectionType: 'tvshows', - parentId: params.topParentId - }); } else { controller = new controllerFactory(view, params, tabContent); } From db76b40affa67fcec41d4daec0c6a4c79dee62f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B9=20=D0=98=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Sun, 13 Sep 2020 19:55:51 +0000 Subject: [PATCH 274/582] Translated using Weblate (Bulgarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bg/ --- src/strings/bg-bg.json | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index c0a63032f2..f4d6dfc317 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -1352,5 +1352,32 @@ "MessagePluginInstallError": "Възникна грешка при инсталирането на добавката.", "PlaybackRate": "Скорост на възпроизвеждане", "NextTrack": "Прескочи към следващ", - "LabelUnstable": "Нестабилна" + "LabelUnstable": "Нестабилна", + "LabelOpenclDevice": "Устройство OpenCL:", + "LabelColorPrimaries": "Цветни първични елементи:", + "LabelColorTransfer": "Цветен трансфер:", + "LabelColorSpace": "Цветово пространство:", + "LabelVideoRange": "Видео обхват:", + "MediaInfoColorPrimaries": "Цветни първични материали", + "MediaInfoColorTransfer": "Цветен трансфер", + "MediaInfoColorSpace": "Цветово пространство", + "MediaInfoVideoRange": "Видео обхват", + "Bwdif": "Филтър БВДИФ", + "VideoAudio": "Видео Аудио", + "Video": "Видео", + "ThumbCard": "Малък постер", + "Subtitle": "Субтитри", + "SpecialFeatures": "Специални функции", + "SelectServer": "Избери сървър", + "Restart": "Рестартирай", + "ResetPassword": "Нулира парола", + "Profile": "Профил", + "PosterCard": "Плакат карта", + "Poster": "Плакат", + "Photo": "Снимки", + "MusicVideos": "Музикални видеа", + "LabelKnownProxies": "Познати проксита:", + "Image": "Картинка", + "Other": "Други", + "Data": "Данни" } From 7d77cc9900d7adb434f38b4e718dbff0a97688b8 Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Sun, 13 Sep 2020 23:51:02 +0000 Subject: [PATCH 275/582] 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 | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 521f4ef98f..5f303b1ce2 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1373,5 +1373,22 @@ "Other": "Otro", "Bwdif": "BWDIF", "UseDoubleRateDeinterlacingHelp": "Esta configuración utiliza la velocidad de campo al desentrelazar, a menudo denominado desentrelazado bob, que duplica la velocidad de fotogramas del video para proporcionar un movimiento completo como lo que vería al ver un video entrelazado en un televisor.", - "UseDoubleRateDeinterlacing": "Duplique la velocidad de fotogramas al desentrelazar" + "UseDoubleRateDeinterlacing": "Duplique la velocidad de fotogramas al desentrelazar", + "LabelTonemappingParam": "Parámetro de mapeo de tonos:", + "LabelTonemappingPeak": "Pico de mapeo de tonos:", + "LabelTonemappingThreshold": "Umbral de mapeo de tonos:", + "LabelTonemappingRange": "Rango de mapeo de tonos:", + "LabelTonemappingAlgorithm": "Seleccione el algoritmo de mapeo de tonos para usar:", + "EnableTonemapping": "Habilitar mapeo de tonos", + "LabelOpenclDeviceHelp": "Este es el dispositivo OpenCL que se utiliza para el mapeo de tonos. El lado izquierdo del punto es el número de plataforma y el lado derecho es el número de dispositivo en la plataforma. El valor predeterminado es 0.0. Se requiere el archivo de aplicación ffmpeg que contiene el método de aceleración por hardware OpenCL.", + "LabelOpenclDevice": "Dispositivo OpenCL:", + "LabelColorPrimaries": "Primarias de color:", + "LabelColorTransfer": "Transferencia de color:", + "LabelColorSpace": "Espacio de color:", + "LabelVideoRange": "Rango de video:", + "MediaInfoColorPrimaries": "Primarias de color", + "MediaInfoColorTransfer": "Transferencia de color", + "MediaInfoColorSpace": "Espacio de color", + "MediaInfoVideoRange": "Rango de video", + "LabelKnownProxies": "Proxies conocidos:" } From 270f585b265f40012c76bc6e95553576cc8b285b Mon Sep 17 00:00:00 2001 From: Daniyar Itegulov Date: Mon, 8 Jun 2020 17:44:55 +1000 Subject: [PATCH 276/582] Make book plugin render EPUBs continuously for mobile devices --- src/plugins/bookPlayer/plugin.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/plugins/bookPlayer/plugin.js b/src/plugins/bookPlayer/plugin.js index 0303275be2..8cde3f400f 100644 --- a/src/plugins/bookPlayer/plugin.js +++ b/src/plugins/bookPlayer/plugin.js @@ -1,3 +1,4 @@ +import browser from 'browser'; import loading from 'loading'; import keyboardnavigation from 'keyboardnavigation'; import dialogHelper from 'dialogHelper'; @@ -230,6 +231,23 @@ export class BookPlayer { return elem; } + render(elem, book) { + if (browser.mobile) { + return book.renderTo(elem, { + width: '100%', + height: '100%', + manager: 'continuous', + flow: 'scrolled-doc', + offset: 0 + }); + } else { + return book.renderTo(elem, { + width: '100%', + height: '100%' + }); + } + } + setCurrentSrc(elem, options) { const item = options.items[0]; this._currentItem = item; @@ -248,7 +266,7 @@ export class BookPlayer { import('epubjs').then(({default: epubjs}) => { const downloadHref = apiClient.getItemDownloadUrl(item.Id); const book = epubjs(downloadHref, {openAs: 'epub'}); - const rendition = book.renderTo(elem, {width: '100%', height: '97%'}); + const rendition = this.render(elem, book); this._currentSrc = downloadHref; this._rendition = rendition; From 14583cf18e824308f6e7741da95e3204129cf8d1 Mon Sep 17 00:00:00 2001 From: Daniyar Itegulov Date: Mon, 14 Sep 2020 18:51:03 +1000 Subject: [PATCH 277/582] Add next/prev chapter buttons for mobile devices Also removes touch events as they interfere with continuous scrolling --- src/plugins/bookPlayer/plugin.js | 75 +++++++++++++++++--------------- src/plugins/bookPlayer/style.css | 46 ++++++++++++++++---- 2 files changed, 77 insertions(+), 44 deletions(-) diff --git a/src/plugins/bookPlayer/plugin.js b/src/plugins/bookPlayer/plugin.js index 8cde3f400f..0c3d6850aa 100644 --- a/src/plugins/bookPlayer/plugin.js +++ b/src/plugins/bookPlayer/plugin.js @@ -19,6 +19,8 @@ export class BookPlayer { this.onDialogClosed = this.onDialogClosed.bind(this); this.openTableOfContents = this.openTableOfContents.bind(this); + this.prevChapter = this.prevChapter.bind(this); + this.nextChapter = this.nextChapter.bind(this); this.onWindowKeyUp = this.onWindowKeyUp.bind(this); } @@ -123,26 +125,6 @@ export class BookPlayer { } } - onTouchStart(e) { - // TODO: depending on the event this can be the document or the rendition itself - const rendition = this._rendition || this; - const 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; - - const 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(); } @@ -151,27 +133,33 @@ export class BookPlayer { const elem = this._mediaElement; elem.addEventListener('close', this.onDialogClosed, {once: true}); - elem.querySelector('.btnBookplayerExit').addEventListener('click', this.onDialogClosed, {once: true}); - elem.querySelector('.btnBookplayerToc').addEventListener('click', this.openTableOfContents); + elem.querySelector('#btnBookplayerExit').addEventListener('click', this.onDialogClosed, {once: true}); + elem.querySelector('#btnBookplayerToc').addEventListener('click', this.openTableOfContents); + if (browser.mobile) { + elem.querySelector('#btnBookplayerPrev').addEventListener('click', this.prevChapter); + elem.querySelector('#btnBookplayerNext').addEventListener('click', this.nextChapter); + } } bindEvents() { 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() { const elem = this._mediaElement; elem.removeEventListener('close', this.onDialogClosed); - elem.querySelector('.btnBookplayerExit').removeEventListener('click', this.onDialogClosed); - elem.querySelector('.btnBookplayerToc').removeEventListener('click', this.openTableOfContents); + elem.querySelector('#btnBookplayerExit').removeEventListener('click', this.onDialogClosed); + elem.querySelector('#btnBookplayerToc').removeEventListener('click', this.openTableOfContents); + if (browser.mobile) { + elem.querySelector('#btnBookplayerPrev').removeEventListener('click', this.prevChapter); + elem.querySelector('#btnBookplayerNext').removeEventListener('click', this.nextChapter); + } } unbindEvents() { @@ -180,11 +168,9 @@ export class BookPlayer { } 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); } } @@ -194,6 +180,16 @@ export class BookPlayer { } } + prevChapter(e) { + this._rendition.prev(); + e.preventDefault(); + } + + nextChapter(e) { + this._rendition.next(); + e.preventDefault(); + } + createMediaElement() { let elem = this._mediaElement; if (elem) { @@ -214,13 +210,22 @@ export class BookPlayer { elem.id = 'bookPlayer'; let html = ''; - html += '
    '; - html += ''; + + if (browser.mobile) { + html += '
    '; + } + + html += '
    '; + html += '
    '; + html += ''; + html += ''; html += '
    '; - html += '
    '; - html += ''; html += '
    '; + if (browser.mobile) { + html += '
    '; + } + elem.innerHTML = html; dialogHelper.open(elem); @@ -236,9 +241,7 @@ export class BookPlayer { return book.renderTo(elem, { width: '100%', height: '100%', - manager: 'continuous', - flow: 'scrolled-doc', - offset: 0 + flow: 'scrolled-doc' }); } else { return book.renderTo(elem, { @@ -266,7 +269,7 @@ export class BookPlayer { import('epubjs').then(({default: epubjs}) => { const downloadHref = apiClient.getItemDownloadUrl(item.Id); const book = epubjs(downloadHref, {openAs: 'epub'}); - const rendition = this.render(elem, book); + const rendition = this.render('viewer', book); this._currentSrc = downloadHref; this._rendition = rendition; diff --git a/src/plugins/bookPlayer/style.css b/src/plugins/bookPlayer/style.css index e37b995f31..99aad62260 100644 --- a/src/plugins/bookPlayer/style.css +++ b/src/plugins/bookPlayer/style.css @@ -7,18 +7,20 @@ background: #fff; } -.topRightActionButtons { - right: 0.5vh; +.topButtons { top: 0.5vh; z-index: 1002; - position: absolute; + position: sticky; } -.topLeftActionButtons { - left: 0.5vh; - top: 0.5vh; - z-index: 1002; - position: absolute; +#btnBookplayerToc { + float: left; + margin-left: 2vw; +} + +#btnBookplayerExit { + float: right; + margin-right: 2vw; } .bookplayerButtonIcon { @@ -37,3 +39,31 @@ .bookplayerErrorMsg { text-align: center; } + +#viewer { + align-items: flex-start; +} + +#btnBookplayerPrev { + margin: 0.5vh 0.5vh; + color: black; +} + +#btnBookplayerNext { + margin: 0.5vh 0.5vh; + color: black; +} + +.button-wrapper { + text-align: center; + position: relative; + height: 0; +} + +.top-button { + margin: 0.5vh 2em; +} + +.bottom-button { + margin: 2em 0.5vh; +} From 0062a3b1b2ec550e8f6e688b61a42e9c07654d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Mon, 14 Sep 2020 08:48:35 +0000 Subject: [PATCH 278/582] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 15cb46f70a..098cd9e3d2 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -187,8 +187,8 @@ "HeaderAdmin": "Administrátor", "HeaderAlbumArtists": "Umělci alba", "HeaderAlert": "Upozornění", - "HeaderApiKey": "Klíč Api", - "HeaderApiKeys": "Klíče API", + "HeaderApiKey": "Klíč k API", + "HeaderApiKeys": "Klíče k API", "HeaderApiKeysHelp": "Externí aplikace musí mít klíč k API, aby mohly komunikovat se serverem. Klíče jsou vydávány přihlášením k běžnému uživatelskému účtu nebo ruční žádostí o klíč.", "HeaderApp": "Aplikace", "HeaderAudioBooks": "Audio knihy", @@ -202,7 +202,7 @@ "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", "HeaderConfirmProfileDeletion": "Potvrdit smazání profilu", - "HeaderConfirmRevokeApiKey": "Odvolat klíč Api", + "HeaderConfirmRevokeApiKey": "Odvolat klíč k API", "HeaderConnectToServer": "Připojit k serveru", "HeaderConnectionFailure": "Připojení selhalo", "HeaderContainerProfile": "Profil obalů", @@ -261,7 +261,7 @@ "HeaderMyDevice": "Moje zařízení", "HeaderMyMedia": "Moje média", "HeaderMyMediaSmall": "Moje média (malé)", - "HeaderNewApiKey": "Nový klíč API", + "HeaderNewApiKey": "Nový klíč k API", "HeaderNextEpisodePlayingInValue": "Přehrávání další epizody za {0}", "HeaderNextVideoPlayingInValue": "Přehrávání dalšího videa za {0}", "HeaderOnNow": "Právě teď", @@ -1278,7 +1278,7 @@ "ButtonTogglePlaylist": "Playlist", "LabelStable": "Stabilní", "LabelChromecastVersion": "Verze Chromecastu", - "ApiKeysCaption": "Seznam povolených API klíčů", + "ApiKeysCaption": "Seznam povolených klíčů k API", "LabelEnableHttpsHelp": "Naslouchání na uvedeném portu HTTPS. K fungování je nutné nakonfigurovat i platný certifikát.", "LabelEnableHttps": "Povolit HTTPS", "HeaderServerAddressSettings": "Nastavení adresy serveru", From a5800ac2e3a932fcec3bdceeb66e355b926928c4 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Mon, 14 Sep 2020 12:34:11 +0000 Subject: [PATCH 279/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 57333b5a3a..5543564a11 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -147,7 +147,7 @@ "AllComplexFormats": "Tất cả các định dạng phức tạp (ASS, SSA, VOBSUB, PGS, SUB, IDX, ...)", "AllChannels": "Tất cả các kênh", "Alerts": "Cảnh Báo", - "Albums": "Albums", + "Albums": "Bộ Sưu Tập", "Aired": "Đã phát sóng", "AirDate": "Ngày phát sóng", "AdditionalNotificationServices": "Duyệt qua danh mục plugin để cài đặt các dịch vụ thông báo bổ sung.", @@ -193,7 +193,7 @@ "ColorTransfer": "Chuyển đổi màu", "ColorSpace": "Bộ mã màu", "ColorPrimaries": "Những màu chủ đạo", - "Collections": "Bộ sưu tập", + "Collections": "Bộ Sưu Tập", "ClientSettings": "Cài đặt thiết bị phát", "CinemaModeConfigurationHelp": "Chế độ Cinema giúp bạn mang lại trải nghiệm rạp chiếu phim ngay tại phòng khách với khả năng phát trailers và những đoạn mở đầu tuỳ chọn trước phần chính của bộ phim.", "ChannelNumber": "Kênh số", @@ -280,7 +280,7 @@ "HeaderApiKey": "API Key", "HeaderAllowMediaDeletionFrom": "Cho Phép Xoá Nội Dung", "HeaderAlert": "Thông Báo", - "HeaderAlbumArtists": "Nghệ Sĩ Album", + "HeaderAlbumArtists": "Bộ Sưu Tập Nghệ sĩ", "HeaderAdmin": "Quản Trị", "HeaderAdditionalParts": "Phần Bổ Sung", "HeaderAddUpdateImage": "Thêm/Thay Đổi Hình Ảnh", @@ -301,18 +301,18 @@ "GuestStar": "Ngôi sao khách mời", "GroupVersions": "Chia nhóm theo phiên bản", "GroupBySeries": "Chia nhóm theo bộ", - "Genres": "Thể loại", + "Genres": "Thể Loại", "Genre": "Thể loại", "General": "Tổng Hợp", "Fullscreen": "Toàn màn hình", "Friday": "Thứ Sáu", "FormatValue": "Định dạng: {0}", - "Folders": "Thư mục", + "Folders": "Thư Mục", "Filters": "Bộ lọc", "File": "Tập tin", "FetchingData": "Đang tải thêm thông tin", "Features": "Mục đặc trưng", - "Favorites": "Mục yêu thích", + "Favorites": "Sở Thích", "Favorite": "Mục yêu thích", "FastForward": "Tua nhanh", "FFmpegSavePathNotFound": "Máy chủ không thể tìm thấy chương trình FFmpeg trong đường dẫn bạn đã nhập. FFprobe thì cũng cần thiết và phải nằm trong cùng thư mục bên trên. Những phần mềm này thường được tổng hợp cùng nhau trong một lượt tải. Hãy thử lại sau khi kiểm tra đường dẫn.", @@ -701,5 +701,18 @@ "LabelPassword": "Mật khẩu:", "LabelNotificationEnabled": "Bật thông báo này", "LabelNewsCategories": "", - "LabelStable": "Ổn Định" + "LabelStable": "Ổn Định", + "LabelTonemappingAlgorithm": "Chọn thuật toán ánh xạ Tone màu để sử dụng:", + "TonemappingAlgorithmHelp": "Ánh xạ Tone màu có thể được tinh chỉnh. Nếu bạn không quen với tùy chọn này, hãy giữ mặc định.
    Giá trị mặc định: Reinhard.", + "TonemappingRangeHelp": "Chọn dải màu đầu ra. Tự động là giống như dải màu đầu vào.", + "StopPlayback": "Dừng Phát", + "Preview": "Xem Trước", + "SubtitleVerticalPositionHelp": "Số dòng nơi văn bản xuất hiện. Số dương cho biết từ trên xuống. Số âm cho biết từ dưới lên.", + "Movies": "Phim", + "Photos": "Ảnh", + "Playlists": "Danh Sách Chơi", + "Shows": "Các Chương Trình", + "Songs": "Các Bài Hát", + "Sync": "Đồng Bộ", + "ValueSpecialEpisodeName": "Đặc Biệt - {0}" } From d3d02af2a586900c5569bad1c5d7327cd7a1615e Mon Sep 17 00:00:00 2001 From: Serhiy Date: Mon, 14 Sep 2020 15:41:34 +0000 Subject: [PATCH 280/582] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index f1e30b754f..5d794dbc2b 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1372,5 +1372,11 @@ "Bwdif": "BWDIF", "UseDoubleRateDeinterlacing": "Raddoppia il frame rate durante il deinterlacciamento", "KnownProxiesHelp": "Lista degli IP separati da virgola dei proxy utilizzati per connettersi a Jellyfin. Ciò consente di gestire al meglio gli header X-Forwarded-For. Richiede il reboot.", - "LabelKnownProxies": "Proxy conosciuti:" + "LabelKnownProxies": "Proxy conosciuti:", + "LabelColorSpace": "Spazio colore:", + "LabelVideoRange": "Range video:", + "MediaInfoColorSpace": "Spazio colore", + "ThumbCard": "Miniatura", + "PosterCard": "Locandina", + "LabelOpenclDevice": "Dispositivo OpenCL:" } From 660f2216356c60fd7409054967d110a112f00934 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Mon, 14 Sep 2020 13:14:49 +0000 Subject: [PATCH 281/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 113 +++++++++++++++++++++++++++++++++----------- 1 file changed, 85 insertions(+), 28 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 5543564a11..c4b3ce343d 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -29,7 +29,7 @@ "LabelDay": "Ngày:", "LabelEnableDlnaPlayTo": "Cho phép DLNA chạy để", "LabelEvent": "Sự kiện:", - "LabelFinish": "Kết thúc", + "LabelFinish": "Xong", "LabelLanguage": "Ngôn ngữ:", "LabelName": "Tên:", "LabelNewPassword": "Mật khẩu mới:", @@ -112,7 +112,7 @@ "BurnSubtitlesHelp": "Xác định xem máy chủ có nên ghi phụ đề khi chuyển đổi video hay không. Tránh thực hiện việc này sẽ cải thiện hiệu suất máy chủ đáng kể. Chọn Tự động để ghi các phụ đề có định dạng dựa trên hình ảnh (VOBSUB, PGS, SUB, IDX, ...) và một vài phụ đề ASS/SSA nhất định.", "Browse": "Duyệt", "BoxRear": "Hộp (mặt sau)", - "Books": "Sách", + "Books": "Các Quyển Sách", "BookLibraryHelp": "Âm thanh và sách văn bản được hỗ trợ. Xem lại {0} hướng dẫn đặt tên sách {1}.", "Blacklist": "Danh sách đen", "BirthPlaceValue": "Nơi sinh: {0}", @@ -121,13 +121,13 @@ "Backdrops": "Phông nền", "Backdrop": "Phông nền", "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.", + "AuthProviderHelp": "Chọn nhà cung cấp xác thực được dùng để xác thực mật khẩu người dùng này.", "Audio": "Âm thanh", "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", "AsManyAsPossible": "Càng nhiều càng tốt", - "Artists": "Nghệ Sĩ", + "Artists": "Các Nghệ Sĩ", "AroundTime": "Khoảng", "Anytime": "Bất cứ lúc nào", "AnyLanguage": "Ngôn Ngữ Bất Kỳ", @@ -187,7 +187,7 @@ "ConfirmDeleteItems": "Xoá những mục này sẽ xoá chúng khỏi ổ cứng và thư viện của bạn. Bạn có chắc chắn muốn tiếp tục?", "ConfirmDeleteItem": "Xoá mục này sẽ xoá nó khỏi ổ cứng và thư viện của bạn. Bạn có chắc chắn muốn tiếp tục?", "ConfirmDeleteImage": "Bạn có chắc chắn xoá ảnh này?", - "ConfigureDateAdded": "Thiết lập cách xác định \"ngày thêm vào\" trong mục cài đặt Thư Viện của phần quản lý máy chủ Jellyfin", + "ConfigureDateAdded": "Định cấu hình cách xác định ngày đã thêm trong trang tổng quan trong cài đặt thư viện máy chủ Jellyfin", "Composer": "Tác giả", "CommunityRating": "Đánh giá của cộng đồng", "ColorTransfer": "Chuyển đổi màu", @@ -197,7 +197,7 @@ "ClientSettings": "Cài đặt thiết bị phát", "CinemaModeConfigurationHelp": "Chế độ Cinema giúp bạn mang lại trải nghiệm rạp chiếu phim ngay tại phòng khách với khả năng phát trailers và những đoạn mở đầu tuỳ chọn trước phần chính của bộ phim.", "ChannelNumber": "Kênh số", - "Channels": "Kênh", + "Channels": "Các Kênh", "ChannelNameOnly": "Chỉ kênh {0}", "ChannelAccessHelp": "Chọn những kênh để chia vẻ với người dùng này. Người quản lý sẽ có thể thay đổi toàn bộ kênh bằng cách sử dụng bộ quản lý thông tin.", "ChangingMetadataImageSettingsNewContent": "Thay đổi về thiết lập của việc tải thông tin hoặc hình ảnh sẽ chỉ có tác dụng với những nội dung mới được thêm vào thư viện. Để những thiết lập mới có tác dụng với nội dung đã có sẵn, bạn sẽ phải cập nhật lại thông tin của chúng.", @@ -222,7 +222,7 @@ "Directors": "Đạo Diễn", "Director": "Đạo Diễn", "DirectStreaming": "Phát trực tuyến", - "DirectStreamHelp2": "Phát trực tuyến sử dụng rất ít tài nguyên máy chủ mà không giảm chất lượng video.", + "DirectStreamHelp2": "Phát trực tiếp sử dụng ít sức mạnh xử lý với chất lượng video bị giảm thiểu chút ít.", "DirectStreamHelp1": "Nội dung này tương thích với thiết bị về độ phân giải và dạng mã hoá (H.264, AC3, v.v.), nhưng lại không tương tích định dạng (mkv, avi, wmv, v.v.). Video sẽ được chuyển đổi định dạng trực tiếp ngay trước khi phát trên thiết bị.", "DirectPlaying": "Phát trực tiếp", "DeviceAccessHelp": "Thiết lập này chỉ áp dụng cho những thiết bị có thể định danh và sẽ không chặn được truy cập từ trình duyệt. Chọn lọc thiết bị người dùng sẽ chặn người dùng này truy cập từ những thiết bị mới cho đến khi được duyệt.", @@ -233,7 +233,7 @@ "DeleteUserConfirmation": "Bạn có chắc chắn muốn xoá người dùng này?", "DeleteMedia": "Xoá nội dung", "DeleteDeviceConfirmation": "Bạn có chắc chắn muốn xoá thiết bị này? Nó sẽ xuất hiện lại khi người dùng đăng nhập bằng thiết bị đó.", - "DeinterlaceMethodHelp": "Chọn phương pháp khử xen kẽ khi chuyển mã những nội dung sử dụng phương pháp quét xen kẽ.", + "DeinterlaceMethodHelp": "Chọn phương pháp khử xen kẽ để sử dụng khi phần mềm chuyển mã nội dung xen kẽ. Khi tăng tốc phần cứng hỗ trợ khử xen kẽ phần cứng được bật, trình khử xen kẽ phần cứng sẽ được sử dụng thay cho cài đặt này.", "DefaultSubtitlesHelp": "Phụ đề được sử dụng dựa vào thiết lập mặc định (default) và bắt buộc (forced) trong phần thông tin bổ trợ. Tuỳ chọn ưu tiên ngôn ngữ sẽ có tác dụng khi có nhiều phụ đề khác nhau.", "DefaultMetadataLangaugeDescription": "Đây là thiết lập mặc định chung, bạn có thể tuỳ chỉnh thiết lập riêng cho từng thư viện.", "DisplayModeHelp": "Chọn kiểu bố trí giao diện mà bạn muốn.", @@ -247,12 +247,12 @@ "EditImages": "Chỉnh sửa hình ảnh", "Edit": "Chỉnh sửa", "EasyPasswordHelp": "Mã PIN tiện lợi được sử dụng cho việc truy cập offline trên những thiết bị được hỗ trợ và cũng có thể sử dụng dành cho truy cập dễ dàng trong nội mạng.", - "DropShadow": "Đổ Bóng", + "DropShadow": "Bóng đổ", "DrmChannelsNotImported": "Những kênh được bảo vệ bản quyền sẽ không được nhập vào.", "DownloadsValue": "{0} đã tải xuống", "EnableColorCodedBackgrounds": "Màu nền theo loại kênh", "HeaderDateIssued": "Ngày Phát Hành", - "HeaderContinueWatching": "Tiếp Tục Xem", + "HeaderContinueWatching": "Tiếp Tục Xem Tiếp", "HeaderContinueListening": "Tiếp Tục Nghe", "HeaderCodecProfileHelp": "Bộ giải mã chỉ ra những kiểu mã hoá nhất định mà một thiết bị có thể phát. Nếu một nội dung không thể phát, nó sẽ được chuyển mã, thậm chí nếu kiểu mã hoá đó được thiết lập phát trực tiếp.", "HeaderContainerProfileHelp": "Bộ định dạng chỉ ra những định dạng nhất định mà một thiết bị có thể phát. Nếu nội dung có định dạng không thể phát, nội dung sẽ được chuyển đổi định dạng, kể cả khi định dạng đó được thiết lập phát trực tiếp.", @@ -275,7 +275,7 @@ "HeaderAudioBooks": "Sách Nói", "HeaderAppearsOn": "Xuất Bản Vào", "HeaderApp": "Ứng dụng", - "HeaderApiKeysHelp": "Những ứng dụng khác cần có \"API key\" để tương tác với máy chủ Jellyfin. Những mã này được tạo ra bằng cách đăng nhập vào máy chủ Jellyfin, hoặc bạn có thể cung cấp cho ứng dụng một mã truy cập.", + "HeaderApiKeysHelp": "Ứng dụng bên ngoài cần có \"khóa API\" để giao tiếp với máy chủ Jellyfin. Khóa được cấp theo cách đăng nhập bằng tài khoản người dùng thông thường hoặc cấp khóa cho ứng dụng theo cách thủ công.", "HeaderApiKeys": "API Keys", "HeaderApiKey": "API Key", "HeaderAllowMediaDeletionFrom": "Cho Phép Xoá Nội Dung", @@ -325,10 +325,10 @@ "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.", "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.", + "ErrorDeletingItem": "Có lỗi xảy ra khi xoá mục này khỏi máy chủ Jellyfin. Hãy kiểm tra xem máy chủ Jellyfin có quyền ghi/xoá vào thư mục đa phương tiện và thử xóa lại sau.", "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.", "ErrorAddingTunerDevice": "Có lỗi xảy ra khi thêm vào thiết bị bắt sóng này. Hãy thử lại khi chắc chắn rằng nó có thể truy cập.", - "ErrorAddingMediaPathToVirtualFolder": "Có lỗi xảy ra khi thêm đường dẫn này. Hãy chắc chắn rằng đường dẫn này đúng và máy chủ Jellyfin có quyền truy cập dữ liệu ở đường dẫn đó.", + "ErrorAddingMediaPathToVirtualFolder": "Có lỗi xảy ra khi thêm đường dẫn phương tiện này. Vui lòng đảm bảo đường dẫn chính xác và Jellyfin được phép truy cập vào vị trí đó.", "ErrorAddingListingsToSchedulesDirect": "Có lỗi xảy ra khi thêm danh sách này vào tài khoản Schedules Direct của bạn. Schedules Direct chỉ cho phép một số lượng danh sách nhất định mỗi tài khoản. Bạn có thể cần phải đăng nhập vào trang web của Schedules Direct và xoá những danh sách khác trước khi có thể thêm danh sách mới.", "Episodes": "Tập", "Episode": "Tập", @@ -385,7 +385,7 @@ "HeaderLatestRecordings": "Bản Ghi Âm/Ghi Hình Mới Nhất", "HeaderLatestMusic": "Âm Nhạc Mới Nhất", "HeaderLatestMedia": "Nội Dung Mới Nhất", - "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ợ.", + "HeaderKodiMetadataHelp": "Để bật hoặc tắt chức năng tệp thông tin chi tiết NFO, hãy chỉnh sửa thư viện và xác định vị trí nơi lưu tệp NFO.", "HeaderKeepSeries": "Lưu Series", "HeaderKeepRecording": "Tiếp Tục Ghi Âm/Ghi Hình", "HeaderInstantMix": "Trộn Lẫn Nhanh", @@ -421,7 +421,7 @@ "HeaderDeleteDevice": "Xoá Thiết Bị", "HeaderDefaultRecordingSettings": "Thiết Lập Ghi Âm/Ghi Hình Mặc Định", "HeaderRecordingOptions": "Tuỳ Chọn Ghi Âm/Ghi Hình", - "HeaderProfileServerSettingsHelp": "Những thông tin này về máy chủ Jellyfin sẽ hiển thị trên các thiết bị phát được kết nối.", + "HeaderProfileServerSettingsHelp": "Các giá trị này kiểm soát cách máy chủ sẽ tự hiển thị với máy khách.", "HeaderServerSettings": "Cài Đặt Máy Chủ", "HeaderSeriesStatus": "Trạng Thái Series", "HeaderSeriesOptions": "Tuỳ Chọn Series", @@ -513,15 +513,15 @@ "LabelAccessStart": "Thời gian bắt đầu:", "LabelAccessEnd": "Thời gian kết thúc:", "LabelAccessDay": "Ngày trong tuần:", - "LabelAbortedByServerShutdown": "(Đã huỷ bởi máy chủ ngừng hoạt động)", + "LabelAbortedByServerShutdown": "(Bị hủy bỏ do máy chủ ngừng hoạt động)", "Label3DFormat": "Định dạng 3D:", "Kids": "Trẻ Em", "Items": "Mục", "ItemCount": "{0} mục", "InstantMix": "Trộn Lẫn Nhanh", "InstallingPackage": "Đang cài đặt {0} (phiên bản {1})", - "ImportMissingEpisodesHelp": "Nếu bật tuỳ chọn này, thông tin bị thiếu trong các tập phim sẽ được nhập vào cơ sở dữ liệu của máy chủ Jellyfin và hiển thị trong các phần và series. Điều này có thể làm việc quét thư viện lâu hơn rất nhiều.", - "ImportFavoriteChannelsHelp": "Nếu bật tuỳ chọn này, chỉ những kênh yêu thích trong thiết bị bắt sóng sẽ được nhập vào.", + "ImportMissingEpisodesHelp": "Thông tin về các tập bị thiếu sẽ được nhập vào cơ sở dữ liệu của bạn và hiển thị trong các phần và loạt phim. Điều này có thể làm quá trình quét thư viện lâu hơn đáng kể.", + "ImportFavoriteChannelsHelp": "Chỉ các kênh được đánh dấu là ưa thích trên thiết bị dò kênh mới được nhập.", "Images": "Hình Ảnh", "Identify": "Nhận Dạng", "HttpsRequiresCert": "Để bật kết nối bảo mật, bạn cần phải cung cấp một Chứng Chỉ SSL đáng tin cậy, ví dụ như \"Let's Encrypt\". Hãy cung cấp Chứng Chỉ SSL hoặc là tắt tính năng kết nối bảo mật.", @@ -633,20 +633,20 @@ "LabelImportOnlyFavoriteChannels": "Giới hạn để chỉ nhập vào những kênh yêu thích", "LabelImageType": "Loại hình ảnh:", "LabelImageFetchersHelp": "Kích hoạt và xếp hạng chương trình tải hình ảnh theo thứ tự ưu tiên.", - "LabelIdentificationFieldHelp": "Một phần chuỗi không phân biệt viết hoa/thường hoặc regex expression.", + "LabelIdentificationFieldHelp": "Một chuỗi không phân biệt viết hoa/thường hoặc biểu thức chính quy.", "LabelIconMaxWidth": "Chiều ngang tối đa của biểu tượng:", "LabelIconMaxHeight": "Chiều cao tối đa của biểu tượng:", - "LabelHttpsPortHelp": "TCP port mà máy chủ Jellyfin HTTPS nên kết nối vào.", - "LabelHttpsPort": "HTTPS port trên máy chủ:", + "LabelHttpsPortHelp": "Số cổng TCP cho máy chủ HTTPS.", + "LabelHttpsPort": "Số cổng HTTPS cục bộ:", "LabelHomeScreenSectionValue": "Mục trên trang chủ {0}:", - "LabelHomeNetworkQuality": "Chất lượng mạng trong nhà:", + "LabelHomeNetworkQuality": "Chất lượng mạng nhà:", "LabelHardwareAccelerationTypeHelp": "Hỗ trợ phần cần những thiết lập bổ sung.", - "LabelHardwareAccelerationType": "Hỗ trợ phần cứng:", + "LabelHardwareAccelerationType": "Tăng tốc phần cứng:", "LabelEncoderPreset": "Thiết lập cài sẵn của mã H264 và H265:", "LabelH264Crf": "CRF của mã H264:", - "LabelGroupMoviesIntoCollectionsHelp": "Khi hiển thị danh sách phim, các bộ phim thuộc về một bộ sưu tập sẽ hiển thị trong một nhóm.", - "LabelGroupMoviesIntoCollections": "Nhóm phim vào bộ sưu tập", - "LabelServerNameHelp": "Tên này sẽ được sử dụng để phân biệt máy chủ và giá trị mặc định là tên của máy tính chủ.", + "LabelGroupMoviesIntoCollectionsHelp": "Khi hiển thị danh sách phim, các bộ phim trong một bộ sưu tập sẽ hiển thị như một mục được nhóm lại.", + "LabelGroupMoviesIntoCollections": "Gom nhóm các phim vào bộ sưu tập", + "LabelServerNameHelp": "Tên này sẽ được dùng để phân biệt máy chủ và sẽ mặc định là tên của máy tính chủ.", "LabelFriendlyName": "Tên thân thiện:", "LabelFormat": "Định dạng:", "LabelForgotPasswordUsernameHelp": "Nhập vào tên tài khoản nếu bạn nhớ nó.", @@ -703,7 +703,7 @@ "LabelNewsCategories": "", "LabelStable": "Ổn Định", "LabelTonemappingAlgorithm": "Chọn thuật toán ánh xạ Tone màu để sử dụng:", - "TonemappingAlgorithmHelp": "Ánh xạ Tone màu có thể được tinh chỉnh. Nếu bạn không quen với tùy chọn này, hãy giữ mặc định.
    Giá trị mặc định: Reinhard.", + "TonemappingAlgorithmHelp": "Ánh xạ Tone màu có thể được tinh chỉnh. Nếu bạn không quen với tùy chọn này, hãy giữ mặc định.
    Giá trị mặc định: Reinhard.", "TonemappingRangeHelp": "Chọn dải màu đầu ra. Tự động là giống như dải màu đầu vào.", "StopPlayback": "Dừng Phát", "Preview": "Xem Trước", @@ -714,5 +714,62 @@ "Shows": "Các Chương Trình", "Songs": "Các Bài Hát", "Sync": "Đồng Bộ", - "ValueSpecialEpisodeName": "Đặc Biệt - {0}" + "ValueSpecialEpisodeName": "Đặc Biệt - {0}", + "Filter": "Bộ lọc", + "New": "Mới", + "Shuffle": "Xáo trộn", + "Share": "Chia sẻ", + "ShowAdvancedSettings": "Hiển thị cài đặt nâng cao", + "ShowIndicatorsFor": "Hiển thị các chỉ số cho:", + "ShowLess": "Hiển thị ít hơn", + "ShowMore": "Hiển thị thêm", + "ShowYear": "Hiển thị năm", + "ShowTitle": "Hiển thị tiêu đề", + "RepeatEpisodes": "Lặp lại các tập", + "RepeatMode": "Chế Độ Lặp Lại", + "RepeatAll": "Lặp lại tất cả", + "Repeat": "Lặp lại", + "RemoveFromPlaylist": "Xóa khỏi danh sách phát", + "RemoveFromCollection": "Xóa khỏi bộ sưu tập", + "RememberMe": "Ghi nhớ Tôi", + "ReleaseDate": "Ngày phát hành", + "RefreshQueued": "Làm mới đã xếp hàng đợi.", + "RefreshMetadata": "Làm mới thông tin chi tiết", + "RecordingScheduled": "Ghi theo lịch trình.", + "RefreshDialogHelp": "Thông tin chi tiết được làm mới trên cài đặt và dịch vụ internet được bật trong trang tổng quan.", + "Refresh": "Làm mới", + "Record": "Ghi lại", + "RecommendationStarring": "Diễn Viên Chính {0}", + "RecommendationDirectedBy": "Do {0} đạo diễn", + "RecommendationBecauseYouWatched": "Bởi vì bạn đã xem {0}", + "RecommendationBecauseYouLike": "Bởi vì bạn thích {0}", + "RecentlyWatched": "Đã xem gần đây", + "Rate": "Đánh giá", + "OptionResumable": "Có thể tiếp tục", + "OptionSpecialEpisode": "Đặc biệt", + "OptionSubstring": "Chuỗi con", + "OptionResElement": "thành phần res", + "MessageItemsAdded": "Đã thêm vào các mục.", + "MessageInvalidForgotPasswordPin": "Đã nhập mã pin không hợp lệ hoặc hết hạn. Vui lòng thử lại.", + "MessageInvalidUser": "Sai tên đăng nhập hoặc mật khẩu. Vui lòng thử lại.", + "MessageItemSaved": "Mục đã được lưu.", + "LabelTVHomeScreen": "Màn hình chính chế độ TV:", + "OptionProtocolHttp": "HTTP", + "OptionPlainVideoItemsHelp": "Tất cả các video được trình bày trong DIDL như \"object.item.videoItem\" thay vì một loại cụ thể hơn, chẳng hạn như \"object.item.videoItem.movie\".", + "OptionPlainVideoItems": "Hiển thị tất cả video dưới dạng các mục video thuần túy", + "OptionPremiereDate": "Ngày công chiếu", + "OptionProtocolHls": "Luồng Trực Tiếp HTTP", + "OptionRandom": "Ngẫu Nhiên", + "OptionRegex": "Biểu thức chính quy", + "OptionRequirePerfectSubtitleMatch": "Chỉ tải xuống phụ đề phù hợp nhất với tệp video của tôi", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "Điều này là bắt buộc đối với một số thiết bị không có thời gian tìm kiếm tốt.", + "OptionReportByteRangeSeekingWhenTranscoding": "Báo cáo máy chủ có hỗ trợ tìm kiếm byte khi chuyển mã", + "OptionReleaseDate": "Ngày Phát Hành", + "MessageForgotPasswordInNetworkRequired": "Vui lòng thử lại trong mạng nhà của bạn để bắt đầu quá trình đặt lại mật khẩu.", + "MessageImageTypeNotSelected": "Vui lòng chọn một kiểu ảnh từ menu thả xuống.", + "MessageImageFileTypeAllowed": "Chỉ các tệp JPEG và PNG được hỗ trợ.", + "LabelKnownProxies": "Các Proxy đã biết:", + "LabelIconMaxResHelp": "Độ phân giải tối đa của các biểu tượng được hiển thị thông qua thuộc tính upnp:icon .", + "KnownProxiesHelp": "Danh sách địa chỉ IP của các proxy đã biết được sử dụng khi kết nối với phiên bản Jellyfin của bạn được phân tách bằng dấu phẩy. Đây là bắt buộc để sử dụng đúng các tiêu đề X-Forwarded-For. Yêu cầu khởi động lại sau khi lưu.", + "Image": "Hình Ảnh" } From 3fa3f3e56b33f6b763467299ec7fca182f489a2a Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2020 20:28:13 +0000 Subject: [PATCH 282/582] [Security] Bump bl from 1.2.2 to 1.2.3 Bumps [bl](https://github.com/rvagg/bl) from 1.2.2 to 1.2.3. **This update includes a security fix.** - [Release notes](https://github.com/rvagg/bl/releases) - [Commits](https://github.com/rvagg/bl/compare/v1.2.2...v1.2.3) Signed-off-by: dependabot-preview[bot] --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 25e4d12c68..8fa0ad14ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1896,9 +1896,9 @@ bindings@^1.5.0: file-uri-to-path "1.0.0" bl@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== dependencies: readable-stream "^2.3.5" safe-buffer "^5.1.1" @@ -9880,9 +9880,9 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex@^1.1.0: version "1.1.0" From 436dfb85e56821209a49e4a36dcc419e39510b75 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2020 20:31:20 +0000 Subject: [PATCH 283/582] Bump query-string from 6.13.1 to 6.13.2 Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.13.1 to 6.13.2. - [Release notes](https://github.com/sindresorhus/query-string/releases) - [Commits](https://github.com/sindresorhus/query-string/compare/v6.13.1...v6.13.2) 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 3a74cd9d67..ebb5da98ec 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "material-design-icons-iconfont": "^6.1.0", "native-promise-only": "^0.8.0-a", "page": "^1.11.6", - "query-string": "^6.13.1", + "query-string": "^6.13.2", "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.0.2", "sortablejs": "^1.10.2", diff --git a/yarn.lock b/yarn.lock index 25e4d12c68..0be2dcc996 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9237,10 +9237,10 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -query-string@^6.13.1: - version "6.13.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.1.tgz#d913ccfce3b4b3a713989fe6d39466d92e71ccad" - integrity sha512-RfoButmcK+yCta1+FuU8REvisx1oEzhMKwhLUNcepQTPGcNMp1sIqjnfCtfnvGSQZQEhaBHvccujtWoUV3TTbA== +query-string@^6.13.2: + version "6.13.2" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.2.tgz#3585aa9412c957cbd358fd5eaca7466f05586dda" + integrity sha512-BMmDaUiLDFU1hlM38jTFcRt7HYiGP/zt1sRzrIWm5zpeEuO1rkbPS0ELI3uehoLuuhHDCS8u8lhFN3fEN4JzPQ== dependencies: decode-uri-component "^0.2.0" split-on-first "^1.0.0" From b4386473e66291d082ba2d1566a6869bb0364176 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2020 20:31:59 +0000 Subject: [PATCH 284/582] Bump stylelint from 13.7.0 to 13.7.1 Bumps [stylelint](https://github.com/stylelint/stylelint) from 13.7.0 to 13.7.1. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/master/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/13.7.0...13.7.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 3a74cd9d67..a0fd03a962 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "postcss-loader": "^3.0.0", "postcss-preset-env": "^6.7.0", "style-loader": "^1.1.3", - "stylelint": "^13.7.0", + "stylelint": "^13.7.1", "stylelint-config-rational-order": "^0.1.2", "stylelint-no-browser-hacks": "^1.2.1", "stylelint-order": "^4.1.0", diff --git a/yarn.lock b/yarn.lock index 25e4d12c68..70a0e73330 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10830,10 +10830,10 @@ stylelint-order@^4.1.0: postcss "^7.0.31" postcss-sorting "^5.0.1" -stylelint@^13.7.0: - version "13.7.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.7.0.tgz#8d7a4233063b2f06e9f28b3405ff189e334547b5" - integrity sha512-1wStd4zVetnlHO98VjcHQbjSDmvcA39smkZQMct2cf+hom40H0xlQNdzzbswoG/jGBh61/Ue9m7Lu99PY51O6A== +stylelint@^13.7.1: + version "13.7.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.7.1.tgz#bee97ee78d778a3f1dbe3f7397b76414973e263e" + integrity sha512-qzqazcyRxrSRdmFuO0/SZOJ+LyCxYy0pwcvaOBBnl8/2VfHSMrtNIE+AnyJoyq6uKb+mt+hlgmVrvVi6G6XHfQ== dependencies: "@stylelint/postcss-css-in-js" "^0.37.2" "@stylelint/postcss-markdown" "^0.36.1" From 0bd89010d3780e5c77478c1545531f86fd4a230e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2020 20:32:26 +0000 Subject: [PATCH 285/582] Bump hls.js from 0.14.11 to 0.14.12 Bumps [hls.js](https://github.com/video-dev/hls.js) from 0.14.11 to 0.14.12. - [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.11...v0.14.12) 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 3a74cd9d67..ac4ce520c9 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "fast-text-encoding": "^1.0.3", "flv.js": "^1.5.0", "headroom.js": "^0.11.0", - "hls.js": "^0.14.11", + "hls.js": "^0.14.12", "howler": "^2.2.0", "intersection-observer": "^0.11.0", "jellyfin-apiclient": "^1.4.1", diff --git a/yarn.lock b/yarn.lock index 25e4d12c68..96eb1f6d17 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5484,10 +5484,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.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.11.tgz#b3d123c45b1feb8c5c19f70574074fa0a77e016b" - integrity sha512-l7fm8AAEIIVc9r+RZbVAPcpccWIk6oludZ7R78B/ZJsYvuL5LJF8h0o8iayoIcbPT8ArM8vBhOkWFbe9q46Kew== +hls.js@^0.14.12: + version "0.14.12" + resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.12.tgz#d57042115bee8570861482a8245cbd8b064a6cb4" + integrity sha512-ye0KUhGp/K36gUb49MV5sA+uvEy4GVX4mJur8Bd2uCyLKpZs2zVm6aPHLR8iF3SBKbDF6n/SDHVgrTQxKSmsZQ== dependencies: eventemitter3 "^4.0.3" url-toolkit "^2.1.6" From bc0c690defa9158335a6a11579dd8d7698fa0211 Mon Sep 17 00:00:00 2001 From: Thomas Schwery Date: Mon, 14 Sep 2020 19:58:47 +0000 Subject: [PATCH 286/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index ed243f98a4..83490ba61a 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1392,5 +1392,10 @@ "LabelKnownProxies": "Proxies connus :", "KnownProxiesHelp": "Liste séparée par des virgules d'adresses IP des proxies connus utilisés pour se connecter à l'instance Jellyfin. Ceci est nécessaire afin de pouvoir utiliser correctement les entêtes X-Forwarded-For. Nécessite un redémarrage après sauvegarde.", "LabelTonemappingThreshold": "Seuil de mappage tonal :", - "LabelTonemappingDesatHelp": "Désature les couleurs qui dépassent ce niveau de luminosité. Plus ce paramètre est élevé, plus les informations de couleur seront préservées. Ce paramètre permet d'éviter les couleurs anormalement éclatantes pour les couleurs super-lumineuses en les transformant (de manière lisse) en blanc. Ceci rend l'image plus naturelle au prix d'une réduction d'information dans les couleurs hors-gamme. Les valeurs recommandées et par défaut sont 0 et 0.5." + "LabelTonemappingDesatHelp": "Désature les couleurs qui dépassent ce niveau de luminosité. Plus ce paramètre est élevé, plus les informations de couleur seront préservées. Ce paramètre permet d'éviter les couleurs anormalement éclatantes pour les couleurs super-lumineuses en les transformant (de manière lisse) en blanc. Ceci rend l'image plus naturelle au prix d'une réduction d'information dans les couleurs hors-gamme. Les valeurs recommandées et par défaut sont 0 et 0.5.", + "LabelTonemappingParamHelp": "Affine l'algorithme de mappage tonal. Les valeurs recommandées et par défaut sont indéfinies. Laissez en général ces valeurs vides.", + "LabelTonemappingPeak": "Pic de mappage tonal :", + "LabelTonemappingThresholdHelp": "Les paramètres de l'algorithme de mappage tonal sont affinés pour chaque scène. Un seuil est utilisé pour détecter lorsque la scène change. Si la distance entre la moyenne actuelle de la luminosité du cadre et la moyenne mobile actuelle dépasse la valeur du seuil, la moyenne et le pic de la luminosité du cadre sont recalculés. Les valeurs recommandées et par défaut sont 0.8 et 0.2.", + "LabelVideoRange": "Plage vidéo :", + "MediaInfoVideoRange": "Plage vidéo" } From 7a6cbc6b609a734568ecfb347cc437a93544a568 Mon Sep 17 00:00:00 2001 From: Harry Sintonen Date: Tue, 15 Sep 2020 00:52:22 +0000 Subject: [PATCH 287/582] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 2c73fbcd14..861eda2698 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -61,7 +61,7 @@ "AllowMediaConversion": "Salli median muunto", "AllowMediaConversionHelp": "Salli tai kiellä pääsy median muunnostoimintoon.", "AllowOnTheFlySubtitleExtractionHelp": "Sisäiset tekstitykset voidaan lähettää päätelaitteille ilmitekstinä, jotta videota ei tarvitsisi uudelleenkoodata. Joissain järjestelmissä tämä voi viedä paljon aikaa ja aiheuttaa toiston pysähtymisen purun ajaksi. Poista tämä käytöstä polttaaksesi tekstiykset suoraan videoon, mikäli päätelaite ei tue tekstityksiä.", - "AllowRemoteAccess": "Salli etäyhteydet tähän Jellyfin palvelimeen.", + "AllowRemoteAccess": "Salli etäyhteydet tähän palvelimeen.", "AllowRemoteAccessHelp": "Jos merkki puuttuu, kaikki ulkopuoliset yhteydet estetään.", "AllowedRemoteAddressesHelp": "Pilkuilla eroteltu lista IP-osoitteista tai IP/verkonpeite merkinnöistä verkoille, joille sallitaan etäyhteys palvelimeen. Tyhjäksi jätetty lista tarkoittaa, että kaikki osoitteet sallitaan.", "AlwaysPlaySubtitles": "Näytä aina tekstitykset", @@ -145,10 +145,10 @@ "ColorTransfer": "Värien siirto", "CommunityRating": "Yhteisön arvosana", "Composer": "Säveltäjä", - "ConfigureDateAdded": "Lisäyspäivämäärän määritykset löytyvät kirjaston asetuksien alta Jellyfin-palvelimen kojelaudalla", + "ConfigureDateAdded": "Lisäyspäivämäärän määritykset löytyvät kirjaston asetuksien alta palvelimen kojelaudalla", "ConfirmDeleteImage": "Poista kuva?", - "ConfirmDeleteItem": "Tämän esineen poistaminen poistaa sen sekä tiedostojärjestelmästä että mediakirjastosta. Haluatko varmasti jatkaa?", - "ConfirmDeleteItems": "Näiden esineiden poistaminen poistaa ne sekä tiedostojärjestelmästä että mediakirjastosta. Haluatko varmasti jatkaa?", + "ConfirmDeleteItem": "Tämän kohteen poistaminen poistaa sen sekä tiedostojärjestelmästä että mediakirjastosta. Haluatko varmasti jatkaa?", + "ConfirmDeleteItems": "Näiden kohteiden poistaminen poistaa ne sekä tiedostojärjestelmästä että mediakirjastosta. Haluatko varmasti jatkaa?", "ConfirmDeletion": "Vahvista poistaminen", "ConfirmEndPlayerSession": "Haluaisitko sammuttaa Jellyfinin tähän aikaan {0}?", "Connect": "Yhdistä", From e529411c3804fa8971e28e48a3e30c643a08e370 Mon Sep 17 00:00:00 2001 From: "federico.antoniazzi.000" Date: Tue, 15 Sep 2020 00:29:46 +0000 Subject: [PATCH 288/582] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index 5d794dbc2b..02ee3e0684 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1373,10 +1373,12 @@ "UseDoubleRateDeinterlacing": "Raddoppia il frame rate durante il deinterlacciamento", "KnownProxiesHelp": "Lista degli IP separati da virgola dei proxy utilizzati per connettersi a Jellyfin. Ciò consente di gestire al meglio gli header X-Forwarded-For. Richiede il reboot.", "LabelKnownProxies": "Proxy conosciuti:", - "LabelColorSpace": "Spazio colore:", - "LabelVideoRange": "Range video:", + "LabelColorSpace": "Spazio colori:", + "LabelVideoRange": "Intervallo video:", "MediaInfoColorSpace": "Spazio colore", "ThumbCard": "Miniatura", "PosterCard": "Locandina", - "LabelOpenclDevice": "Dispositivo OpenCL:" + "LabelOpenclDevice": "Dispositivo OpenCL:", + "MediaInfoVideoRange": "Intervallo video", + "UseDoubleRateDeinterlacingHelp": "Questa opzione usa il campo frequenza durante il deinterlacciamento, detto anche \"bob deinterlacing\", il quale raddoppia il frame rate del video per fornire \"full motion\" come se guardassi un video interlacciato su una TV." } From 4533f8f1acebb4178b77618ebab72904c1a58b0d Mon Sep 17 00:00:00 2001 From: Harry Sintonen Date: Tue, 15 Sep 2020 01:30:26 +0000 Subject: [PATCH 289/582] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 861eda2698..fd4df6d781 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -4,7 +4,7 @@ "ButtonCancel": "Peruuta", "ButtonSignOut": "Sign out", "Delete": "Poista", - "DeleteImage": "Poista Kuva", + "DeleteImage": "Poista kuva", "DeleteImageConfirmation": "Oletko varma että haluat poistaa tämän kuvan?", "DeleteUser": "Poista käyttäjä", "DeleteUserConfirmation": "Oletko varma että haluat poistaa tämän käyttäjän?", @@ -150,7 +150,7 @@ "ConfirmDeleteItem": "Tämän kohteen poistaminen poistaa sen sekä tiedostojärjestelmästä että mediakirjastosta. Haluatko varmasti jatkaa?", "ConfirmDeleteItems": "Näiden kohteiden poistaminen poistaa ne sekä tiedostojärjestelmästä että mediakirjastosta. Haluatko varmasti jatkaa?", "ConfirmDeletion": "Vahvista poistaminen", - "ConfirmEndPlayerSession": "Haluaisitko sammuttaa Jellyfinin tähän aikaan {0}?", + "ConfirmEndPlayerSession": "Haluaisitko katkaista etätoiston kohteessa {0}?", "Connect": "Yhdistä", "ContinueWatching": "Jatka katselua", "Continuing": "Jatketaan", @@ -159,9 +159,9 @@ "DatePlayed": "Toistopäivämäärä", "Default": "Oletus", "ErrorDefault": "Pyynnön käsittelyssä tapahtui virhe. Yritä myöhemmin uudelleen.", - "DefaultMetadataLangaugeDescription": "Nämä ovat sinun oletuksetasetukset ja niitä voidaan muokata kirjastokohtaisesti.", + "DefaultMetadataLangaugeDescription": "Nämä ovat sinun oletusasetuksesi 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ä.", + "DeleteDeviceConfirmation": "Oletko varma, että haluat poistaa tämän laitteen? Se ilmaantuu uudelleen seuraavan kerran, kun jokin käyttäjä kirjautuu sillä.", "DeleteMedia": "Poista media", "Descending": "Laskeva", "Desktop": "Työpöytä", @@ -1010,7 +1010,7 @@ "ValueCodec": "Codec: {0}", "ValueAudioCodec": "Audio Codec: {0}", "SeriesYearToPresent": "{0} - Nykyhetki", - "DeinterlaceMethodHelp": "Valitse lomituksen poistomenetelmä, jota käytetään lomitetun sisällön transkoodaukseen.", + "DeinterlaceMethodHelp": "Valitse lomituksen poistomenetelmä, jota käytetään lomitetun sisällön transkoodaukseen. Mikäli omituksen poiston hallitsevaa rautakiihdytettyä purkua käytetään, ei tätä asetusta oteta huomioon.", "FormatValue": "Muoto: {0}", "General": "Yleinen", "FetchingData": "Noudetaan lisätietoja", @@ -1045,5 +1045,6 @@ "ApiKeysCaption": "Lista aktiivisista API-avaimista", "HeaderApiKeysHelp": "Ulkoiset sovellukset tarvitsevat API-avaimen voidakseen toimia Jellyfin -palvelimen kanssa. Avaimet myönnetään joko kirjautumalla sisään Jellyfin -käyttäjätunnuksella tai myöntämällä sellainen sovellukselle manuaalisesti.", "HeaderAdditionalParts": "Muut osat", - "HeaderActiveRecordings": "Käynnissä olevat nauhoitukset" + "HeaderActiveRecordings": "Käynnissä olevat nauhoitukset", + "Data": "Tieto" } From 323be6152e5527cfeb11f0d2b99542ca71ca6ac1 Mon Sep 17 00:00:00 2001 From: Harry Sintonen Date: Tue, 15 Sep 2020 01:41:43 +0000 Subject: [PATCH 290/582] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 164 ++++++++++++++++++++++++++++---------------- 1 file changed, 104 insertions(+), 60 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index fd4df6d781..04348d5d4b 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1,8 +1,8 @@ { "MessageBrowsePluginCatalog": "Selaa lisäosakuvastoamme katsoaksesi saatavilla olevia lisäosia.", - "ButtonAddUser": "Lisää Käyttäjä", + "ButtonAddUser": "Lisää käyttäjä", "ButtonCancel": "Peruuta", - "ButtonSignOut": "Sign out", + "ButtonSignOut": "Kirjaudu ulos", "Delete": "Poista", "DeleteImage": "Poista kuva", "DeleteImageConfirmation": "Oletko varma että haluat poistaa tämän kuvan?", @@ -10,10 +10,10 @@ "DeleteUserConfirmation": "Oletko varma että haluat poistaa tämän käyttäjän?", "FileNotFound": "Tiedostoa ei löydy.", "FileReadCancelled": "Tiedoston luku on peruutettu.", - "FileReadError": "Virhe tiedoston luvun aikana.", + "FileReadError": "Virhe tiedostoa luettaessa.", "LabelAudioLanguagePreference": "Äänen ensisijainen kieli:", "LabelCountry": "Maa:", - "LabelCurrentPassword": "Tämän hetkinen salsana:", + "LabelCurrentPassword": "Tämän hetkinen salasana:", "LabelFinish": "Valmis", "LabelLanguage": "Kieli:", "LabelMaxParentalRating": "Suurin sallittu ikäraja:", @@ -57,7 +57,7 @@ "AllowOnTheFlySubtitleExtraction": "Salli tekstitysten purkaminen lennossa", "AccessRestrictedTryAgainLater": "Pääsy on toistaiseksi estetty. Yritä myöhemmin uudelleen.", "Aired": "Esityspäivä", - "AllowHWTranscodingHelp": "Salli virittimen muuntaa bittivirtaa lennossa. Tämä voi vähentää muunnoksen tarvetta Jellyfin-palvelimella.", + "AllowHWTranscodingHelp": "Salli virittimen muuntaa bittivirtaa lennossa. Tämä voi vähentää videomuunnoksen tarvetta palvelimella.", "AllowMediaConversion": "Salli median muunto", "AllowMediaConversionHelp": "Salli tai kiellä pääsy median muunnostoimintoon.", "AllowOnTheFlySubtitleExtractionHelp": "Sisäiset tekstitykset voidaan lähettää päätelaitteille ilmitekstinä, jotta videota ei tarvitsisi uudelleenkoodata. Joissain järjestelmissä tämä voi viedä paljon aikaa ja aiheuttaa toiston pysähtymisen purun ajaksi. Poista tämä käytöstä polttaaksesi tekstiykset suoraan videoon, mikäli päätelaite ei tue tekstityksiä.", @@ -89,14 +89,14 @@ "Box": "Laatikko", "BoxRear": "Laatikko (takaa)", "Browse": "Selaa", - "ButtonAddMediaLibrary": "Lisää Mediakirjasto", - "ButtonAddScheduledTaskTrigger": "Lisää Liipaisin", - "ButtonAddServer": "Lisää Palvelin", + "ButtonAddMediaLibrary": "Lisää mediakirjasto", + "ButtonAddScheduledTaskTrigger": "Lisää liipaisin", + "ButtonAddServer": "Lisää palvelin", "ButtonArrowLeft": "Vasen", "ButtonArrowRight": "Oikea", "ButtonAudioTracks": "Ääniraidat", "ButtonBack": "Takaisin", - "ButtonChangeServer": "Vaihda Palvelinta", + "ButtonChangeServer": "Vaihda palvelinta", "ButtonEditOtherUserPreferences": "Muokkaa tämän käyttäjän profiilia, kuvaa ja henkilökohtaisia asetuksia.", "ButtonForgotPassword": "Unohtuiko salasana", "ButtonFullscreen": "Kokonäyttötila", @@ -136,7 +136,7 @@ "Categories": "Kategoriat", "ChangingMetadataImageSettingsNewContent": "Muutokset metadatan tai kuvituksien lataamisasetuksiin vaikuttaa ainoastaan tulevaan kirjaston sisältöön. Päivittääksesi myös vanhan sisällön sinun täytyy päivittää metadata manuaalisesti.", "ChannelAccessHelp": "Valitse kanavat jotka jaetaan tämän käyttäjän kanssa. Järjestelmänvalvojat pystyvät muuttamaan kaikkia kanavia käyttämällä metadatan hallintatyökalua.", - "ChannelNameOnly": "Kanava {0} ainoastaan", + "ChannelNameOnly": "Vain kanava {0}", "Channels": "Kanavat", "CinemaModeConfigurationHelp": "Elokuvatila tuo teatterikokemuksen suoraan olohuoneeseesi mahdollistamalla trailereiden ja omien introjen toistamisen ennen päänumeroa.", "Collections": "Kokoelmat", @@ -169,8 +169,8 @@ "DeviceAccessHelp": "Tämä pätee ainoastaan laitteisiin, jotka voidaan tunnistaa uniikkina ja ei estä selainpääsyä. Uusien laitteiden suodattaminen estää niiden käyttämisen ennen hyväksyntää täältä.", "DirectPlaying": "Suoraan toistaminen", "DirectStreamHelp1": "Tämä media on yhteensopiva laitteen kanssa katsoen resoluutiota ja mediatyyppiä (H.264, AC3, jne.), mutta se ei ole yhteensopivassa tiedostosäiliössä (mkv, avi, wmv, jne.). Tämä video uudelleenpakataan lennossa ennen laitteeseen lähetystä.", - "DirectStreamHelp2": "Tiedoston suoraan toistaminen käyttää erittäin vähän prosessorin resursseja ilman laadun heikentämistä.", - "DirectStreaming": "Suora suoratoisto", + "DirectStreamHelp2": "Tiedoston suoratoisto käyttää erittäin vähän prosessorin resursseja ilman laadun heikkenemistä.", + "DirectStreaming": "Suoratoisto", "Director": "Ohjaaja", "Directors": "Ohjaajat", "Disc": "Levy", @@ -178,7 +178,7 @@ "DisplayInMyMedia": "Näytä kotinäytöllä", "DisplayInOtherHomeScreenSections": "Näytä kotinäytöllä osastoja kuten viimeisin media ja jatka katselua", "DisplayMissingEpisodesWithinSeasons": "Näytä puuttuvat jaksot tuotantokausissa", - "DisplayMissingEpisodesWithinSeasonsHelp": "Tämän pitää aktivoida TV-kirjastoille myös palvelimen asetuksissa.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Tämä pitää aktivoida TV-kirjastoille myös palvelimen asetuksissa.", "DisplayModeHelp": "Valitse ulkonäkö, jonka haluat käyttöliittymälle.", "DoNotRecord": "Älä tallenna", "Down": "Alas", @@ -193,7 +193,7 @@ "EditSubtitles": "Muokkaa tekstityksiä", "ChannelNumber": "Kanavan numero", "CancelSeries": "Peruuta sarja", - "CopyStreamURL": "Kopioi Toiston Osoite", + "CopyStreamURL": "Kopioi toisto-osoite", "ButtonAddImage": "Lisää kuva", "Movies": "Elokuvat", "HeaderContinueWatching": "Jatka katsomista", @@ -211,35 +211,35 @@ "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.", "DeathDateValue": "Kuoli: {}", "CustomDlnaProfilesHelp": "Luo uusi profiili kohdistaaksesi uuteen laitteeseen tai ohittaaksesi järjestelmäprofiilin.", - "ErrorAddingMediaPathToVirtualFolder": "Media-polkua lisätessä ilmeni ongelma. Varmista, että polku on kirjoitettu oikein ja Jellyfin Palvelimella pääsy sijaintiin.", + "ErrorAddingMediaPathToVirtualFolder": "Media-polkua lisätessä ilmeni ongelma. Varmista, että polku on kirjoitettu oikein ja Jellyfinillä on pääsy tähän sijaintiin.", "Episodes": "Jaksot", "EndsAtValue": "Päättyy {0}", "Ended": "Päättynyt", "EnableThemeSongsHelp": "Soita tunnussäveliä taustalla selatessasi kirjastoa.", "EnableStreamLoopingHelp": "Laita tämä päälle, jos suoratoistot sisältävät vain muutaman sekuntin verran dataa jota tarvitsee pyytää jatkuvasti. Tämän päälle laittaminen ilman toiminnon tarvetta voi aiheuttaa ongelmia.", - "EnablePhotosHelp": "Kuvat tunnistetaan ja näytetään muiden media-tiedostojen ohessa.", + "EnablePhotosHelp": "Kuvat tunnistetaan ja näytetään muiden mediatiedostojen ohessa.", "EnablePhotos": "Näytä valokuvat", "EnableNextVideoInfoOverlay": "Näytä seuraavan videon tiedot toiston aikana", - "EnableHardwareEncoding": "Salli rauta-tason muunnoksen kiihdytys", + "EnableHardwareEncoding": "Salli videomuunnoksen rautakiihdytys", "EnableExternalVideoPlayers": "Ulkoiset videosoittimet", "EnableDisplayMirroring": "Näytön peilaus", - "EnableColorCodedBackgrounds": "Väri-koodatut taustat", - "EnableCinemaMode": "Teatteri-tila", + "EnableColorCodedBackgrounds": "Värikoodatut taustat", + "EnableCinemaMode": "Teatteritila", "EnableBackdropsHelp": "Näytä taustat tietyillä sivuilla selatessasi kirjastoa.", "EnableExternalVideoPlayersHelp": "Videota soitettaessa näytetään erillinen valikko.", "Depressed": "Painettu", - "ButtonSplit": "jaa", + "ButtonSplit": "Jaa", "AskAdminToCreateLibrary": "Pyydä järjestelmän ylläpitäjää luomaan kirjasto.", - "EnableStreamLooping": "Looppaa suoralähetykset", + "EnableStreamLooping": "Uudelleentoista suoralähetykset automaattisesti", "EnableNextVideoInfoOverlayHelp": "Näytä videon lopussa tietoja seuraavasta videosta soittolistalla.", - "ClientSettings": "Pääte-asetukset", + "ClientSettings": "Pääteasetukset", "AllowFfmpegThrottlingHelp": "Kun uudelleenkoodaus tai remux ehtii tarpeeksi toiston edelle, keskeytä laskenta jotta laskentaresursseja kuluu vähemmän. Tämä on hyödyllistä jos katselet hyppimättä eri kohtiin. Älä käytä jos toiston kanssa ilmenee ongelmia.", "AllowFfmpegThrottling": "Rajoita uudelleenkoodaus", - "ErrorDeletingItem": "Tiedostoa poistaessa Jellyfin Palvelimelta ilmeni virhe. Varmista, että Jellyfin Palvelimella on kirjoitusoikeudet mediakansioon ja kokeile uudestaan.", + "ErrorDeletingItem": "Tiedostoa palvelimelta poistaessa ilmeni virhe. Varmista, että Jellyfinillä on kirjoitusoikeudet mediakansioon ja kokeile uudestaan.", "ErrorAddingXmlTvFile": "XMLTV-tiedostoa käyttäessä tapahtui virhe. Varmista, että tiedosto on olemassa ja kokeile uudestaan.", "ErrorAddingTunerDevice": "Viritintä lisätessä ilmeni ongelma. Varmista, että se on kytketty oikein ja kokeile uudestaan.", - "EnableThemeVideosHelp": "Soita tunnusvideoita taustalla, selatessasi kirjastoa.", - "AlbumArtist": "Albumin Artisti", + "EnableThemeVideosHelp": "Soita tunnusvideoita taustalla selatessasi kirjastoa.", + "AlbumArtist": "Albumin artisti", "Album": "Albumi", "Played": "Toistetut", "PlayFromBeginning": "Toista alusta", @@ -321,7 +321,7 @@ "LabelPreferredDisplayLanguage": "Ensisijainen näyttökieli:", "LabelOriginalTitle": "Alkuperäinen nimi:", "LabelOriginalAspectRatio": "Alkuperäinen kuvasuhde:", - "LabelEnableAutomaticPortMapHelp": "Automaattisesti ohjaa reitittimesi julkiset portit palvelimesi paikallisiin portteihin UPnP:n kautta. Tämä ei välttämättä toimi kaikkien reitittimien tai verkkoasetusten kanssa. Muutokset tulevat voimaan vasta palvelimen uudelleenkäynnistyksen yhteydessä.", + "LabelEnableAutomaticPortMapHelp": "Ohjaa reitittimesi julkiset portit automaattisesti palvelimesi paikallisiin portteihin UPnP:n avulla. Tämä ei välttämättä toimi kaikkien reitittimien tai verkkoasetusten kanssa. Muutokset tulevat voimaan vasta palvelimen uudelleenkäynnistyksen yhteydessä.", "LabelEnableAutomaticPortMap": "Salli reitittimen porttien automaattinen avaaminen (UPnP)", "LabelDownloadLanguages": "Latauskielet:", "LabelDisplaySpecialsWithinSeasons": "Näytä erityiset jaksot kausien sisällä, jolloin ne ilmestyivät", @@ -331,13 +331,13 @@ "LabelDateTimeLocale": "Päivämäärä ja aika:", "LabelCustomRating": "Mukautettu luokitus:", "LabelCustomCss": "Mukautettu CSS:", - "LabelCertificatePassword": "Sertifikaatin salasana:", + "LabelCertificatePassword": "Varmenteen salasana:", "LabelArtistsHelp": "Erota useita käyttämällä ;", "LabelAppNameExample": "Esimerkiksi: Sickbeard, Sonarr", "LabelAppName": "Sovelluksen nimi", "LabelAllowedRemoteAddressesMode": "Etä-IP-osoitesuodattimen tila:", "LabelAllowedRemoteAddresses": "Etä-IP-osoitesuodatin:", - "LabelAllowHWTranscoding": "Salli laitteistolla transkoodaus", + "LabelAllowHWTranscoding": "Salli rautatranskoodaus", "LabelAlbumArtMaxWidth": "Albumin kuvan maksimileveys:", "LabelAlbumArtMaxHeight": "Albumin kuvan maksimikorkeus:", "LabelAbortedByServerShutdown": "(Keskeytetty palvelimen sammutuksen takia)", @@ -345,7 +345,7 @@ "Horizontal": "Horisontaalinen", "HideWatchedContentFromLatestMedia": "Piilota toistettu sisältö \"uusin media\"-luettelosta", "HeaderUpcomingOnTV": "Tulossa televisiossa", - "HeaderTypeImageFetchers": "{0} Kuvien hakijat", + "HeaderTypeImageFetchers": "{0} kuvien hakijaa", "HeaderTranscodingProfile": "Transkoodausprofiili", "HeaderTracks": "Raidat", "HeaderThisUserIsCurrentlyDisabled": "Tämä käyttäjä on poistettu käytöstä", @@ -362,7 +362,7 @@ "HeaderRemoveMediaLocation": "Poista mediasijainti", "HeaderRecordingOptions": "Tallennusasetukset", "HeaderRecentlyPlayed": "Äskettäin toistetut", - "HeaderProfileServerSettingsHelp": "Nämä arvot mukauttavat sitä, kuinka Jellyfin-palvelin esittää itsensä laitteelle.", + "HeaderProfileServerSettingsHelp": "Nämä arvot mukauttavat sitä, kuinka palvelin esittää itsensä laitteelle.", "HeaderProfileInformation": "Profiili-informaatio", "HeaderPreferredMetadataLanguage": "Ensisijainen metadatan kieli", "HeaderPinCodeReset": "Nollaa PIN-koodi", @@ -699,7 +699,7 @@ "InstallingPackage": "Asennetaan {0} (versio {1})", "HeaderVideoTypes": "Videotyypit", "HeaderVideoType": "Videotyyppi", - "HeaderUploadImage": "Lataa kuva", + "HeaderUploadImage": "Lähetä kuva", "HeaderTypeText": "Kirjoita teksti", "HeaderTunerDevices": "Viritinlaitteet", "HeaderTuners": "Virittimet", @@ -711,9 +711,9 @@ "HeaderSortBy": "Lajittele", "HeaderSelectServerCachePath": "Valitse palvelimen välimuistin polku", "HeaderSelectPath": "Valitse polku", - "HeaderSelectCertificatePath": "Valitse sertifikaatin polku", + "HeaderSelectCertificatePath": "Valitse varmenteen polku", "HeaderSelectMetadataPath": "Valitse metadatan polku", - "HeaderSecondsValue": "{0} Sekuntia", + "HeaderSecondsValue": "{0} sekuntia", "HeaderRunningTasks": "Käynnissä olevat tehtävät", "HeaderRevisionHistory": "Versiohistoria", "HeaderRemoveMediaFolder": "Poista mediakansio", @@ -726,8 +726,8 @@ "LabelLanNetworks": "Lähiverkot:", "LabelKodiMetadataDateFormat": "Julkaisupäivämäärän muoto:", "LabelImageType": "Kuvan tyyppi:", - "LabelIconMaxWidth": "Ikonin enimmäisleveys:", - "LabelIconMaxHeight": "Ikonin enimmäiskorkeus:", + "LabelIconMaxWidth": "Kuvakkeen enimmäisleveys:", + "LabelIconMaxHeight": "Kuvakkeen enimmäiskorkeus:", "LabelGroupMoviesIntoCollections": "Ryhmitä elokuvat kokoelmiin", "LabelFormat": "Muoto:", "LabelFont": "Kirjasinlaji:", @@ -782,7 +782,7 @@ "HeaderApiKeys": "API-avaimet", "HeaderApiKey": "API-avain", "HeaderAdmin": "Ylläpitäjä", - "HeaderAddUpdateImage": "Lisää/Päivitä kuva", + "HeaderAddUpdateImage": "Lisää/päivitä kuva", "HeaderAddToPlaylist": "Lisää soittolistaan", "HeaderAddToCollection": "Lisää kokoelmaan", "HeaderActiveDevices": "Aktiiviset laitteet", @@ -798,12 +798,12 @@ "LabelLocalHttpServerPortNumber": "Paikallisen HTTP-portin numero:", "LabelKodiMetadataSaveImagePaths": "Tallenna kuvien polut NFO-tiedostojen sisälle", "LabelKidsCategories": "Lasten kategoriat:", - "LabelHttpsPortHelp": "TCP-portin numero, jota Jellyfinin HTTPS-palvelimen tulee kuunnella.", + "LabelHttpsPortHelp": "HTTPS-palvelimen TCP-portin numero.", "LabelHttpsPort": "Paikallisen HTTPS-portin numero:", "LabelHardwareAccelerationTypeHelp": "Laitteistokiihdytys vaatii ylimääräistä määritystä.", "LabelHardwareAccelerationType": "Laitteistokiihdytys:", - "LabelEncoderPreset": "H264 and H265 encoding preset:", - "LabelH264Crf": "H264 encoding CRF:", + "LabelEncoderPreset": "H264- ja H265-enkoodaukset esiasetus:", + "LabelH264Crf": "H264-enkoodauksen CRF:", "LabelForgotPasswordUsernameHelp": "Anna käyttäjätunnuksesi, jos muistat sen.", "LabelEveryXMinutes": "Joka:", "LabelEndDate": "Päättymispäivä:", @@ -811,7 +811,7 @@ "LabelEnableDlnaDebugLoggingHelp": "Luo suuria lokitiedostoja ja tulisi käyttää vain tarvittaessa vianmääritystä varten.", "LabelEnableDlnaServerHelp": "Sallii verkon UPnP-laitteiden selata ja toistaa sisältöä tältä palvelimelta.", "LabelEnableDlnaServer": "Ota DLNA-palvelin käyttöön", - "LabelEnableDlnaPlayTo": "Salli DLNA toisto", + "LabelEnableDlnaPlayTo": "Salli DLNA-toisto", "LabelEnableDlnaDebugLogging": "Ota DLNA:n virheenjäljitys käyttöön", "LabelEnableBlastAliveMessages": "Lähetä hereilläolo -viesti", "LabelEnableBlastAliveMessagesHelp": "Ota tämä käyttöön, jos muilla verkon UPnP-laitteilla on ongelmia palvelimen havaitsemisessa.", @@ -824,11 +824,11 @@ "LabelDeviceDescription": "Laitteen kuvaus", "LabelDefaultScreen": "Oletusnäyttö:", "LabelDefaultUser": "Oletuskäyttäjä:", - "LabelCustomCertificatePathHelp": "Polku PKCS # 12-tiedostoon, joka sisältää sertifikaatin ja yksityisen avaimen, jotta TLS-tuki voidaan sallia henkilökohtaiselle verkkotunnukselle.", - "LabelCustomCertificatePath": "Mukautetun SSL-sertifikaatin polku:", + "LabelCustomCertificatePathHelp": "Polku PKCS #12-tiedostoon joka sisältää varmenteen ja yksityisen avaimen jolla TLS-tuki otetaan käyttöön omalle verkkotunnukselle.", + "LabelCustomCertificatePath": "Mukautetun SSL-varmenteen polku:", "LabelContentType": "Sisältötyyppi:", "LabelChannels": "Kanavat:", - "LabelCertificatePasswordHelp": "Jos sertifikaattisi vaatii salasanaa, laita se tähän.", + "LabelCertificatePasswordHelp": "Jos varmenteesi vaatii salasanaa, laita se tähän.", "LabelRuntimeMinutes": "Pituus (minuutteja):", "LabelReleaseDate": "Julkaisupäivä:", "Genre": "Tyylilaji", @@ -906,7 +906,7 @@ "LabelInternetQuality": "Verkkoyhteyden laatu:", "LabelEmbedAlbumArtDidl": "Upota albumin kuvamateriaali Didl:iin", "LabelDeinterlaceMethod": "Lomituksen poistamismenetelmä:", - "LabelAudioBitDepth": "Audion bittisyvyys:", + "LabelAudioBitDepth": "Äänen bittisyvyys:", "LabelAlbumArtists": "Albumin artistit:", "Items": "Kohteet", "ItemCount": "{0} kohdetta", @@ -919,7 +919,7 @@ "HeaderRecordingPostProcessing": "Tallennuksen jälkikäsittely", "HeaderParentalRatings": "Ikärajat", "HeaderOtherItems": "Muut kohteet", - "HeaderLiveTvTunerSetup": "Live-TV virittimen määritys", + "HeaderLiveTvTunerSetup": "Live-TV-virittimen määritys", "HeaderLibrarySettings": "Kirjaston asetukset", "HeaderGuideProviders": "TV-ohjelmaoppaiden tarjoajat", "HeaderEnabledFields": "Käytössä olevat kentät", @@ -941,19 +941,19 @@ "LabelEnableRealtimeMonitor": "Ota reaaliaikainen seuranta käyttöön", "LabelDropImageHere": "Pudota kuva tähän, tai paina selataksesi.", "LabelDroppedFrames": "Pudotettuja kuvia:", - "LabelDidlMode": "DIDL tila:", + "LabelDidlMode": "DIDL-tila:", "LabelCustomDeviceDisplayNameHelp": "Tätä nimeä käytetään laitteen tunnistamiseen. Jos tyhjä, käytetään laitteen nimeä.", - "LabelCustomCssHelp": "Käytä omaa CSS: ää web-käyttöliittymään.", + "LabelCustomCssHelp": "Käytä omia CSS-tyylimäärittelyjä web-käyttöliittymään.", "LabelCorruptedFrames": "Korruptoituneita kuvia:", "LabelCriticRating": "Kriitikoiden luokitus:", "LabelCommunityRating": "Yhteisön luokitus:", "LabelCancelled": "Peruttu", "LabelBlockContentWithTags": "Estä kohteet tunnisteilla:", - "LabelBitrate": "Bitrate:", - "LabelAudioSampleRate": "Audion näytteenottotaajuus:", - "LabelAudioChannels": "Audiokanavia:", - "LabelAudioBitrate": "Audion bitrate:", - "LabelAudioCodec": "Audio codec:", + "LabelBitrate": "Bittinopeus:", + "LabelAudioSampleRate": "Äänen näytteenottotaajuus:", + "LabelAudioChannels": "Äänikanavia:", + "LabelAudioBitrate": "Äänen bittinopeus:", + "LabelAudioCodec": "Äänen pakkauksenhallinta:", "LabelSubtitleDownloaders": "Tekstitysten lataajat:", "LabelSpecialSeasonsDisplayName": "Erikoiskauden näyttönimi:", "LabelSortTitle": "Lajitteluotsikko:", @@ -996,7 +996,7 @@ "LabelLibraryPageSize": "Kirjastosivun kohteiden määrä:", "LabelLibraryPageSizeHelp": "Asettaa kirjastosivulla näytettävien kohteiden määrän. Arvo 0 poistaa sivutuksen käytöstä.", "Unrated": "Luokittelematon", - "ExtractChapterImagesHelp": "Pikkukuvien luominen mahdollistaa sovellusten näyttää graafiikkaa valintavalikoissa. Prosessi voi olla hidas, prosessoria kuormittava ja saattaa vaatia useita gigatavuja tilaa. Se suoritetaan, kun videoita havaitaan, ja myös yöksi suunniteltuna tehtävänä. Aikataulu on konfiguroitavissa ajoitetuissa tehtävissä. Tätä tehtävää ei ole suositeltavaa suorittaa korkean kuormituksen aikana.", + "ExtractChapterImagesHelp": "Kappalekuvien luominen mahdollistaa sovellusten näyttää graafisia kohtausvalikoita. Prosessi voi olla hidas, prosessoria kuormittava ja saattaa vaatia useita gigatavuja tilaa. Se suoritetaan, kun videoita havaitaan, sekä myös yöksi suunniteltuna tehtävänä. Aikataulu on muokattavissa ajoitetuissa tehtävissä. Tätä tehtävää ei ole suositeltavaa suorittaa korkean kuormituksen aikana.", "OnWakeFromSleep": "Lepotilasta poistuttaessa", "WeeklyAt": "{0}sin klo {1}", "Whitelist": "Sallitut", @@ -1017,13 +1017,13 @@ "Features": "Ominaisuudet", "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.", + "ErrorGettingTvLineups": "TV-esiintyjälistan lataamisessa tapahtui virhe. Varmista, että tiedot on oikein ja yritä uudelleen.", "EnableDetailsBannerHelp": "Näyttää julistekuvan yksityiskohdat -sivun ylälaidassa.", - "EnableDetailsBanner": "Yksityiskohtien banneri", + "EnableDetailsBanner": "Yksityiskohtien julistekuva", "ButtonSyncPlay": "SyncPlay", "HeaderAccessSchedule": "Käyttöoikeusaikataulu", "HeaderAccessScheduleHelp": "Luo käyttöoikeusaikataulu rajoittaaksesi käyttöä tietylle aikavälille.", - "HardwareAccelerationWarning": "Hardwarekiihdytyksen käyttöönotto voi aiheuttaa epävakautta joissain ympäristöissä. Varmista että sekä käyttöjärjestelmäsi että videoajurisi ovat ajan tasalla. Mikäli huomaat ongelmia videotoistossa säädettyäsi tätä asetusta, sinun täytyy muuttaa asetus takaisin kohtaan \"Ei mitään\".", + "HardwareAccelerationWarning": "Rautakiihdytyksen käyttöönotto voi aiheuttaa epävakautta joissain ympäristöissä. Varmista että sekä käyttöjärjestelmäsi että videoajurisi ovat ajan tasalla. Mikäli huomaat ongelmia videotoistossa säädettyäsi tätä asetusta, sinun täytyy muuttaa asetus takaisin kohtaan \"Ei mitään\".", "EncoderPresetHelp": "Valitse nopeampi arvo kohentaaksesi suorituskykyä tai hitaampi arvo parantaaksesi kuvanlaatua.", "H264CrfHelp": "Constant Rate Factor (CRF) on x264 -enkooderin kuvanlaadun vakioasetus. Voit valita arvon lukujen 0 ja 51 väliltä, jossa matalammat arvot tarkoittavat parempaa kuvanlaatua (suurempien tiedostokokojen hinnalla). Järkevät arvot ovat väliltä 18-28. Vakioarvo x264:lle on 23, joten voit käyttää sitä lähtökohtana.", "GuideProviderSelectListings": "Valitse listaukset", @@ -1034,8 +1034,8 @@ "ErrorSavingTvProvider": "TV-palveluntarjoajaa lisättäessä tapahtui virhe. Varmista sen saatavuus ja yritä uudestaan.", "ErrorPleaseSelectLineup": "Valitse lineup ja yritä uudestaan. Mikäli lineuppeja ei ole saatavilla, varmista että käyttäjätunnuksesi, salasanasi sekä postinumerosi ovat oikein.", "ErrorAddingListingsToSchedulesDirect": "Lineuppia Schedules Direct -käyttäjätunnuksellesi lisättäessä ilmeni virhe. Schedules Direct sallii vain rajallisen määrän lineuppeja yhdelle käyttäjätunnukselle. Mikäli haluat jatkaa, voit esimerkiksi kirjautua Schedules Direct -sivustolle ja poistaa muita listauksia käyttäjätunnukseltasi.", - "EnableDecodingColorDepth10Vp9": "Salli 10-bittinen hardware dekoodaus (VP9)", - "EnableDecodingColorDepth10Hevc": "Salli 10-bittinen hardware dekoodaus (HEVC)", + "EnableDecodingColorDepth10Vp9": "Salli 10-bittinen rautapurku (VP9)", + "EnableDecodingColorDepth10Hevc": "Salli 10-bittinen rautapurku (HEVC)", "HeaderCastAndCrew": "Näyttelijät ja henkilökunta", "HeaderCancelSeries": "Peruuta sarja", "HeaderCancelRecording": "Peruuta tallennus", @@ -1043,8 +1043,52 @@ "HeaderBlockItemsWithNoRating": "Estä kaikki joissa ei ole luokitusta tai jonka luokitusta ei voida tunnistaa:", "HeaderAppearsOn": "Esiintyy seuraavissa", "ApiKeysCaption": "Lista aktiivisista API-avaimista", - "HeaderApiKeysHelp": "Ulkoiset sovellukset tarvitsevat API-avaimen voidakseen toimia Jellyfin -palvelimen kanssa. Avaimet myönnetään joko kirjautumalla sisään Jellyfin -käyttäjätunnuksella tai myöntämällä sellainen sovellukselle manuaalisesti.", + "HeaderApiKeysHelp": "Ulkoiset sovellukset tarvitsevat API-avaimen voidakseen toimia palvelimen kanssa. Avaimet myönnetään joko kirjautumalla sisään normaalilla käyttäjätunnuksella tai myöntämällä sellainen sovellukselle manuaalisesti.", "HeaderAdditionalParts": "Muut osat", "HeaderActiveRecordings": "Käynnissä olevat nauhoitukset", - "Data": "Tieto" + "Data": "Tieto", + "LabelImportOnlyFavoriteChannels": "Rajaa vain suosikkikanaviin", + "LabelHomeNetworkQuality": "Kotiverkon laatu:", + "LabelFriendlyName": "Käyttäjäystävällinen nimi:", + "LabelFileOrUrl": "Tiedosto tai URL:", + "LabelFailed": "Epäonnistui", + "LabelExtractChaptersDuringLibraryScan": "Tallenna kappalekuvat kirjastojen skannauksen yhteydessä", + "LabelBaseUrl": "Perus-URL:", + "LabelEvent": "Tapahtuma:", + "LabelEnableSingleImageInDidlLimit": "Rajoita yhteen upotettuun kuvaan", + "LabelEnableHttps": "Ota HTTPS käyttöön", + "LabelEnableHardwareDecodingFor": "Ota rautapurku käyttöön:", + "LabelDownMixAudioScale": "Äänen tehostus alasmiksatessa:", + "LabelDateAddedBehavior": "Lisäyspäivämääräkäytös uudelle sisällölle:", + "LabelBlastMessageInterval": "Hereiläolo-viestin väli", + "LabelBindToLocalNetworkAddress": "Kiinnitä verkko-osoitteeseen:", + "LabelAirsBeforeSeason": "Lähetetään ennen kautta:", + "LabelAirsBeforeEpisode": "Lähetetään ennen jaksoa:", + "LabelAirsAfterSeason": "Lähetetään kauden jälkeen:", + "LabelAirDays": "Lähetyspäivät:", + "LabelAccessStart": "Aloitusaika:", + "LabelAccessEnd": "Lopetusaika:", + "InstantMix": "Välitön miksaus", + "Image": "Kuva", + "HttpsRequiresCert": "Ottaaksesi suojatut yhteydet käyttöösi tulee sinun toimittaa luotettu SSL-varmenne (esim. Let's Encrypt). Ole hyvä ja toimita varmenne tai ota suojattu yhteys pois käytöstä.", + "HeaderSyncPlayEnabled": "Ryhmäkatselu päällä", + "HeaderSyncPlaySelectGroup": "Liity ryhmään", + "HeaderServerAddressSettings": "Palvelimen osoiteasetukset", + "HeaderOnNow": "Nyt lähetyksessä", + "HeaderLibraryOrder": "Kirjaston järjestys", + "HeaderLibraryAccess": "Kirjastopääsy", + "HeaderKeepSeries": "Pidä sarja", + "HeaderKeepRecording": "Jatka tallennusta", + "HeaderInstantMix": "Välitön miksaus", + "HeaderImageSettings": "Kuva-asetukset", + "HeaderImageOptions": "Kuvaoptiot", + "HeaderIdentificationHeader": "Tunnistusotsake", + "HeaderHttpsSettings": "HTTPS-asetukset", + "HeaderHttpHeaders": "HTTP-otsakkeet", + "HeaderFeatureAccess": "Pääsy toimintoihin", + "HeaderDVR": "DVR", + "HeaderDeviceAccess": "Laitepääsy", + "HeaderDeleteTaskTrigger": "Poista tehtävälaukaisin", + "HeaderChannelAccess": "Kanavapääsy", + "Other": "Muu" } From 55a083106159b7cd7a527a62ad7ef948eae43fd4 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2020 05:44:46 +0000 Subject: [PATCH 291/582] Bump css-loader from 4.2.2 to 4.3.0 Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 4.2.2 to 4.3.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.2.2...v4.3.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 24ea42c72a..4e6af20e55 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "browser-sync": "^2.26.12", "confusing-browser-globals": "^1.0.9", "copy-webpack-plugin": "^5.1.1", - "css-loader": "^4.2.2", + "css-loader": "^4.3.0", "cssnano": "^4.1.10", "del": "^5.1.0", "eslint": "^7.8.1", diff --git a/yarn.lock b/yarn.lock index d8e766ba12..ffe1e37d36 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3034,10 +3034,10 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.2.2.tgz#b668b3488d566dc22ebcf9425c5f254a05808c89" - integrity sha512-omVGsTkZPVwVRpckeUnLshPp12KsmMSLqYxs12+RzM9jRR5Y+Idn/tBffjXRvOE+qW7if24cuceFJqYR5FmGBg== +css-loader@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" + integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== dependencies: camelcase "^6.0.0" cssesc "^3.0.0" @@ -3049,7 +3049,7 @@ css-loader@^4.2.2: postcss-modules-scope "^2.2.0" postcss-modules-values "^3.0.0" postcss-value-parser "^4.1.0" - schema-utils "^2.7.0" + schema-utils "^2.7.1" semver "^7.3.2" css-prefers-color-scheme@^3.1.1: @@ -9930,7 +9930,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0, schema-utils@^2.7.1: +schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== From 504519e4c83c5575d342239fb08e1a433841895a Mon Sep 17 00:00:00 2001 From: Harry Sintonen Date: Tue, 15 Sep 2020 03:39:57 +0000 Subject: [PATCH 292/582] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 89 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 82 insertions(+), 7 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 04348d5d4b..7529df6202 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -220,7 +220,7 @@ "EnablePhotosHelp": "Kuvat tunnistetaan ja näytetään muiden mediatiedostojen ohessa.", "EnablePhotos": "Näytä valokuvat", "EnableNextVideoInfoOverlay": "Näytä seuraavan videon tiedot toiston aikana", - "EnableHardwareEncoding": "Salli videomuunnoksen rautakiihdytys", + "EnableHardwareEncoding": "Salli videomuunnoksen laitteistokiihdytys", "EnableExternalVideoPlayers": "Ulkoiset videosoittimet", "EnableDisplayMirroring": "Näytön peilaus", "EnableColorCodedBackgrounds": "Värikoodatut taustat", @@ -794,7 +794,7 @@ "LabelMaxScreenshotsPerItem": "Kuvakaappausten enimmäismäärä per kohde:", "LabelLoginDisclaimerHelp": "Viesti, joka näytetään kirjautumissivun alareunassa.", "LabelLockItemToPreventChanges": "Lukitse tämä kohde estääksesi tulevat muutokset", - "LabelLocalHttpServerPortNumberHelp": "TCP-portin numero, jota Jellyfinin HTTP-palvelimen tulee kuunnella.", + "LabelLocalHttpServerPortNumberHelp": "HTTP-palvelimen TCP-portin numero.", "LabelLocalHttpServerPortNumber": "Paikallisen HTTP-portin numero:", "LabelKodiMetadataSaveImagePaths": "Tallenna kuvien polut NFO-tiedostojen sisälle", "LabelKidsCategories": "Lasten kategoriat:", @@ -1010,7 +1010,7 @@ "ValueCodec": "Codec: {0}", "ValueAudioCodec": "Audio Codec: {0}", "SeriesYearToPresent": "{0} - Nykyhetki", - "DeinterlaceMethodHelp": "Valitse lomituksen poistomenetelmä, jota käytetään lomitetun sisällön transkoodaukseen. Mikäli omituksen poiston hallitsevaa rautakiihdytettyä purkua käytetään, ei tätä asetusta oteta huomioon.", + "DeinterlaceMethodHelp": "Valitse lomituksen poistomenetelmä, jota käytetään lomitetun sisällön transkoodaukseen. Mikäli omituksen poiston hallitsevaa laitteistokiihdytettyä purkua käytetään, ei tätä asetusta oteta huomioon.", "FormatValue": "Muoto: {0}", "General": "Yleinen", "FetchingData": "Noudetaan lisätietoja", @@ -1023,7 +1023,7 @@ "ButtonSyncPlay": "SyncPlay", "HeaderAccessSchedule": "Käyttöoikeusaikataulu", "HeaderAccessScheduleHelp": "Luo käyttöoikeusaikataulu rajoittaaksesi käyttöä tietylle aikavälille.", - "HardwareAccelerationWarning": "Rautakiihdytyksen käyttöönotto voi aiheuttaa epävakautta joissain ympäristöissä. Varmista että sekä käyttöjärjestelmäsi että videoajurisi ovat ajan tasalla. Mikäli huomaat ongelmia videotoistossa säädettyäsi tätä asetusta, sinun täytyy muuttaa asetus takaisin kohtaan \"Ei mitään\".", + "HardwareAccelerationWarning": "Laitteistokiihdytyksen käyttöönotto voi aiheuttaa epävakautta joissain ympäristöissä. Varmista että sekä käyttöjärjestelmäsi että videoajurisi ovat ajan tasalla. Mikäli huomaat ongelmia videotoistossa säädettyäsi tätä asetusta, sinun täytyy muuttaa asetus takaisin kohtaan \"Ei mitään\".", "EncoderPresetHelp": "Valitse nopeampi arvo kohentaaksesi suorituskykyä tai hitaampi arvo parantaaksesi kuvanlaatua.", "H264CrfHelp": "Constant Rate Factor (CRF) on x264 -enkooderin kuvanlaadun vakioasetus. Voit valita arvon lukujen 0 ja 51 väliltä, jossa matalammat arvot tarkoittavat parempaa kuvanlaatua (suurempien tiedostokokojen hinnalla). Järkevät arvot ovat väliltä 18-28. Vakioarvo x264:lle on 23, joten voit käyttää sitä lähtökohtana.", "GuideProviderSelectListings": "Valitse listaukset", @@ -1034,8 +1034,8 @@ "ErrorSavingTvProvider": "TV-palveluntarjoajaa lisättäessä tapahtui virhe. Varmista sen saatavuus ja yritä uudestaan.", "ErrorPleaseSelectLineup": "Valitse lineup ja yritä uudestaan. Mikäli lineuppeja ei ole saatavilla, varmista että käyttäjätunnuksesi, salasanasi sekä postinumerosi ovat oikein.", "ErrorAddingListingsToSchedulesDirect": "Lineuppia Schedules Direct -käyttäjätunnuksellesi lisättäessä ilmeni virhe. Schedules Direct sallii vain rajallisen määrän lineuppeja yhdelle käyttäjätunnukselle. Mikäli haluat jatkaa, voit esimerkiksi kirjautua Schedules Direct -sivustolle ja poistaa muita listauksia käyttäjätunnukseltasi.", - "EnableDecodingColorDepth10Vp9": "Salli 10-bittinen rautapurku (VP9)", - "EnableDecodingColorDepth10Hevc": "Salli 10-bittinen rautapurku (HEVC)", + "EnableDecodingColorDepth10Vp9": "Salli 10-bittinen laitteistopurku (VP9)", + "EnableDecodingColorDepth10Hevc": "Salli 10-bittinen laitteistopurku (HEVC)", "HeaderCastAndCrew": "Näyttelijät ja henkilökunta", "HeaderCancelSeries": "Peruuta sarja", "HeaderCancelRecording": "Peruuta tallennus", @@ -1090,5 +1090,80 @@ "HeaderDeviceAccess": "Laitepääsy", "HeaderDeleteTaskTrigger": "Poista tehtävälaukaisin", "HeaderChannelAccess": "Kanavapääsy", - "Other": "Muu" + "Other": "Muu", + "Writers": "Kirjoittajat", + "Video": "Video", + "Upload": "Lähetä", + "TabAccess": "Pääsy", + "Subtitle": "Tekstitys", + "ShowMore": "Näytä lisää", + "ShowLess": "Näytä vähemmän", + "SeriesSettings": "Sarjan asetukset", + "SelectServer": "Valitse palvelin", + "RepeatMode": "Toistomoodi", + "RepeatOne": "Toista yksi", + "ResetPassword": "Nollaa salasana", + "Restart": "Aloita alusta", + "Rewind": "Kelaa alkuun", + "SaveChanges": "Tallenna muutokset", + "Profile": "Profiili", + "ProductionLocations": "Tuotantosijainnit", + "PreviousTrack": "Hyppää edelliseen", + "PlaybackRate": "Toistonopeus", + "PictureInPicture": "Kuva kuvassa", + "Photo": "Valokuva", + "Person": "Henkilö", + "PackageInstallFailed": "{0} (version {1}) asennus epäonnistui.", + "PackageInstallCompleted": "{0} (version {1}) asennus valmis.", + "PackageInstallCancelled": "{0} (version {1}) asennus peruttu.", + "NextTrack": "Hyppää seuraavaan", + "MusicVideos": "Musiikkivideot", + "MinutesAfter": "minuuttia jälkeen", + "MinutesBefore": "minuuttia ennen", + "MessageSyncPlayErrorMedia": "Ryhmäkatselun päällekytkentä epäonnistui! Mediavirhe.", + "MessageSyncPlayErrorNoActivePlayer": "Ei aktiivista soitinta. Ryhmäkatselu on kytketty pois päältä.", + "MessageSyncPlayErrorMissingSession": "Ryhmäkatselun päällekytkentä epäonnistui! Puuttuva istunto.", + "MessageSyncPlayErrorAccessingGroups": "Virhe ryhmälistaa luettaessa.", + "MessageSyncPlayLibraryAccessDenied": "Pääsy sisältöön on rajattu.", + "MessageSyncPlayJoinGroupDenied": "Lupa ryhmäkatselun käyttöön tarvitaan.", + "MessageSyncPlayCreateGroupDenied": "Lupa ryhmän luomiseen vaaditaan.", + "MessageSyncPlayGroupDoesNotExist": "Ryhmään liittyminen epäonnistui koska sitä ei ole olemassa.", + "MessageSyncPlayPlaybackPermissionRequired": "Toistolupa tarvitaan.", + "MessageSyncPlayNoGroupsAvailable": "Ei ryhmiä. Aloita ensin jokin toisto.", + "MessageSyncPlayGroupWait": "{0} puskuroi…", + "MessageSyncPlayUserLeft": "{0} poistui ryhmästä.", + "MessageSyncPlayUserJoined": "{0} liittyi ryhmään.", + "MessageSyncPlayDisabled": "Ryhmäkatselu otettu pois käytöstä.", + "MessageSyncPlayEnabled": "Ryhmäkatselu otettu käyttöön.", + "MediaInfoBitDepth": "Bittisyvyys", + "LabelVaapiDevice": "VA API-laite:", + "LabelUserLoginAttemptsBeforeLockout": "Väärien kirjautumisyritysten määrä ennen tilin lukitsemista:", + "LabelSyncPlayAccess": "Ryhmäkatselupääsy", + "LabelSyncPlayAccessNone": "Pois käytöstä tälle käyttäjälle", + "LabelSyncPlayAccessJoinGroups": "Salli käyttäjän liittyä ryhmiin", + "LabelSyncPlayAccessCreateAndJoinGroups": "Salli käyttäjän luoda ryhmiä ja liittyä niihin", + "LabelSyncPlayLeaveGroupDescription": "Poista ryhmäkatselu käytöstä", + "LabelSyncPlayLeaveGroup": "Poistu ryhmästä", + "LabelSyncPlayNewGroupDescription": "Luo uusi ryhmä", + "LabelSyncPlayNewGroup": "Uusi ryhmä", + "LabelSportsCategories": "Urheilukategoriat:", + "LabelSortBy": "Järjestä:", + "LabelServerHost": "Isäntä:", + "EnableFasterAnimations": "Nopeammat animaatiot", + "LabelRequireHttps": "Vaadi HTTPS", + "LabelRecord": "Tallenna:", + "LabelPlayMethod": "Toistotapa:", + "LabelKodiMetadataEnablePathSubstitution": "Salli polkujen korvaaminen", + "LabelKnownProxies": "Tunnetut välityspalvelimet:", + "LabelKeepUpTo": "Pidä tallessa:", + "HeaderRemoteAccessSettings": "Etäkäytön asetukset", + "LabelNewsCategories": "Uutiskategoriat:", + "LabelUnstable": "Epävakaa", + "LabelStable": "Vakaa", + "LabelChromecastVersion": "Chromecastin versio", + "LabelModelUrl": "Malli-URL", + "LabelModelName": "Mallinimi", + "LabelModelDescription": "Mallikuvaus", + "LabelModelNumber": "Mallinumero", + "LabelInNetworkSignInWithEasyPassword": "Salli sisäverkkokirjautuminen helpolla PIN-koodilla" } From 69d7feeb481b34a782f4fa5f96a5f120cfb27563 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Tue, 15 Sep 2020 04:23:27 +0000 Subject: [PATCH 293/582] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 61 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/src/strings/id.json b/src/strings/id.json index c7a83a9efa..858b8169a1 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -6,7 +6,7 @@ "LabelContentType": "Tipe konten :", "LabelCountry": "Negara :", "LabelFinish": "Selesai", - "LabelLanguage": "Bahasa:", + "LabelLanguage": "Bahasa :", "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):", @@ -647,5 +647,62 @@ "Directors": "Direktur", "Director": "Direktur", "Depressed": "Murung", - "Data": "Data" + "Data": "Data", + "LabelMaxResumePercentageHelp": "Judul dianggap diputar penuh jika dihentikan setelah waktu ini.", + "LabelMaxResumePercentage": "Persentase lanjutkan maksimum :", + "LabelMaxParentalRating": "Rating orang tua maksimum yang diizinkan :", + "LabelMaxChromecastBitrate": "Kualitas streaming Chromecast :", + "LabelMaxBackdropsPerItem": "Jumlah maksimum tampilan latar per item :", + "LabelMatchType": "Jenis kecocokan :", + "LabelManufacturerUrl": "Produsen URL", + "LabelManufacturer": "Produsen :", + "LabelLogs": "Log :", + "LabelLoginDisclaimerHelp": "Sebuah pesan yang akan ditampilkan di bagian bawah halaman login.", + "LabelLoginDisclaimer": "Penolakan login :", + "LabelLockItemToPreventChanges": "Kunci item ini untuk mencegah perubahan di masa mendatang", + "LabelLineup": "Berbaris :", + "LabelLibraryPageSizeHelp": "Menetapkan jumlah item untuk ditampilkan di halaman psutaka. Setel ke 0 untuk menonaktifkan paging.", + "LabelLibraryPageSize": "Ukuran halaman pustaka :", + "LabelLanNetworks": "Jaringan LAN :", + "LabelKodiMetadataUserHelp": "Simpan data menonton ke file NFO untuk digunakan aplikasi lain.", + "LabelKodiMetadataUser": "Simpan data menonton pengguna ke file NFO untuk :", + "LabelKodiMetadataEnableExtraThumbsHelp": "Saat mengunduh gambar, mereka dapat disimpan ke extrafanart dan extrathumbs untuk kompatibilitas tema Kodi yang maksimal.", + "LabelKodiMetadataEnableExtraThumbs": "Salin extrafanart ke bidang extrathumbs", + "LabelKodiMetadataDateFormatHelp": "Semua tanggal dalam file NFO akan diurai menggunakan format ini.", + "LabelKodiMetadataDateFormat": "Format tanggal rilis :", + "LabelKidsCategories": "Kategori anak-anak :", + "LabelKnownProxies": "Proksi yang dikenal :", + "LabelKeepUpTo": "Ikuti terus :", + "LabelInternetQuality": "Kualitas internet :", + "LabelInNetworkSignInWithEasyPasswordHelp": "Gunakan kode pin yang mudah untuk masuk ke klien dalam jaringan lokal Anda. Kata sandi biasa Anda hanya akan dibutuhkan di luar rumah. Jika kode pin dibiarkan kosong, Anda tidak memerlukan kata sandi di dalam jaringan rumah Anda.", + "LabelInNetworkSignInWithEasyPassword": "Aktifkan masuk jaringan dengan kode pin mudah saya", + "LabelImportOnlyFavoriteChannels": "Batasi untuk saluran yang ditandai sebagai favorit", + "LabelImageType": "Jenis gambar :", + "LabelImageFetchersHelp": "Aktifkan dan beri peringkat pada pengambil gambar pilihan Anda dalam urutan prioritas.", + "LabelIdentificationFieldHelp": "Substring atau ekspresi ekspresi reguler tidak peka huruf besar kecil.", + "LabelIconMaxWidth": "Lebar maksimum ikon :", + "LabelIconMaxHeight": "Tinggi maksimum ikon :", + "LabelIconMaxResHelp": "Resolusi maksimum ikon yang diekspos melalui properti ikon upnp.", + "LabelExtractChaptersDuringLibraryScanHelp": "Hasilkan gambar bab saat video diimpor selama pemindaian pustaka. Jika tidak, mereka akan diekstraksi selama tugas terjadwal gambar bab, memungkinkan pemindaian pustaka biasa selesai lebih cepat.", + "LabelExtractChaptersDuringLibraryScan": "Ekstrak gambar bab selama pemindaian pustaka", + "LabelBaseUrl": "URL Dasar :", + "LabelEveryXMinutes": "Setiap :", + "LabelEvent": "Peristiwa :", + "LabelEpisodeNumber": "Nomor episode :", + "LabelEndDate": "Tanggal akhir :", + "LabelEnableSingleImageInDidlLimitHelp": "Beberapa perangkat tidak akan merender dengan baik jika beberapa gambar disematkan dalam Didl.", + "LabelEnableSingleImageInDidlLimit": "Batasi untuk satu gambar yang disematkan", + "LabelEnableRealtimeMonitorHelp": "Perubahan file akan segera diproses pada sistem file yang didukung.", + "LabelEnableRealtimeMonitor": "Aktifkan pemantauan waktu nyata", + "LabelEnableHttpsHelp": "Dengarkan di port HTTPS yang dikonfigurasi. Sertifikat yang valid juga harus diberikan agar ini berlaku.", + "LabelEnableHttps": "Aktifkan HTTPS", + "LabelEnableHardwareDecodingFor": "Aktifkan decoding perangkat keras untuk :", + "LabelEnableDlnaPlayToHelp": "Deteksi perangkat dalam jaringan Anda dan tawarkan kemampuan untuk mengontrolnya dari jarak jauh.", + "LabelEnableDlnaPlayTo": "Aktifkan DLNA Play To", + "LabelEnableDlnaDebugLoggingHelp": "Buat file log besar dan sebaiknya hanya digunakan seperlunya untuk tujuan pemecahan masalah.", + "LabelEnableDlnaDebugLogging": "Aktifkan logging debug DLNA", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Menentukan durasi dalam detik antara pencarian SSDP.", + "LabelEnableDlnaClientDiscoveryInterval": "Interval penemuan klien", + "LabelEnableBlastAliveMessages": "Ledakan pesan hidup", + "KnownProxiesHelp": "Daftar alamat IP yang dipisahkan koma dari proxy yang diketahui digunakan saat menghubungkan ke instance Jellyfin Anda. Ini diperlukan untuk menggunakan header X-Forwarded-For dengan benar. Membutuhkan reboot setelah menyimpan." } From 1ca4a9960559d43644e69f823e4c1b508fab7c3f Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 15 Sep 2020 15:03:06 +0900 Subject: [PATCH 294/582] minor style changes --- src/controllers/session/login/index.html | 2 +- src/quickconnect.html | 2 +- src/scripts/libraryMenu.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/session/login/index.html b/src/controllers/session/login/index.html index d22d903a1d..8c69456168 100644 --- a/src/controllers/session/login/index.html +++ b/src/controllers/session/login/index.html @@ -43,7 +43,7 @@ ${ButtonManualLogin} - diff --git a/src/quickconnect.html b/src/quickconnect.html index b5b6d48991..2b646837c6 100644 --- a/src/quickconnect.html +++ b/src/quickconnect.html @@ -7,7 +7,7 @@
    - ${LabelCurrentStatus} +
    ${LabelCurrentStatus}
    -
    - -
    ${ImportMissingEpisodesHelp}
    -
    -

    ${HeaderChapterImages}

    diff --git a/src/strings/ar.json b/src/strings/ar.json index 27966775fc..99a426e12f 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -226,7 +226,6 @@ "HeaderXmlSettings": "إعدادات xml", "HeaderYears": "السنوات", "ImportFavoriteChannelsHelp": "فقط القنوات التي علّمت في المفضلة على جهاز المولف ستورد.", - "ImportMissingEpisodesHelp": "المعلومات الناقصة للحلقات ستورّد إلى قاعدة بياناتك وستعرض داخل المواسم والمسلسلات. قد تتسبب هذه بأوقات أطول بكثير عند تمشيط المكتبات.", "LabelAbortedByServerShutdown": "(تم إهماله بسبب عملية إغلاق الخادم)", "LabelAccessDay": "يوم الأسبوع:", "LabelAccessEnd": "وقت النهاية:", diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index c0a63032f2..e5febc8fb2 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -211,7 +211,6 @@ "Horizontal": "Водоравно", "Identify": "Разпознаване", "Images": "Изображения", - "ImportMissingEpisodesHelp": "Ако е активирано, информация за липсващи епизоди ще бъде добавена в базата данни на Джелифин и ще бъде показвана заедно със сезони и серии. Това може да доведе до значително по-дълго сканиране на библиотеката.", "InstallingPackage": "Инсталиране на {0} на версия {1})", "InstantMix": "Пускане на подобни", "Label3DFormat": "Триизмерен формат:", diff --git a/src/strings/cs.json b/src/strings/cs.json index 22a8c4ae12..bd0311cb3e 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -340,7 +340,6 @@ "Identify": "Identifikovat", "Images": "Obrázky", "ImportFavoriteChannelsHelp": "Jen kanály označené jako oblíbené na zařízení tuneru budou importovány.", - "ImportMissingEpisodesHelp": "Informace o chybějících epizodách budou importovány do databáze a zobrazí se u sezón a seriálů. Skenování knihovny se tím může značně prodloužit.", "InstallingPackage": "Instalace {0} (Verze {1})", "InstantMix": "Okamžité míchání", "ItemCount": "{0} položek", diff --git a/src/strings/da.json b/src/strings/da.json index 59b726a2d6..98f81bd2a8 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -305,7 +305,6 @@ "Identify": "Identificer", "Images": "Billeder", "ImportFavoriteChannelsHelp": "Hvis aktiveret, importeres der udelukkende kanaler der er markeret som favoritter på tuner-enheden.", - "ImportMissingEpisodesHelp": "hvis aktiveret, vil information omkring manglende episoder bliver importeret ind i din Jellyfin-database og blive vist i sæsoner og serier. Dette medfører muligvis længere biblioteksscanninger.", "InstallingPackage": "Installerer {0} (version {1})", "InstantMix": "Instant Mix", "ItemCount": "{0} elementer", diff --git a/src/strings/de.json b/src/strings/de.json index cd4428c124..10784f2c4f 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -382,7 +382,6 @@ "Identify": "Identifizieren", "Images": "Bilder", "ImportFavoriteChannelsHelp": "Nur auf dem Tuner favorisierte Kanäle werden importiert.", - "ImportMissingEpisodesHelp": "Informationen über fehlende Episoden werden in deine Datenbank importiert und innerhalb von Staffeln angezeigt. Dies kann zu deutlich längeren Bibliothek Scans führen.", "InstallingPackage": "Installiere {0} (Version {1})", "InstantMix": "Schnellmix", "ItemCount": "{0} Einträge", diff --git a/src/strings/el.json b/src/strings/el.json index 9d809703f6..2dafdcd408 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -350,7 +350,6 @@ "Horizontal": "Οριζόντια", "Identify": "Αναγνώριση", "Images": "Εικόνες", - "ImportMissingEpisodesHelp": "Εάν είναι ενεργοποιημένη, οι πληροφορίες σχετικά με τα επεισόδια που λείπουν θα εισαχθούν στη βάση δεδομένων σας Jellyfin και θα εμφανιστούν σε εποχές και σειρές. Αυτό μπορεί να προκαλέσει σημαντικά μεγαλύτερες σαρώσεις βιβλιοθήκης.", "InstallingPackage": "Εγκατάσταση {0}", "InstantMix": "Άμεση Mix", "ItemCount": "{0} στοιχεία", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 94bce3fee7..0a7ffc36f5 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -871,7 +871,6 @@ "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches.", "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.", "InstallingPackage": "Installing {0} (version {1})", - "ImportMissingEpisodesHelp": "Information about missing episodes will be imported into your database and displayed within seasons and series. This may cause significantly longer library scans.", "HeaderSubtitleAppearance": "Subtitle Appearance", "LabelProtocol": "Protocol:", "LabelProfileVideoCodecs": "Video codecs:", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 0f61286e92..64f775b6ec 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -445,7 +445,6 @@ "Image": "Image", "Images": "Images", "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", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 521f4ef98f..520a3ba2c7 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -598,7 +598,6 @@ "LabelAppNameExample": "Ejemplo: Sickbeard, Sonarr", "LabelAlbumArtMaxWidth": "Ancho máximo de la carátula del álbum:", "LabelAlbumArtMaxHeight": "Altura máxima de la carátula del álbum:", - "ImportMissingEpisodesHelp": "Si está habilitado, la información sobre capítulos faltantes se importará a su base de datos Jellyfin y se mostrará dentro de temporadas y series. Esto puede causar escaneos de bibliotecas significativamente más largos.", "HeaderSyncPlayEnabled": "SyncPlay habilitado", "HeaderSyncPlaySelectGroup": "Unirse a un grupo", "HeaderResponseProfileHelp": "Los perfiles de respuesta proporcionan una forma de personalizar la información enviada al dispositivo cuando se reproducen ciertos tipos de medios.", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 1d0a81df4e..9414173c66 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -399,7 +399,6 @@ "Identify": "Identificar", "Images": "Imágenes", "ImportFavoriteChannelsHelp": "Si se habilita, solo los canales marcados como favoritos en el dispositivo sintonizador serán importados.", - "ImportMissingEpisodesHelp": "Si se habilita, la información sobre los episodios faltantes se importará a la base de datos de Jellyfin y se mostrarán dentro de las temporadas y series. Esto puede causar escaneos de biblioteca significativamente más largos.", "InstallingPackage": "Instalando {0} (versión {1})", "InstantMix": "Mix instantáneo", "ItemCount": "{0} elementos", diff --git a/src/strings/es.json b/src/strings/es.json index ebd6ed698c..5c4d686271 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -349,7 +349,6 @@ "Identify": "Identificar", "Images": "Imágenes", "ImportFavoriteChannelsHelp": "Sólo los canales guardados como favoritos en el sintonizador se importarán.", - "ImportMissingEpisodesHelp": "La información sobre los episodios que faltan se importará en su base de datos y se mostrará en temporadas y series. Esto puede causar exploraciones de bibliotecas significativamente más largas.", "InstallingPackage": "Instalando {0} (versión {1})", "InstantMix": "Mix instantáneo", "ItemCount": "Elementos {0}", diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 4efa45afca..623d53b2ff 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -868,7 +868,6 @@ "ItemCount": "{0} elementos", "InstantMix": "Mix instantáneo", "InstallingPackage": "Instalando {0} (versión {1})", - "ImportMissingEpisodesHelp": "La información sobre los episodios faltantes se importará a la base de datos y se mostrarán dentro de las temporadas y series. Esto puede causar escaneos de biblioteca significativamente más largos.", "ImportFavoriteChannelsHelp": "Solo los canales marcados como favoritos en el dispositivo sintonizador serán importados.", "Images": "Imágenes", "Identify": "Identificar", diff --git a/src/strings/fa.json b/src/strings/fa.json index 834b0a9474..a8f2202430 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -926,7 +926,6 @@ "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.", "InstallingPackage": "Installing {0} (version {1})", "InstantMix": "Instant mix", "ItemCount": "{0} items", diff --git a/src/strings/fr.json b/src/strings/fr.json index 587bc1a555..e76925ef8d 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -398,7 +398,6 @@ "HttpsRequiresCert": "Pour activer les connexions sécurisées, vous devrez fournir un certificat SSL vérifié, comme ceux fournis par Let's Encrypt. Veuillez fournir un certificat ou désactiver les connexions sécurisées.", "Identify": "Identifier", "ImportFavoriteChannelsHelp": "Seules les chaînes ajoutées aux favoris sur le tuner seront importées.", - "ImportMissingEpisodesHelp": "Les informations à propos des épisodes manquants seront importées dans votre base de données et affichées dans les saisons et séries. Cela peut accroître significativement la durée d'actualisation de la médiathèque.", "InstallingPackage": "Installation de {0} (version {1})", "InstantMix": "Mix instantané", "ItemCount": "{0} éléments", diff --git a/src/strings/hu.json b/src/strings/hu.json index 1bccbf1721..c393fc5c88 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -665,7 +665,6 @@ "Hide": "Elrejtés", "Horizontal": "Vízszintes", "HttpsRequiresCert": "A biztonságos kapcsolatok engedélyezéséhez megbízható SSL-tanúsítványt kell használni, mint például a Let's Encrypt. Kérlek add meg a tanúsítványt, vagy tiltsd le a biztonságos kapcsolatokat.", - "ImportMissingEpisodesHelp": "A hiányzó epizódokra vonatkozó információk a Jellyfin adatbázisába kerülnek importálásra és megjelenítésre kerülnek az évadokban és sorozatokban. Ez jelentősen hosszabb könyvtárvizsgálatot okozhat.", "InstantMix": "Azonnali keverés", "ItemCount": "{0} elem", "Items": "Elemek", diff --git a/src/strings/it.json b/src/strings/it.json index e56bb17d6d..d178027199 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -385,7 +385,6 @@ "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.", "InstallingPackage": "Installazione di {0} (versione {1})", "InstantMix": "Mix istantaneo", "ItemCount": "{0} elementi", diff --git a/src/strings/ja.json b/src/strings/ja.json index f63441ac9c..00d9fb34e4 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -917,7 +917,6 @@ "ValueTimeLimitSingleHour": "タイムリミット: 1 時間", "Wednesday": "水曜日", "LabelPreferredDisplayLanguage": "優先する表示言語:", - "ImportMissingEpisodesHelp": "所有してないエピソードの情報がデータベースにインポートされ、シーズンとシリーズ内に表示されます。ライブラリの読み込み時間が非常に長くなる可能性があります。", "LabelBindToLocalNetworkAddress": "ローカルネットワークアドレスにバインド:", "LabelDownMixAudioScale": "ダウンミキシング時の音声ブースト:", "HeaderNavigation": "ナビゲーション", diff --git a/src/strings/kk.json b/src/strings/kk.json index fa005f55b8..a7ec7a951b 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -412,7 +412,6 @@ "Identify": "Anyqtaý", "Images": "Sýretter", "ImportFavoriteChannelsHelp": "Qosylǵanda, túner qurylǵysyndaǵy tańdaýly retinde belgilengen ǵana arnalar shetten ákelinetin bolady.", - "ImportMissingEpisodesHelp": "Qosylǵanda, joq epızodtar týraly aqparat sizdiń Jellyfin derekqorǵa ákelinedi jáne maýsymdar men telehıkaıalar aıasynda paıda bolady. Tasyǵyshhana skanerleýde bul aıtarlyqtaı uzaq ýaqyt alýy múmkin.", "InstallingPackage": "{0} ({1} nusqasy) ornatylýda", "InstantMix": "Lezdik qospalaý", "ItemCount": "{0} tarmaq", diff --git a/src/strings/ko.json b/src/strings/ko.json index 9cc0f7f6ae..22922f4c28 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -192,7 +192,6 @@ "Help": "도움말", "Images": "이미지", "ImportFavoriteChannelsHelp": "활성화 시, 튜너 장치에서 즐겨찾기로 표시된 채널만 불러옵니다.", - "ImportMissingEpisodesHelp": "이 기능을 사용하면 누락 된 에피소드에 대한 정보가 Jellyfin 데이터베이스로 가져와 시즌 및 시리즈 내에서 표시됩니다. 이로 인해 상당히 긴 라이브러리 스캔이 발생할 수 있습니다.", "InstallingPackage": "{0} 설치 중 ( {1} 버전)", "InstantMix": "인스턴트 믹스", "ItemCount": "{0} 항목", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index 6c62ae9ca4..960f01ba7d 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -713,7 +713,6 @@ "HideWatchedContentFromLatestMedia": "Paslėpti matytą turinį iš naujausių medijos duomenų", "Horizontal": "Horizontalus", "LabelAccessDay": "Savaitės diena:", - "ImportMissingEpisodesHelp": "Jei įjungta, informacija apie trūkstamus epizodus bus importuota į jūsų „Jellyfin“ duomenų bazę ir rodoma serialuose. Tai gali įtakoti ilgesnį bibliotekos nuskaitymą.", "LabelAudioChannels": "Garso takeliai:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Automatiškai atnaujinti metaduomenis iš interneto:", "LabelAudioSampleRate": "Garso takelio diskr.sparta:", diff --git a/src/strings/nb.json b/src/strings/nb.json index a7b1363574..f63da8e6ea 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -313,7 +313,6 @@ "Identify": "Identifiser", "Images": "Bilder", "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", diff --git a/src/strings/nl.json b/src/strings/nl.json index dcdfa80e78..194fdbca59 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -389,7 +389,6 @@ "Identify": "Identificeer", "Images": "Afbeeldingen", "ImportFavoriteChannelsHelp": "Alleen kanalen die als favoriet aangemerkt zijn op de tuner zullen geïmporteerd worden.", - "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:", diff --git a/src/strings/pl.json b/src/strings/pl.json index 0893252ce3..fba8804ed6 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -410,7 +410,6 @@ "Identify": "Identyfikuj", "Images": "Obrazy", "ImportFavoriteChannelsHelp": "Jeśli aktywne, tylko kanały oznaczone jako ulubione na tunerze, będą importowane.", - "ImportMissingEpisodesHelp": "Informacje o brakujących odcinkach zostaną zaimportowane do bazy i będą wyświetlane na listach sezonów i seriali. Może to jednak znacznie wydłużyć czas skanowania biblioteki.", "InstallingPackage": "Instalowanie {0} (wersja {1})", "InstantMix": "Szybki remiks", "ItemCount": "{0} pozycje", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index f1effb7a2f..6d581645b7 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -396,7 +396,6 @@ "Identify": "Identificar", "Images": "Imagens", "ImportFavoriteChannelsHelp": "Se ativado, apenas canais que estão marcados como favoritos no sintonizador serão importados.", - "ImportMissingEpisodesHelp": "Se ativado, as informações dos episódios que faltam serão importadas para seu banco de dados do Jellyfin e exibidas dentro das temporadas e séries. Isto pode causar lentidão no rastreamento da biblioteca.", "InstallingPackage": "Instalando {0} (versão{1})", "InstantMix": "Mix instântaneo", "ItemCount": "{0} itens", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 502f2952ba..ff190308ac 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -198,7 +198,6 @@ "Identify": "Identificar", "Images": "Imagens", "ImportFavoriteChannelsHelp": "Se ativado, apenas canais que estão marcados como favoritos no sintonizador serão importados.", - "ImportMissingEpisodesHelp": "Se ativado, a informação acerca dos episódios em falta será importada para a base de dados do Servidor Jellyfin e mostrada dentro das temporadas e séries. Isto pode aumentar significativamente a duração da análise da biblioteca.", "InstantMix": "Mix instântaneo", "ItemCount": "{0} itens", "Label3DFormat": "Formato 3D:", diff --git a/src/strings/pt.json b/src/strings/pt.json index dd3dc6e960..b6464e86ec 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -420,7 +420,6 @@ "ItemCount": "{0} itens", "InstantMix": "Mistura instântanea", "InstallingPackage": "A instalar {0}", - "ImportMissingEpisodesHelp": "Quando activado, a informação acerca dos episódios em falta será importada para a base de dados do Servidor Jellyfin e mostrada dentro das temporadas e séries. Isto pode aumentar significativamente a duração da análise da biblioteca.", "ImportFavoriteChannelsHelp": "Quando activado, apenas serão importados canais que estão marcados no sintonizador como favoritos.", "Images": "Imagens", "Identify": "Identificar", diff --git a/src/strings/ro.json b/src/strings/ro.json index f2be928cd7..7c243bd5f9 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -38,7 +38,6 @@ "HeaderTaskTriggers": "Declanșatori Sarcini", "HeaderUsers": "Utilizatori", "Help": "Ajutor", - "ImportMissingEpisodesHelp": "Informația despre episoadele lipsă va fi importată în baza de date și va fi afișată în cadrul serialelor. Aceasta poate cauza un timp semnificativ mai îndelungat la scanarea bibliotecilor.", "LabelArtists": "Artisti:", "LabelArtistsHelp": "Separară înșiruirea artiștilor utilizând ;", "LabelAudioLanguagePreference": "Preferințe de limbă pentru audio:", diff --git a/src/strings/ru.json b/src/strings/ru.json index 144a2d4ecb..3eb7b8f7dc 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -413,7 +413,6 @@ "Identify": "Распознать", "Images": "Изображения", "ImportFavoriteChannelsHelp": "Будут импортированы только каналы, которые обозначены как избранное на тюнерном устройстве.", - "ImportMissingEpisodesHelp": "Информация об отсутствующих эпизодах будет импортирована в вашу базу данных и отображена в пределах сезонов и сериалов. Это может заметно увеличить время сканирования медиатеки.", "InstallingPackage": "Устанавливается {0} (версия {1})", "InstantMix": "Автомикс", "ItemCount": "{0} элемент(а/ов)", diff --git a/src/strings/sk.json b/src/strings/sk.json index 5dafa0d791..57767c18d5 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -241,7 +241,6 @@ "Horizontal": "Horizontálne", "Identify": "Identifikovať", "Images": "Obrázky", - "ImportMissingEpisodesHelp": "Informácie o chýbajúcich epizódach budú importované do Vašej databázy a budú zobrazené v sériách a seriáloch. Toto môže spôsobiť podstatne dlhšie skenovania knižníc.", "InstallingPackage": "Inštalujem {0} (verzia{1})", "ItemCount": "{0} položiek", "Items": "Položky", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index a8a7cbd3a8..56aa43b2e7 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -533,7 +533,6 @@ "LabelDisplayMode": "Način prikaza:", "LabelBindToLocalNetworkAddressHelp": "Preglasi lokalni IP naslov za HTTP strežnik. V kolikor pustite prazno se strežnik poveže z vsemi možnimi naslovi. Sprememba vrednosti zahteva ponovni zagon.", "InstallingPackage": "Nameščanje {0} (različica {1})", - "ImportMissingEpisodesHelp": "Podatki o manjkajočih epizodah bodo dodani v bazo podatkov in prikazani znotraj sezon in serij. To lahko občutno podaljša čas uvoza v knjižnjico.", "ImportFavoriteChannelsHelp": "Uvoženi bodo zgolj programi, ki so na sprejemniku označeni kot priljubljeni.", "LabelEnableDlnaServerHelp": "Omogoči UPnP napravam v omrežju da brskajo in predvajajo vsebine.", "LabelFolder": "Mapa:", diff --git a/src/strings/sv.json b/src/strings/sv.json index 9f4afd6cc0..15606c39c2 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -371,7 +371,6 @@ "Identify": "Identifiera", "Images": "Bilder", "ImportFavoriteChannelsHelp": "Endast kanaler som är märkta som favoriter på den här TV-mottagaren kommer att importeras.", - "ImportMissingEpisodesHelp": "Information om saknade episoder kommer att importeras till din Jellyfin-databas och visas i seriesäsongerna. Detta kan innebära att biblioteksskanningar tar en avsevärt längre tid.", "InstallingPackage": "Installerar {0} (version {1})", "InstantMix": "Omedelbar mix", "ItemCount": "{0} objekt", diff --git a/src/strings/ta.json b/src/strings/ta.json index f17e623a7a..e8b3f2346f 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -469,7 +469,6 @@ "ItemCount": "{0} உருப்படிகள்", "InstantMix": "உடனடி கலவை", "InstallingPackage": "{0} (பதிப்பு {1}) ஐ நிறுவுகிறது", - "ImportMissingEpisodesHelp": "காணாமல் போன அத்தியாயங்கள் பற்றிய தகவல்கள் உங்கள் தரவுத்தளத்தில் இறக்குமதி செய்யப்பட்டு பருவங்கள் மற்றும் தொடர்களில் காண்பிக்கப்படும். இது கணிசமாக நீண்ட நூலக ஸ்கேன்களை ஏற்படுத்தக்கூடும்.", "ImportFavoriteChannelsHelp": "ட்யூனர் சாதனத்தில் பிடித்ததாகக் குறிக்கப்பட்ட சேனல்கள் மட்டுமே இறக்குமதி செய்யப்படும்.", "Images": "படங்கள்", "Identify": "அடையாளம் காணவும்", diff --git a/src/strings/vi.json b/src/strings/vi.json index 57333b5a3a..4c9f811b1d 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -520,7 +520,6 @@ "ItemCount": "{0} mục", "InstantMix": "Trộn Lẫn Nhanh", "InstallingPackage": "Đang cài đặt {0} (phiên bản {1})", - "ImportMissingEpisodesHelp": "Nếu bật tuỳ chọn này, thông tin bị thiếu trong các tập phim sẽ được nhập vào cơ sở dữ liệu của máy chủ Jellyfin và hiển thị trong các phần và series. Điều này có thể làm việc quét thư viện lâu hơn rất nhiều.", "ImportFavoriteChannelsHelp": "Nếu bật tuỳ chọn này, chỉ những kênh yêu thích trong thiết bị bắt sóng sẽ được nhập vào.", "Images": "Hình Ảnh", "Identify": "Nhận Dạng", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 1a4f73d9d4..3933f8cae3 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -374,7 +374,6 @@ "Identify": "识别", "Images": "图片", "ImportFavoriteChannelsHelp": "只有在协调器设备中被标记为我的最爱的频道才会被导入。", - "ImportMissingEpisodesHelp": "缺少的剧集信息将被导入到你的数据库并分季分剧显示。可能会大大延长媒体库扫描时间。", "InstallingPackage": "正在安装 {0}(版本 {1})", "InstantMix": "即时混音", "ItemCount": "{0} 项", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index f65bd6b91a..1d50f91da2 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -559,7 +559,6 @@ "Identify": "識別", "Images": "圖片", "ImportFavoriteChannelsHelp": "若啟用,僅於調諧器設備中被標記為我的最愛的頻道才會被導入。", - "ImportMissingEpisodesHelp": "缺失劇集的資料將導入您的媒體庫,並在季度與系列中顯示。 可能導致媒體庫掃描延長。", "InstallingPackage": "正在安裝 {0}(版本 {1})", "InstantMix": "即時混音", "Items": "項目", From e05a6f48f7e2247c2f7abb3c9d9483be7d7d712b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Fernandez=20Pr=C3=ADncipe?= Date: Sat, 19 Sep 2020 12:24:35 +0000 Subject: [PATCH 318/582] Translated using Weblate (Galician) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/gl/ --- src/strings/gl.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/gl.json b/src/strings/gl.json index e87ce46770..534ed0b4eb 100644 --- a/src/strings/gl.json +++ b/src/strings/gl.json @@ -12,5 +12,9 @@ "Aired": "Emitido", "AddToPlaylist": "Engadir á lista de reprodución", "Add": "Engadir", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "Collections": "Colecións", + "Channels": "Canles", + "Books": "Libros", + "Artists": "Artistas" } From 08d87dff0102c9797f910fba013acbd18b36c846 Mon Sep 17 00:00:00 2001 From: Thomas Schwery Date: Sat, 19 Sep 2020 18:24:33 +0000 Subject: [PATCH 319/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index a7f3328360..a464f7785b 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1377,7 +1377,7 @@ "LabelTonemappingDesat": "Désaturation tonale :", "TonemappingRangeHelp": "Sélectionnez la gamme de couleur de sortie. Auto représente la même gamme qu'en entrée.", "LabelTonemappingRange": "Gamme de mappage tonal :", - "TonemappingAlgorithmHelp": "Le mappage tonal peut être affiné. Si vous n'êtes pas familier avec ces options, gardez les valeurs par défaut.
    La valeur recommandée est Reinhard.", + "TonemappingAlgorithmHelp": "Le mappage tonal peut être affiné. Si vous n'êtes pas familier avec ces options, gardez les valeurs par défaut. La valeur recommandée est Reinhard.", "LabelTonemappingAlgorithm": "Sélectionnez l'algorithme de mappage tonal à utiliser :", "AllowTonemappingHelp": "Le mappage tonal peut transformer la gamme dynamique d'une vidéo de HDR à SDR tout en maintenant les détails et les couleurs d'image qui sont des informations importantes pour la représentation de la scène originale. Actuellement, ne fonctionne uniquement lorsque le décodeur NVENC HEVC est utilisé et que des vidéos HDR10 ou HLG sont transcodées.", "EnableTonemapping": "Activer le mappage tonal", From c8e8486e2a7882c8f843a3948aae41f34c926034 Mon Sep 17 00:00:00 2001 From: Muhammad Idrus Date: Sun, 20 Sep 2020 05:15:18 +0000 Subject: [PATCH 320/582] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/strings/id.json b/src/strings/id.json index 858b8169a1..3c64e4603b 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -704,5 +704,46 @@ "LabelEnableDlnaClientDiscoveryIntervalHelp": "Menentukan durasi dalam detik antara pencarian SSDP.", "LabelEnableDlnaClientDiscoveryInterval": "Interval penemuan klien", "LabelEnableBlastAliveMessages": "Ledakan pesan hidup", - "KnownProxiesHelp": "Daftar alamat IP yang dipisahkan koma dari proxy yang diketahui digunakan saat menghubungkan ke instance Jellyfin Anda. Ini diperlukan untuk menggunakan header X-Forwarded-For dengan benar. Membutuhkan reboot setelah menyimpan." + "KnownProxiesHelp": "Daftar alamat IP yang dipisahkan koma dari proxy yang diketahui digunakan saat menghubungkan ke instance Jellyfin Anda. Ini diperlukan untuk menggunakan header X-Forwarded-For dengan benar. Membutuhkan reboot setelah menyimpan.", + "LabelProtocolInfo": "Info protokol:", + "LabelProtocol": "Protokol:", + "LabelProfileVideoCodecs": "Video codecs:", + "LabelProfileContainersHelp": "Dipisah dengan koma. Ini semua bisa ditinggalkan kosong untuk mengaplikasikan semua penyimpan.", + "LabelProfileContainer": "Penyimpan:", + "LabelProfileCodecsHelp": "Dipisah menggunakan koma. Semua bisa ditinggalkan kosong untuk menggunakan semua codecs.", + "LabelPreferredSubtitleLanguage": "Bahasa teks yang diinginkan:", + "LabelPreferredDisplayLanguage": "Tampilan bahasa yang diinginkan:", + "LabelPostProcessor": "Aplikasi setelah proses:", + "LabelPlayMethod": "Metode putar:", + "LabelPlaylist": "Daftar putar:", + "LabelPlaceOfBirth": "Tempat lahir:", + "LabelPasswordRecoveryPinCode": "Kode pin:", + "LabelPasswordConfirm": "Password (konfirmasi):", + "LabelPassword": "Password:", + "LabelOverview": "Tinjauan:", + "LabelOriginalTitle": "Judul asli:", + "LabelNumber": "Nomor:", + "LabelNotificationEnabled": "Aktifkan notifikasi ini", + "LabelNewsCategories": "Kategori baru:", + "LabelNewPasswordConfirm": "Konfirmasi password baru:", + "LabelNewPassword": "Password baru:", + "LabelNewName": "Nama baru:", + "LabelUnstable": "Belum stabil", + "LabelStable": "Stabil", + "LabelChromecastVersion": "Versi Chromecast", + "LabelName": "Nama:", + "LabelMusicStreamingTranscodingBitrateHelp": "Tentukan maksimum bitrate ketika streaming musik.", + "LabelMovieCategories": "Kategori film:", + "LabelModelNumber": "Nomor model", + "LabelModelName": "Nama model", + "LabelModelDescription": "Deskripsi model", + "LabelMetadataDownloadLanguage": "Unduhan bahasa yang disarankan:", + "LabelMetadata": "Metadata:", + "LabelMessageTitle": "Judul pesan:", + "LabelMessageText": "Pesan teks:", + "LabelMaxStreamingBitrate": "Kualitas streaming maksimum:", + "LabelCurrentStatus": "Status saat ini:", + "EnableQuickConnect": "Aktifkan sambung-cepat pada server ini", + "ButtonActivate": "Aktifasi", + "Authorize": "Izinkan" } From 74bfc558a01fc8a13e393709a45dcec355ab76ed Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 19 Sep 2020 16:51:37 +0000 Subject: [PATCH 321/582] 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, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 4ee151a266..ed3dfceab3 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1401,9 +1401,9 @@ "LabelTonemappingDesat": "டோன் மேப்பிங் டெசாட்:", "TonemappingRangeHelp": "வெளியீட்டு வண்ண வரம்பைத் தேர்ந்தெடுக்கவும். ஆட்டோ என்பது உள்ளீட்டு வரம்பைப் போன்றது.", "LabelTonemappingRange": "டோன் மேப்பிங் வரம்பு:", - "TonemappingAlgorithmHelp": "டோன் மேப்பிங் நன்றாக இருக்கும். இந்த விருப்பங்களை நீங்கள் அறிந்திருக்கவில்லை என்றால், இயல்புநிலையை வைத்திருங்கள்.
    பரிந்துரைக்கப்பட்ட மதிப்பு ரெய்ன்ஹார்ட்.", + "TonemappingAlgorithmHelp": "டோன் மேப்பிங் நன்றாக இருக்கும். இந்த விருப்பங்களை நீங்கள் அறிந்திருக்கவில்லை என்றால், இயல்புநிலையை வைத்திருங்கள். பரிந்துரைக்கப்பட்ட மதிப்பு ரெய்ன்ஹார்ட்.", "LabelTonemappingAlgorithm": "பயன்படுத்த டோன் மேப்பிங் வழிமுறையைத் தேர்ந்தெடுக்கவும்:", - "AllowTonemappingHelp": "டோன் மேப்பிங் ஒரு வீடியோவின் டைனமிக் வரம்பை எச்.டி.ஆரிலிருந்து எஸ்.டி.ஆருக்கு மாற்றும், அதே நேரத்தில் பட விவரங்களையும் வண்ணங்களையும் பராமரிக்கும், அவை அசல் காட்சியைக் குறிக்கும் மிக முக்கியமான தகவல்கள். தற்போது NVENC HEVC டிகோடரைப் பயன்படுத்தும்போது மற்றும் HDR10 அல்லது HLG வீடியோக்களை டிரான்ஸ்கோடிங் செய்யும் போது மட்டுமே செயல்படும்.", + "AllowTonemappingHelp": "டோன் மேப்பிங் ஒரு வீடியோவின் டைனமிக் வரம்பை எச்டிஆரிலிருந்து எஸ்.டி.ஆருக்கு மாற்றும், அதே நேரத்தில் பட விவரங்களையும் வண்ணங்களையும் பராமரிக்கும், அவை அசல் காட்சியைக் குறிக்கும் மிக முக்கியமான தகவல்கள். உட்பொதிக்கப்பட்ட HDR10 அல்லது HLG மெட்டாடேட்டாவுடன் வீடியோக்களை டிரான்ஸ்கோடிங் செய்யும் போது மட்டுமே தற்போது செயல்படுகிறது. பிளேபேக் சீராக இல்லாவிட்டால் அல்லது தோல்வியுற்றால், தயவுசெய்து தொடர்புடைய வன்பொருள் டிகோடரை அணைக்க கருதுங்கள்.", "EnableTonemapping": "டோன் மேப்பிங்கை இயக்கு", "LabelOpenclDeviceHelp": "இது ஓப்பன்சிஎல் சாதனம் ஆகும், இது டன்மேப்பிங்கிற்கு பயன்படுத்தப்படுகிறது. புள்ளியின் இடது புறம் இயங்குதள எண், மற்றும் வலது புறம் இயங்குதளத்தின் சாதன எண். இயல்புநிலை மதிப்பு 0.0. OpenCL வன்பொருள் முடுக்கம் முறையைக் கொண்ட ffmpeg பயன்பாட்டுக் கோப்பு தேவை.", "LabelOpenclDevice": "OpenCL சாதனம்:", From f7d29af9ee22f17f6fbbf810dfd2ff85df13431b Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Sun, 20 Sep 2020 08:51:19 +0000 Subject: [PATCH 322/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 132 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 130 insertions(+), 2 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 8c10dc3f3b..ed4211aa5a 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -936,7 +936,7 @@ "MediaInfoLanguage": "Ngôn ngữ", "MediaInfoInterlaced": "Xen kẽ", "MediaInfoFramerate": "Tỷ lệ khung hình", - "MediaInfoForced": "Miễn cưỡng", + "MediaInfoForced": "Bắt Buộc", "MediaInfoExternal": "Bên ngoài", "MediaInfoDefault": "Mặc định", "MediaInfoCodec": "Bộ giải mã", @@ -1016,5 +1016,133 @@ "LabelSyncPlayAccessCreateAndJoinGroups": "Cho phép người dùng tạo và tham gia nhóm", "LabelSyncPlayLeaveGroupDescription": "Tắt SyncPlay", "LabelSonyAggregationFlagsHelp": "Xác định nội dung của phần tử aggregationFlags trong không gian tên urn: schemas-sonycom: av.", - "LabelServerHost": "Máy chủ:" + "LabelServerHost": "Máy chủ:", + "OptionSaveMetadataAsHiddenHelp": "Thay đổi điều này sẽ áp dụng cho dữ liệu mô tả mới được lưu về sau. Các tệp dữ liệu mô tả hiện có sẽ được cập nhật vào lần tiếp theo chúng được máy chủ lưu.", + "OptionSaveMetadataAsHidden": "Lưu dữ liệu môt tả và hình ảnh dưới dạng tệp ẩn", + "OptionRequirePerfectSubtitleMatchHelp": "Yêu cầu kết hợp hoàn hảo sẽ lọc phụ đề để chỉ bao gồm những phụ đề đã được kiểm tra và xác minh với tệp video chính xác của bạn. Bỏ chọn điều này sẽ làm tăng khả năng phụ đề được tải xuống, nhưng sẽ làm tăng khả năng văn bản phụ đề bị điền sai hoặc không chính xác.", + "OptionPlainStorageFoldersHelp": "Tất cả các thư mục được biểu diễn trong DIDL dưới dạng \"object.container.storageFolder\" thay vì một loại cụ thể hơn, chẳng hạn như \"object.container.woman.musicArtist\".", + "OptionPlainStorageFolders": "Hiển thị tất cả các thư mục dưới dạng thư mục lưu trữ đơn giản", + "OptionParentalRating": "Xếp hạng Phụ Huynh", + "OptionOnInterval": "Vào một khoảng thời gian", + "OptionNew": "Mới…", + "OptionMissingEpisode": "Thiếu Tập Phim", + "OptionMax": "Tối đa", + "OptionLoginAttemptsBeforeLockoutHelp": "Giá trị bằng 0 có nghĩa là giữ mặc định ba lần thử đối với người dùng bình thường và năm lần thử đối với quản trị viên. Đặt giá trị này thành -1 sẽ tắt tính năng này.", + "OptionLoginAttemptsBeforeLockout": "Xác định số lần đăng nhập không chính xác có thể được thực hiện trước khi xảy ra khóa người dùng.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Các yêu cầu này sẽ được thực hiện nhưng sẽ bỏ qua phần đầu dải byte.", + "OptionIgnoreTranscodeByteRangeRequests": "Bỏ qua các yêu cầu phạm vi byte chuyển mã", + "OptionHlsSegmentedSubtitles": "Phụ đề được phân đoạn HLS", + "OptionHideUserFromLoginHelp": "Hữu ích cho tài khoản quản trị viên cá nhân hoặc ẩn. Người dùng sẽ cần đăng nhập thủ công bằng cách nhập tên người dùng và mật khẩu của họ.", + "OptionExtractChapterImage": "Bật trích xuất hình ảnh mỗi cảnh quay", + "OptionExternallyDownloaded": "Tải xuống bên ngoài", + "OptionEveryday": "Mỗi ngày", + "OptionEstimateContentLength": "Ước tính độ dài nội dung khi chuyển mã", + "OptionEnableM2tsModeHelp": "Bật chế độ m2ts khi mã hóa thành mpegts.", + "OptionEnableM2tsMode": "Bật chế độ M2ts", + "OptionEnableForAllTuners": "Bật cho tất cả các thiết bị dò", + "OptionEnableExternalContentInSuggestionsHelp": "Cho phép đưa các đoạn giới thiệu trên internet và các chương trình truyền hình trực tiếp vào nội dung được đề xuất.", + "OptionEnableExternalContentInSuggestions": "Bật nội dung bên ngoài trong phần đề xuất", + "OptionEnableAccessToAllLibraries": "Bật cho phép truy cập vào tất cả các thư viện", + "OptionEnableAccessToAllChannels": "Bật cho phép truy cập vào tất cả các kênh", + "OptionEnableAccessFromAllDevices": "Bật cho phép truy cập từ tất cả các thiết bị", + "OptionDownloadImagesInAdvanceHelp": "Theo mặc định, hầu hết các hình ảnh chỉ được tải xuống khi khách hàng yêu cầu. Bật tùy chọn này để tải xuống trước tất cả các hình ảnh khi phương tiện mới được nhập. Điều này có thể khiến quá trình quét thư viện lâu hơn đáng kể.", + "OptionDownloadImagesInAdvance": "Tải xuống hình ảnh nâng cao", + "OptionDisplayFolderViewHelp": "Hiển thị các thư mục cùng với các thư viện phương tiện khác của bạn. Điều này có thể hữu ích nếu bạn muốn có chế độ xem thư mục đơn giản.", + "OptionDisplayFolderView": "Hiển thị chế độ xem thư mục để hiển thị các thư mục phương tiện thuần túy", + "OptionDisableUserHelp": "Máy chủ sẽ không cho phép bất kỳ kết nối nào từ người dùng này. Các kết nối hiện có sẽ bị chấm dứt đột ngột.", + "OptionDateAddedImportTime": "Sử dụng ngày đã quét vào thư viện", + "OptionDateAddedFileTime": "Sử dụng ngày tạo tệp", + "OptionDaily": "Hằng ngày", + "OptionCustomUsers": "Tùy Chọn", + "OptionCriticRating": "Xếp Hạng Phê Bình", + "OptionBluray": "Đĩa Blu-ray", + "OptionAutomaticallyGroupSeriesHelp": "Loạt phim nằm trên nhiều thư mục trong thư viện này sẽ được tự động hợp nhất thành một loạt phim duy nhất.", + "OptionAutomaticallyGroupSeries": "Tự động hợp nhất các loạt phim được trải dài trên nhiều thư mục", + "OptionAllowVideoPlaybackTranscoding": "Cho phép phát lại video yêu cầu chuyển mã", + "OptionAllowSyncTranscoding": "Cho phép tải xuống và đồng bộ hóa phương tiện yêu cầu chuyển mã", + "OptionAllowRemoteSharedDevicesHelp": "Các thiết bị DLNA được coi là chia sẻ cho đến khi người dùng bắt đầu kiểm soát chúng.", + "OptionAllowRemoteSharedDevices": "Cho phép điều khiển từ xa các thiết bị dùng chung", + "OptionAllowRemoteControlOthers": "Cho phép điều khiển từ xa những người dùng khác", + "OptionAllowMediaPlaybackTranscodingHelp": "Việc hạn chế quyền truy cập chuyển mã có thể gây ra lỗi phát lại trên ứng dụng khách do định dạng phương tiện không được hỗ trợ.", + "OptionAllowMediaPlayback": "Cho phép phát lại phương tiện", + "OptionAllowManageLiveTv": "Cho phép quản lý ghi truyền hình trực tiếp", + "OptionAllowLinkSharingHelp": "Chỉ các trang web chứa thông tin phương tiện được chia sẻ. Các tệp phương tiện không bao giờ chia sẻ công khai. Chia sẻ giới hạn thời gian và sẽ hết hạn sau {0} ngày.", + "OptionAllowLinkSharing": "Cho phép chia sẻ mạng xã hội", + "OptionAllowContentDownloading": "Cho phép tải xuống và đồng bộ hóa phương tiện", + "OptionAllowBrowsingLiveTv": "Cho phép truy cập TV trực tiếp", + "OptionForceRemoteSourceTranscoding": "Bắt buộc chuyển mã các nguồn phương tiện từ xa (như LiveTV)", + "OptionAllowAudioPlaybackTranscoding": "Cho phép chuyển mã khi phát lại âm thanh", + "OptionAllUsers": "Tất Cả Người Dùng", + "OptionAdminUsers": "Quản Trị Viên", + "Option3D": "3D", + "OnlyImageFormats": "Chỉ những định dạng ảnh này (VOBSUB, PGS, SUB)", + "OnlyForcedSubtitles": "Bắt Buộc Duy Nhất", + "OnlyForcedSubtitlesHelp": "Chỉ những phụ đề được đánh dấu là bắt buộc mới được tải.", + "OneChannel": "Một kênh", + "Off": "Tắt", + "NumLocationsValue": "{0} thư mục", + "Normal": "Bình thường", + "None": "Không", + "NoSubtitlesHelp": "Phụ đề sẽ không được tải theo mặc định. Chúng vẫn có thể được bật theo cách thủ công trong khi phát lại.", + "NoSubtitleSearchResultsFound": "Không tìm thấy kết quả nào.", + "MessageNoPluginConfiguration": "Không có cài đặt nào cho Plugin này để định cấu hình.", + "MessageNoNextUpItems": "Không tìm thấy. Bắt đầu xem chương trình của bạn!", + "NoNewDevicesFound": "Không tìm thấy thiết bị mới. Để thêm bộ dò mới, hãy đóng hộp thoại này và nhập thông tin thiết bị theo cách thủ công.", + "NoCreatedLibraries": "Có vẻ như bạn chưa tạo bất kỳ thư viện nào. {0} Bạn có muốn tạo một cái ngay bây giờ không? {1}", + "No": "Không", + "NextUp": "Tiếp Theo", + "NextTrack": "Chuyển đến kế tiếp", + "Next": "Kế tiếp", + "News": "Tin Tức", + "NewEpisodesOnly": "Chỉ Các Tập Mới", + "NewEpisodes": "Tập Mới", + "NewCollectionNameExample": "Ví dụ: Bộ sưu tập Chiến tranh giữa các vì sao", + "NewCollectionHelp": "Bộ sưu tập cho phép bạn tạo các nhóm phim và nội dung thư viện khác được cá nhân hóa.", + "NewCollection": "Bộ Sưu Tập Mới", + "Never": "Không Bao Giờ", + "Name": "Tên", + "MySubtitles": "Phụ Đề Của Tôi", + "Mute": "Tắt Âm Thanh", + "MusicVideos": "Video Âm Nhạc", + "MusicVideo": "Video Âm Nhạc", + "MusicLibraryHelp": "Xem lại {0} hướng dẫn đặt tên nhạc {1}.", + "MusicArtist": "Nghệ Sĩ Âm Nhạc", + "MusicAlbum": "Album nhạc", + "Movie": "Phim", + "MovieLibraryHelp": "Xem lại {0} hướng dẫn đặt tên phim {1}.", + "MoveRight": "Di chuyển sang phải", + "MoveLeft": "Di chuyển sang trái", + "MoreMediaInfo": "Thông Tin Phương Tiện", + "MoreUsersCanBeAddedLater": "Có thể thêm nhiều người dùng hơn sau đó từ trong bảng điều khiển.", + "MoreFromValue": "Thêm từ {0}", + "Mobile": "Di động", + "MinutesBefore": "phút trước", + "MinutesAfter": "phút sau", + "MetadataSettingChangeHelp": "Thay đổi cài đặt dữ liệu mô tả sẽ ảnh hưởng đến nội dung mới được thêm vào. Để làm mới nội dung hiện có, hãy mở màn hình chi tiết và bấm nút làm mới hoặc thực hiện làm mới hàng loạt bằng trình quản lý dữ liệu mô tả.", + "MetadataManager": "Quản lý dữ liệu mô tả", + "Metadata": "Dữ liệu mô tả", + "MessageSyncPlayErrorMedia": "Không thể bật SyncPlay! Lỗi phương tiện.", + "MessageSyncPlayErrorMissingSession": "Không thể bật SyncPlay! Thiếu phiên.", + "MessageSyncPlayErrorNoActivePlayer": "Không tìm thấy trình phát đang hoạt động. Phát đồng bộ SyncPlay đã bị tắt.", + "MessageSyncPlayErrorAccessingGroups": "Đã xảy ra lỗi khi truy cập danh sách nhóm.", + "MessageSyncPlayLibraryAccessDenied": "Quyền truy cập vào nội dung này bị hạn chế.", + "MessageSyncPlayJoinGroupDenied": "Cần có quyền để sử dụng SyncPlay.", + "MessageSyncPlayCreateGroupDenied": "Cần có quyền để tạo nhóm.", + "MessageSyncPlayGroupDoesNotExist": "Không thể tham gia nhóm vì nó không tồn tại.", + "MessageSyncPlayPlaybackPermissionRequired": "Cần có quyền phát lại.", + "MessageSyncPlayNoGroupsAvailable": "Không có nhóm nào. Bắt đầu phát thứ gì đó trước.", + "MessageSyncPlayUserLeft": "{0} đã rời bỏ nhóm.", + "MessageSyncPlayUserJoined": "{0} đã tham gia nhóm.", + "MessageSyncPlayDisabled": "Phát đồng bộ SyncPlay đã tắt.", + "MessageSyncPlayEnabled": "Phát đồng bộ SyncPlay đã được bật.", + "MessageYouHaveVersionInstalled": "Bạn hiện đã cài đặt phiên bản {0}.", + "MessageUnsetContentHelp": "Nội dung sẽ được hiển thị dưới dạng các thư mục thuần túy. Để có kết quả tốt nhất, hãy sử dụng trình quản lý dữ liệu mô tả để đặt loại nội dung của thư mục con.", + "MessageUnableToConnectToServer": "Chúng tôi không thể kết nối với máy chủ đã chọn ngay bây giờ. Hãy đảm bảo rằng nó đang chạy và thử lại.", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Các vị trí phương tiện sau sẽ bị xóa khỏi thư viện của bạn:", + "MessageReenableUser": "Xem bên dưới để kích hoạt lại", + "MessagePluginInstallDisclaimer": "Các plugin do các thành viên cộng đồng xây dựng là một cách tuyệt vời để nâng cao trải nghiệm của bạn với các tính năng và lợi ích bổ sung. Trước khi cài đặt, hãy lưu ý về những ảnh hưởng mà chúng có thể có trên máy chủ của bạn, chẳng hạn như quét thư viện lâu hơn, xử lý nền bổ sung và giảm độ ổn định của hệ thống.", + "MessagePluginConfigurationRequiresLocalAccess": "Để định cấu hình plugin này, vui lòng đăng nhập trực tiếp vào máy chủ cục bộ của bạn.", + "MessagePleaseWait": "Vui lòng đợi. Việc này có thể phải mất một ít thời gian.", + "MessagePleaseEnsureInternetMetadata": "Hãy đảm bảo rằng việc tải xuống dữ liệu mô tả trên internet đã được bật.", + "LabelSeriesRecordingPath": "Đường dẫn Ghi lại Phim Bộ:" } From 0f12f2e2c9f70d2bcb16ee1bb3feb96faf7de679 Mon Sep 17 00:00:00 2001 From: Alex Moran Date: Sun, 20 Sep 2020 11:01:56 +0000 Subject: [PATCH 323/582] Translated using Weblate (Pirate) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pr/ --- src/strings/pr.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/pr.json b/src/strings/pr.json index 7983d0bb97..a43da6372f 100644 --- a/src/strings/pr.json +++ b/src/strings/pr.json @@ -20,5 +20,9 @@ "AddToCollection": "Add to ye collection", "AdditionalNotificationServices": "Browse th' plugin scroll t' invoke additional bell-ringing.", "AddToPlaylist": "Add t' ye playlist", - "AddToPlayQueue": "Add t' ye play queue" + "AddToPlayQueue": "Add t' ye play queue", + "StopPlayback": "Belay That", + "ClearQueue": "Swab the Decks", + "Alerts": "Avast Ye", + "AirDate": "Maiden Voyage" } From 5f5eeefd62176e33f68c066f3e7eb5a43b4e7b18 Mon Sep 17 00:00:00 2001 From: jeremletrol81 Date: Sun, 20 Sep 2020 11:26:15 +0000 Subject: [PATCH 324/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index a464f7785b..ee1af587a7 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1413,5 +1413,6 @@ "EnableQuickConnect": "Activer la connexion rapide sur ce serveur", "ButtonUseQuickConnect": "Utiliser la Connexion Rapide", "ButtonActivate": "Activer", - "Authorize": "Autoriser" + "Authorize": "Autoriser", + "LabelTonemappingParam": "Paramètre de mappage tonal :" } From b0d50ff7b18ac3bb61e73ab825a833e905f729aa Mon Sep 17 00:00:00 2001 From: Alex Moran Date: Sun, 20 Sep 2020 11:09:25 +0000 Subject: [PATCH 325/582] Translated using Weblate (Pirate) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pr/ --- src/strings/pr.json | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/strings/pr.json b/src/strings/pr.json index a43da6372f..88cee84f94 100644 --- a/src/strings/pr.json +++ b/src/strings/pr.json @@ -1,5 +1,5 @@ { - "TabLogs": "Crow's Nest", + "TabLogs": "Capt'n's Logs", "HeaderAdmin": "Cap'n", "WelcomeToProject": "Ahoy, matey! This be Jellyfin!", "ButtonOk": "Aye", @@ -24,5 +24,16 @@ "StopPlayback": "Belay That", "ClearQueue": "Swab the Decks", "Alerts": "Avast Ye", - "AirDate": "Maiden Voyage" + "AirDate": "Maiden Voyage", + "SearchResults": "X Marks The Spot", + "Songs": "Shantees", + "SelectAdminUsername": "Capt'n's Title.", + "OnWakeFromSleep": "Show A Leg", + "TabDashboard": "The Helm", + "TabContainers": "Chests", + "ValueOneSong": "1 shantee", + "ValueSongCount": "{0} shantees", + "Yes": "Ay", + "PathNotFound": "That Be Uncharted Waters Friend.", + "LastSeen": "Ship Last Sighted {0}" } From b61261f5cbf2a78f5c78eeb17cdf262e3b6318d6 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Mon, 21 Sep 2020 07:38:49 +0000 Subject: [PATCH 326/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index ed4211aa5a..e7818f848c 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -1144,5 +1144,25 @@ "MessagePluginConfigurationRequiresLocalAccess": "Để định cấu hình plugin này, vui lòng đăng nhập trực tiếp vào máy chủ cục bộ của bạn.", "MessagePleaseWait": "Vui lòng đợi. Việc này có thể phải mất một ít thời gian.", "MessagePleaseEnsureInternetMetadata": "Hãy đảm bảo rằng việc tải xuống dữ liệu mô tả trên internet đã được bật.", - "LabelSeriesRecordingPath": "Đường dẫn Ghi lại Phim Bộ:" + "LabelSeriesRecordingPath": "Đường dẫn Ghi lại Phim Bộ:", + "PinCodeResetConfirmation": "Bạn có chắc chắn muốn đặt lại mã pin không?", + "PinCodeResetComplete": "Mã pin đã được đặt lại.", + "PictureInPicture": "Ảnh trong ảnh", + "Photo": "Hình Ảnh", + "Person": "Người", + "PerfectMatch": "Kết hợp hoàn hảo", + "People": "Mọi người", + "PasswordResetProviderHelp": "Chọn nhà cung cấp đặt lại mật khẩu sẽ được sử dụng khi người dùng này yêu cầu đặt lại mật khẩu.", + "PackageInstallFailed": "Cài đặt {0} (phiên bản {1}) không thành công.", + "PackageInstallCompleted": "Đã hoàn tất cài đặt {0} (phiên bản {1}).", + "PackageInstallCancelled": "Đã hủy cài đặt {0} (phiên bản {1}).", + "Overview": "Tổng Quát", + "OriginalAirDateValue": "Ngày phát sóng ban đầu: {0}", + "OptionWeekly": "Hàng tuần", + "OptionWeekends": "Ngày cuối tuần", + "OptionWeekdays": "Các ngày trong tuần", + "OptionWakeFromSleep": "Đánh Thức Khi Đang Ở Chế Độ Ngủ", + "OptionUnairedEpisode": "Các tập không mong muốn", + "OptionTvdbRating": "Xếp hạng TVDB", + "OptionAllowVideoPlaybackRemuxing": "Cho phép phát lại video yêu cầu chuyển đổi mà không cần mã hóa lại" } From 1c72a8d0a0286190b1c274c93a7a74f5c36ed4bd Mon Sep 17 00:00:00 2001 From: josteinh Date: Mon, 21 Sep 2020 08:08:21 +0000 Subject: [PATCH 327/582] =?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 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index a7b1363574..8e7bac93ee 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1369,5 +1369,13 @@ "Other": "Annet", "VideoAudio": "Film lyd", "Photo": "Bilde", - "LabelAlbumArtMaxResHelp": "Høyeste tillatte oppløsning for album cover som er tilgjengelig via upnp:albumArtURI." + "LabelAlbumArtMaxResHelp": "Høyeste tillatte oppløsning for album cover som er tilgjengelig via upnp:albumArtURI.", + "LabelKnownProxies": "Kjente proxyer:", + "LabelIconMaxResHelp": "Maks oppløsning av minibilder som vises via egenskapvalget upnp:icon.", + "LabelCurrentStatus": "Nåværende status:", + "KnownProxiesHelp": "Kommaseparert liste med IP-adresser av kjente proxyer brukt til å tilkoble din Jellyfin-instans. Dette er påkrevd for å tilkoble korrekt, ved å bruke X-Forwardet-For headers. Omstart er påkrevd etter lagring.", + "EnableQuickConnect": "Bruk rask tilkobling på denne tjeneren", + "ButtonUseQuickConnect": "Bruk rask tilkobling", + "ButtonActivate": "Aktiver", + "Authorize": "Autoriser" } From 2d413338c2f5451fcc293128042e80d4210044e5 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Mon, 21 Sep 2020 07:50:40 +0000 Subject: [PATCH 328/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 105 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 100 insertions(+), 5 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index e7818f848c..2f49b852d8 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -58,7 +58,7 @@ "OptionPlayCount": "Số lần phá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 .", + "PasswordMatchError": "Mật khẩu và mật khẩu xác nhận cần phải trùng khớp nhau .", "PasswordResetComplete": "Mật khẩu đã được cài đặt lại.", "PasswordResetConfirmation": "Bạn có chắc muốn reset mật khẩu?", "PasswordSaved": "Mật khẩu đã được lưu.", @@ -658,7 +658,7 @@ "LabelMaxParentalRating": "Xếp hạng tối đa cho phép của phụ huynh:", "LabelMaxChromecastBitrate": "Chất lượng truyền tải Chromecast:", "LabelMaxBackdropsPerItem": "Số lượng phông nền tối đa mỗi mục:", - "LabelMatchType": "Loại tương thích:", + "LabelMatchType": "Loại phù hợp:", "LabelManufacturerUrl": "URL của nhà sản xuất", "LabelManufacturer": "Nhà sản xuất:", "LabelLogs": "Logs:", @@ -761,7 +761,7 @@ "OptionProtocolHls": "Luồng Trực Tiếp HTTP", "OptionRandom": "Ngẫu Nhiên", "OptionRegex": "Biểu thức chính quy", - "OptionRequirePerfectSubtitleMatch": "Chỉ tải xuống phụ đề phù hợp nhất với tệp video của tôi", + "OptionRequirePerfectSubtitleMatch": "Chỉ tải xuống phụ đề đúng nhất khớp với tệp video của tôi", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Điều này là bắt buộc đối với một số thiết bị không có thời gian tìm kiếm tốt.", "OptionReportByteRangeSeekingWhenTranscoding": "Báo cáo máy chủ có hỗ trợ tìm kiếm byte khi chuyển mã", "OptionReleaseDate": "Ngày Phát Hành", @@ -1019,7 +1019,7 @@ "LabelServerHost": "Máy chủ:", "OptionSaveMetadataAsHiddenHelp": "Thay đổi điều này sẽ áp dụng cho dữ liệu mô tả mới được lưu về sau. Các tệp dữ liệu mô tả hiện có sẽ được cập nhật vào lần tiếp theo chúng được máy chủ lưu.", "OptionSaveMetadataAsHidden": "Lưu dữ liệu môt tả và hình ảnh dưới dạng tệp ẩn", - "OptionRequirePerfectSubtitleMatchHelp": "Yêu cầu kết hợp hoàn hảo sẽ lọc phụ đề để chỉ bao gồm những phụ đề đã được kiểm tra và xác minh với tệp video chính xác của bạn. Bỏ chọn điều này sẽ làm tăng khả năng phụ đề được tải xuống, nhưng sẽ làm tăng khả năng văn bản phụ đề bị điền sai hoặc không chính xác.", + "OptionRequirePerfectSubtitleMatchHelp": "Yêu cầu phù hợp nhất sẽ lọc phụ đề để chỉ bao gồm những phụ đề đã được kiểm tra và xác minh với tệp video chính xác của bạn. Bỏ chọn điều này sẽ làm tăng khả năng phụ đề được tải xuống, nhưng sẽ làm tăng khả năng văn bản phụ đề bị điền sai hoặc không chính xác.", "OptionPlainStorageFoldersHelp": "Tất cả các thư mục được biểu diễn trong DIDL dưới dạng \"object.container.storageFolder\" thay vì một loại cụ thể hơn, chẳng hạn như \"object.container.woman.musicArtist\".", "OptionPlainStorageFolders": "Hiển thị tất cả các thư mục dưới dạng thư mục lưu trữ đơn giản", "OptionParentalRating": "Xếp hạng Phụ Huynh", @@ -1164,5 +1164,100 @@ "OptionWakeFromSleep": "Đánh Thức Khi Đang Ở Chế Độ Ngủ", "OptionUnairedEpisode": "Các tập không mong muốn", "OptionTvdbRating": "Xếp hạng TVDB", - "OptionAllowVideoPlaybackRemuxing": "Cho phép phát lại video yêu cầu chuyển đổi mà không cần mã hóa lại" + "OptionAllowVideoPlaybackRemuxing": "Cho phép phát lại video yêu cầu chuyển đổi mà không cần mã hóa lại", + "SortByValue": "Sắp xếp theo {0}", + "Sort": "Sắp xếp", + "SmartSubtitlesHelp": "Phụ đề phù hợp với tùy chọn ngôn ngữ sẽ được tải khi âm thanh bằng tiếng nước ngoài.", + "Smart": "Thông minh", + "Smaller": "Nhỏ hơn", + "Small": "Nhỏ", + "SkipEpisodesAlreadyInMyLibraryHelp": "Các tập sẽ được so sánh bằng cách sử dụng số tập và mùa, khi có sẵn.", + "SkipEpisodesAlreadyInMyLibrary": "Không ghi các tập đã có trong thư viện của tôi", + "SimultaneousConnectionLimitHelp": "Số luồng đồng thời tối đa được phép. Nhập 0 không giới hạn.", + "SettingsWarning": "Việc thay đổi các giá trị này có thể làm mất ổn định hoặc lỗi kết nối. Nếu bạn gặp bất kỳ sự cố nào, chúng tôi khuyên bạn nên thay đổi chúng về mặc định.", + "Settings": "Cài đặt", + "ServerUpdateNeeded": "Máy chủ này cần được cập nhật. Để tải xuống phiên bản mới nhất, vui lòng truy cập {0}", + "ServerRestartNeededAfterPluginInstall": "Jellyfin sẽ cần được khởi động lại sau khi cài đặt plugin.", + "ServerNameIsShuttingDown": "Máy chủ tại {0} đang ngừng hoạt động.", + "ServerNameIsRestarting": "Máy chủ tại {0} đang khởi động lại.", + "SeriesYearToPresent": "{0} - Hiện tại", + "SeriesSettings": "Cài đặt loạt phim", + "SeriesRecordingScheduled": "Đã lên lịch ghi loạt phim.", + "SeriesDisplayOrderHelp": "Thứ tự các tập theo ngày phát sóng, thứ tự DVD hoặc đánh số tuyệt đối.", + "SeriesCancelled": "Đã hủy loạt phim.", + "Series": "Loạt Phim", + "SendMessage": "Gửi tin nhắn", + "SelectServer": "Chọn Máy Chủ", + "SelectAdminUsername": "Vui lòng chọn tên đăng nhập cho tài khoản quản trị.", + "Season": "Mùa", + "SearchResults": "Kết Quả Tìm Kiếm", + "SearchForSubtitles": "Tìm kiếm phụ đề", + "SearchForMissingMetadata": "Tìm kiếm dữ liệu mô tả bị thiếu", + "SearchForCollectionInternetMetadata": "Tìm kiếm tác phẩm nghệ thuật và dữ liệu mô tả trên Internet", + "Search": "Tìm kiếm", + "Screenshots": "Ảnh chụp màn hình", + "Screenshot": "Ảnh chụp màn hình", + "Schedule": "Lên lịch", + "ScanLibrary": "Quét thư viện", + "ScanForNewAndUpdatedFiles": "Quét các tệp mới và các tệp đã cập nhật", + "SaveSubtitlesIntoMediaFoldersHelp": "Lưu phụ đề kế bên tệp video để quản lý chúng được dễ dàng hơn.", + "SaveSubtitlesIntoMediaFolders": "Lưu phụ đề vào thư mục phương tiện", + "SaveChanges": "Lưu thay đổi", + "Runtime": "Thời gian chạy", + "Rewind": "Tua lại", + "ResumeAt": "Tiếp tục từ {0}", + "Restart": "Khởi động lại", + "ResetPassword": "Đặt lại mật khẩu", + "ReplaceExistingImages": "Thay thế hình ảnh hiện có", + "ReplaceAllMetadata": "Thay thế tất cả dữ liệu mô tả", + "RepeatOne": "Lặp lại một lần", + "Recordings": "Bản ghi", + "MessageChangeRecordingPath": "Thay đổi thư mục ghi của bạn sẽ không đưa các bản ghi hiện có từ chỗ cũ sang chỗ mới. Bạn sẽ cần đưa chúng đi theo cách thủ công nếu muốn.", + "RecordingCancelled": "Đã hủy ghi.", + "RecordSeries": "Ghi lại loạt phim", + "QuickConnectNotActive": "Kết nối nhanh không hoạt động trên máy chủ này", + "QuickConnectNotAvailable": "Yêu cầu quản trị viên máy chủ của bạn bật kết nối nhanh", + "QuickConnectInvalidCode": "Mã kết nối nhanh không hợp lệ", + "QuickConnectDescription": "Để đăng nhập bằng kết nối nhanh, hãy chọn nút Kết nối nhanh trên thiết bị bạn đang đăng nhập và nhập mã hiển thị bên dưới.", + "QuickConnectDeactivated": "Kết nối nhanh đã bị vô hiệu hóa trước khi yêu cầu đăng nhập có thể được chấp thuận", + "QuickConnectAuthorizeFail": "Mã kết nối nhanh không xác định", + "QuickConnectAuthorizeSuccess": "Yêu cầu được cho phép", + "QuickConnectAuthorizeCode": "Nhập mã {0} để đăng nhập", + "QuickConnectActivationSuccessful": "Đã kích hoạt thành công", + "QuickConnect": "Kết nối nhanh", + "Quality": "Chất lượng", + "Programs": "Chương Trình", + "Profile": "Hồ sơ", + "ProductionLocations": "Nơi sản xuất", + "Producer": "Nhà sản xuất", + "Primary": "Chính Thức", + "PreviousTrack": "Chuyển đến phần trước", + "Previous": "Trước", + "Premieres": "Công chiếu", + "Premiere": "Công chiếu", + "PreferEmbeddedEpisodeInfosOverFileNames": "Ưu tiên thông tin tập được nhúng hơn tên tệp", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Điều này sử dụng thông tin tập từ siêu dữ liệu được nhúng nếu có.", + "PreferEmbeddedTitlesOverFileNamesHelp": "Điều này xác định tiêu đề hiển thị mặc định khi không có siêu dữ liệu internet hoặc siêu dữ liệu cục bộ.", + "PreferEmbeddedTitlesOverFileNames": "Ưu tiên tiêu đề được nhúng hơn tên tệp", + "MessageGetInstalledPluginsError": "Đã xảy ra lỗi khi nhận danh sách các plugin hiện được cài đặt.", + "MessagePluginInstallError": "Đã xảy ra lỗi khi cài đặt plugin.", + "MessagePluginInstalled": "Plugin đã được cài đặt thành công. Máy chủ sẽ cần được khởi động lại để các thay đổi có hiệu lực.", + "PosterCard": "Thẻ áp phích", + "Poster": "Áp phích", + "PleaseSelectTwoItems": "Vui lòng chọn ít nhất hai mục.", + "PleaseRestartServerName": "Vui lòng khởi động lại Jellyfin vào {0}.", + "PleaseEnterNameOrId": "Vui lòng nhập tên hoặc ID bên ngoài.", + "PleaseConfirmPluginInstallation": "Vui lòng nhấp vào OK để xác nhận bạn đã đọc ở trên và muốn tiếp tục cài đặt plugin.", + "PleaseAddAtLeastOneFolder": "Vui lòng thêm ít nhất một thư mục vào thư viện này bằng cách nhấp vào nút Thêm.", + "Played": "Đã Phát", + "PlaybackErrorNoCompatibleStream": "Ứng dụng khách này không tương thích với phương tiện và máy chủ không gửi định dạng phương tiện tương thích.", + "PlayNextEpisodeAutomatically": "Tự động phát tập tiếp theo", + "PlayNext": "Lượt tiếp theo", + "PlayFromBeginning": "Phát từ đầu", + "PlayCount": "Số lần phát", + "PlaybackRate": "Tỷ lệ phát lại", + "PlaybackData": "Dữ liệu phát lại", + "PlayAllFromHere": "Phát tất cả từ đây", + "Play": "Phát", + "PlaceFavoriteChannelsAtBeginning": "Đặt các kênh yêu thích ở đầu" } From 52c9032b1d5b0bd5d3d9241667cc7c7ddd957edb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=A5=EA=B1=B4?= Date: Mon, 21 Sep 2020 09:03:31 +0000 Subject: [PATCH 329/582] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 222 ++++++++++++++++++++++++++++++++------------ 1 file changed, 164 insertions(+), 58 deletions(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index 9cc0f7f6ae..8cfa17f56e 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -150,7 +150,7 @@ "HeaderPleaseSignIn": "로그인하십시오", "HeaderPluginInstallation": "플러그인 설치", "HeaderProfileInformation": "프로필 정보", - "HeaderProfileServerSettingsHelp": "이 값은 Jellyfin 서버가 장치에 자신을 어떻게 표시할지를 제어합니다.", + "HeaderProfileServerSettingsHelp": "이 값은 서버가 클라이언트에 자신을 표시하는 방법을 제어합니다.", "HeaderRecentlyPlayed": "최근 재생됨", "HeaderRemoteControl": "원격 제어", "HeaderRemoveMediaFolder": "미디어 폴더 제거", @@ -161,12 +161,12 @@ "HeaderScenes": "장면", "HeaderSeasons": "시즌", "HeaderSelectMetadataPath": "메타데이터 경로 선택", - "HeaderSelectMetadataPathHelp": "메타데이터를 보관할 경로를 탐색 또는 입력하세요. 쓰기 가능한 폴더여야 합니다.", + "HeaderSelectMetadataPathHelp": "메타 데이터에 사용할 경로를 찾아 보거나 입력합니다. 폴더는 쓰기 가능해야합니다.", "HeaderSelectPath": "경로 선택", "HeaderSelectServerCachePath": "서버 캐시 경로 선택", "HeaderSelectServerCachePathHelp": "서버 캐시 파일에 사용할 경로를 탐색 또는 입력하세요. 쓰기 가능한 폴더여야 합니다.", "HeaderSelectTranscodingPath": "트랜스코딩 임시 경로 선택", - "HeaderSelectTranscodingPathHelp": "트랜스코딩 임시 파일에 사용할 경로를 탐색 또는 입력하세요. 쓰기 가능한 폴더여야 합니다.", + "HeaderSelectTranscodingPathHelp": "트랜스 코딩 파일에 사용할 경로를 찾아 보거나 입력합니다. 폴더는 쓰기 가능해야합니다.", "HeaderSendMessage": "메시지 전송", "HeaderServerSettings": "서버 설정", "HeaderSetupLibrary": "미디어 라이브러리 설정", @@ -191,8 +191,8 @@ "HeaderYears": "연도", "Help": "도움말", "Images": "이미지", - "ImportFavoriteChannelsHelp": "활성화 시, 튜너 장치에서 즐겨찾기로 표시된 채널만 불러옵니다.", - "ImportMissingEpisodesHelp": "이 기능을 사용하면 누락 된 에피소드에 대한 정보가 Jellyfin 데이터베이스로 가져와 시즌 및 시리즈 내에서 표시됩니다. 이로 인해 상당히 긴 라이브러리 스캔이 발생할 수 있습니다.", + "ImportFavoriteChannelsHelp": "튜너 장치에서 즐겨찾기로 표시된 채널만 가져옵니다.", + "ImportMissingEpisodesHelp": "누락 된 에피소드에 대한 정보는 데이터베이스로 가져 와서 시즌 및 시리즈 내에 표시됩니다. 이로 인해 라이브러리 스캔이 상당히 길어질 수 있습니다.", "InstallingPackage": "{0} 설치 중 ( {1} 버전)", "InstantMix": "인스턴트 믹스", "ItemCount": "{0} 항목", @@ -211,7 +211,7 @@ "LabelAlbumArtists": "앨범 아티스트:", "LabelAppName": "앱 이름", "LabelArtists": "아티스트:", - "LabelArtistsHelp": "; 를 사용하여 여러 개 분리", + "LabelArtistsHelp": "세미콜론으로 여러 아티스트를 구분합니다.", "LabelAudioLanguagePreference": "선호하는 오디오 언어:", "LabelBirthDate": "생일:", "LabelBirthYear": "출생 년도:", @@ -229,11 +229,11 @@ "LabelCustomCertificatePath": "사용자 지정 SSL 인증서 경로:", "LabelCustomCertificatePathHelp": "커스텀 도메인에서 TLS를 지원할 수 있도록 인증서 및 개인키가 포함 된 PKCS #12 파일의 경로입니다.", "LabelCustomCss": "사용자 지정 CSS:", - "LabelCustomCssHelp": "사용자 정의 스타일링을 웹 인터페이스에 적용합니다.", + "LabelCustomCssHelp": "웹 인터페이스에 사용자 정의 스타일을 적용하십시오.", "LabelCustomRating": "사용자 평점:", "LabelDateAdded": "추가한 날짜:", "LabelDateAddedBehavior": "새 콘텐츠에 대한 날짜 추가 동작:", - "LabelDateAddedBehaviorHelp": "메타데이터에 지정된 값이 있으면 항상 이 옵션들에 우선하여 사용됩니다.", + "LabelDateAddedBehaviorHelp": "메타데이터 값이 있는 경우 항상 먼저 사용됩니다.", "LabelDay": "날짜:", "LabelDeathDate": "사망일:", "LabelDefaultUser": "기본 사용자:", @@ -249,16 +249,16 @@ "LabelEasyPinCode": "간편 PIN 코드:", "LabelEmbedAlbumArtDidl": "DIDL에 앨범 아트 삽입", "LabelEnableAutomaticPortMap": "자동 포트 맵핑 사용", - "LabelEnableDlnaClientDiscoveryInterval": "클라이언트 탐색 간격 (초)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Jellyfin이 수행하는 SSDP 검색 간격(초)을 결정합니다.", + "LabelEnableDlnaClientDiscoveryInterval": "클라이언트 탐색 간격", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "SSDP 검색 간격(초)을 결정합니다.", "LabelEnableDlnaDebugLogging": "DNLA 디버그 로그 사용", "LabelEnableDlnaDebugLoggingHelp": "매우 큰 로그 파일을 생성합니다. 문제해결을 위해 필요한 경우에만 사용하여야 합니다.", "LabelEnableDlnaPlayTo": "다음에서 DNLA 재생 사용:", - "LabelEnableDlnaPlayToHelp": "네트워크 내 장치를 감지하고 원격으로 제어할 수 있는 기능을 제공합니다.", + "LabelEnableDlnaPlayToHelp": "네트워크 내에서 장치를 감지하고 원격으로 제어 할 수있는 기능을 제공합니다.", "LabelEnableDlnaServer": "DLNA 서버 활성화", "LabelEnableDlnaServerHelp": "네트워크 내의 UPnP 장치가 콘텐츠를 탐색하고 재생할 수 있게 허용합니다.", "LabelEnableRealtimeMonitor": "실시간 모니터링 사용", - "LabelEnableRealtimeMonitorHelp": "지원하는 파일 시스템에서는 변경 사항이 즉시 실행됩니다.", + "LabelEnableRealtimeMonitorHelp": "파일 변경 사항은 지원되는 파일 시스템에서 즉시 처리됩니다.", "LabelEndDate": "종료일 :", "LabelEvent": "이벤트:", "LabelEveryXMinutes": "마다:", @@ -269,13 +269,13 @@ "LabelForgotPasswordUsernameHelp": "기억하고 있다면, 사용자명을 입력하세요.", "LabelFormat": "포맷:", "LabelFriendlyName": "별칭:", - "LabelServerNameHelp": "이 이름은 서버를 구분하는데 사용합니다. 기본값으로 컴퓨터 이름을 사용합니다.", + "LabelServerNameHelp": "이 이름은 서버를 식별하는 데 사용되며 기본값은 서버의 호스트 이름입니다.", "LabelGroupMoviesIntoCollections": "컬렉션으로 영화 묶기", - "LabelGroupMoviesIntoCollectionsHelp": "영화 목록을 표시할 때 컬렉션에 포함된 영화가 한 개로 묶여진 항목으로 보여줍니다.", + "LabelGroupMoviesIntoCollectionsHelp": "영화 목록을 표시 할 때 컬렉션의 영화는 하나의 항목으로 표시됩니다.", "LabelHardwareAccelerationType": "하드웨어 가속:", "LabelHardwareAccelerationTypeHelp": "하드웨어 가속은 추가 설정이 필요합니다.", "LabelHttpsPort": "로컬 HTTPS 포트 번호:", - "LabelHttpsPortHelp": "Jellyfin의 HTTPS 서버가 바인딩해야하는 TCP포트 번호", + "LabelHttpsPortHelp": "HTTPS 서버의 TCP 포트 번호입니다.", "LabelIconMaxHeight": "아이콘 최대 높이:", "LabelIconMaxWidth": "아이콘 최대 너비:", "LabelIdentificationFieldHelp": "대소문자를 구별하지 않는 부분 문자열 또는 정규 표현식.", @@ -289,7 +289,7 @@ "LabelKodiMetadataSaveImagePaths": "NFO 파일에 이미지 경로 저장", "LabelLanguage": "언어:", "LabelLocalHttpServerPortNumber": "로컬 HTTP 포트 번호:", - "LabelLocalHttpServerPortNumberHelp": "Jellyfin HTTP 서버의 TCP 포트 번호입니다.", + "LabelLocalHttpServerPortNumberHelp": "HTTP 서버의 TCP 포트 번호입니다.", "LabelLockItemToPreventChanges": "변경할 수 없게 항목 잠금", "LabelLoginDisclaimer": "로그인 고지사항:", "LabelLoginDisclaimerHelp": "로그인 페이지 하단에 표시할 메세지", @@ -308,7 +308,7 @@ "LabelMetadataPath": "메타데이터 경로:", "LabelMetadataPathHelp": "다운로드한 아트워크와 메타데이터를 저장할 위치를 지정합니다.", "LabelMetadataSavers": "메타데이터 저장기:", - "LabelMetadataSaversHelp": "메타데이터를 저장할 형식을 선택합니다.", + "LabelMetadataSaversHelp": "메타 데이터를 저장할 때 사용할 파일 형식을 선택하십시오.", "LabelMethod": "방법:", "LabelMinBackdropDownloadWidth": "다운로드할 배경 이미지 최소 넓이:", "LabelMinScreenshotDownloadWidth": "다운로드할 스크린샷의 최소 너비:", @@ -317,9 +317,9 @@ "LabelModelNumber": "모델 번호", "LabelModelUrl": "모델 URL", "LabelMonitorUsers": "다음의 활동 모니터링:", - "LabelMovieRecordingPath": "영화 녹화 경로 (옵션):", + "LabelMovieRecordingPath": "동영상 녹화 경로 :", "LabelMusicStreamingTranscodingBitrate": "음악 트랜스코딩 비트레이트:", - "LabelMusicStreamingTranscodingBitrateHelp": "음악 스트리밍 시 최대 비트 전송률을 지정합니다.", + "LabelMusicStreamingTranscodingBitrateHelp": "음악을 스트리밍 할 때 최대 비트 전송률을 지정합니다.", "LabelName": "이름:", "LabelNewName": "새 이름:", "LabelNewPassword": "새 비밀번호:", @@ -355,14 +355,14 @@ "LabelRecordingPathHelp": "녹화를 저장할 기본 위치를 지정합니다. 비어 있는 경우 서버의 프로그램 데이터 폴더가 사용됩니다.", "LabelReleaseDate": "개봉일:", "LabelRemoteClientBitrateLimit": "인터넷 스트리밍 비트레이트 제한 (Mbps):", - "LabelRuntimeMinutes": "상영 시간 (분):", + "LabelRuntimeMinutes": "재생 시간:", "LabelSaveLocalMetadata": "아트워크와 메타데이터를 미디어 폴더에 저장", "LabelSaveLocalMetadataHelp": "아트워크 및 메타데이터를 미디어 폴더에 직접 저장하면 쉽게 편집 할 수 있습니다.", "LabelSelectUsers": "사용자 선택:", "LabelSelectVersionToInstall": "설치할 버전 선택:", "LabelSendNotificationToUsers": "다음으로 알림 전송:", "LabelSerialNumber": "시리얼 번호", - "LabelSeriesRecordingPath": "시리즈 녹화 경로 (옵션) :", + "LabelSeriesRecordingPath": "시리즈 기록 경로 :", "LabelServerHost": "호스트:", "LabelServerHostHelp": "192.168.1.100:8096 또는 https://myserver.com", "LabelSkipIfAudioTrackPresent": "오디오 트랙이 다운로드 언어와 일치하면 건너뛰기", @@ -418,7 +418,7 @@ "MessageConfirmProfileDeletion": "이 프로필을 삭제하겠습니까?", "MessageConfirmRecordingCancellation": "이 녹화를 취소하겠습니까?", "MessageConfirmRemoveMediaLocation": "이 미디어 위치를 제거하겠습니까?", - "MessageConfirmRestart": "Jellyfin 서버를 다시 시작하겠습니까?", + "MessageConfirmRestart": "Jellyfin을 다시 시작 하시겠습니까?", "MessageConfirmShutdown": "정말로 서버를 종료하겠습니까?", "MessageContactAdminToResetPassword": "비밀번호를 재설정하려면 시스템 관리자에게 문의하십시오.", "MessageDeleteTaskTrigger": "이 작업 트리거를 삭제하겠습니까?", @@ -432,7 +432,7 @@ "MessageItemsAdded": "항목 추가됨", "MessageNoMovieSuggestionsAvailable": "현재 추천 영화를 사용할 수 없습니다. 영화 보기를 시작하고 평가를 하면 추천을 볼 수 있습니다.", "MessageNoPluginsInstalled": "설치된 플러그인이 없습니다.", - "MessageNoTrailersFound": "예고편이 없습니다. 예고편 채널을 설치하여 인터넷 예고편 라이브러리를 추가하면 향상된 영화 환경을 경험할 수 있습니다.", + "MessageNoTrailersFound": "인터넷 예고편 라이브러리를 추가하여 영화 경험을 향상 시키려면 예고편 채널을 설치하세요.", "MessageNothingHere": "아무것도 없습니다.", "MessagePasswordResetForUsers": "다음 사용자는 비밀번호를 재설정했습니다. 재설정을 수행하는데 사용된 핀 코드로 로그인 할 수 있습니다.", "MessagePleaseEnsureInternetMetadata": "인터넷 메타데이터 다운로드가 켜져 있는지 확인하세요.", @@ -470,7 +470,7 @@ "OptionDateAddedImportTime": "라이브러리에 추가된 날짜 사용", "OptionDatePlayed": "재생한 날짜", "OptionDisableUser": "이 사용자 사용 안 함", - "OptionDisableUserHelp": "서버가 이 사용자의 연결을 허용하지 않습니다. 현재 연결이 예고없이 종료됩니다.", + "OptionDisableUserHelp": "서버는 이 사용자의 연결을 허용하지 않습니다. 기존 연결이 갑자기 종료됩니다.", "OptionDislikes": "싫어함", "OptionDisplayFolderViewHelp": "미디어 라이브러리 옆에 폴더를 표시합니다. 이는 일반적인 폴더 보기를 원하는 경우에 유용합니다.", "OptionDvd": "DVD", @@ -487,7 +487,7 @@ "OptionHideUserFromLoginHelp": "비공개 또는 숨겨진 관리자 계정에 유용합니다. 사용자는 수동으로 사용자 이름과 비밀번호를 입력하여 로그인해야 합니다.", "OptionHlsSegmentedSubtitles": "HLS 분할된 자막", "OptionIgnoreTranscodeByteRangeRequests": "트랜스코드 바이트 범위 요청 무시", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "활성화된 경우 이러한 요청은 존중되지만 바이트 헤더 범위는 무시됩니다.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "이러한 요청은 수락되지만 바이트 범위 헤더는 무시됩니다.", "OptionImdbRating": "IMDb 평점", "OptionLikes": "좋아함", "OptionMax": "최대", @@ -495,9 +495,9 @@ "OptionOnInterval": "기간", "OptionParentalRating": "등급", "OptionPlainStorageFolders": "모든 폴더를 일반 저장소 폴더로 표시", - "OptionPlainStorageFoldersHelp": "활성화 된 경우 모든 폴더는 \"object.container.person.musicArtist\"와 같이보다 구체적인 유형 대신 \"object.container.storageFolder\"로 DIDL에 표시됩니다.", + "OptionPlainStorageFoldersHelp": "모든 폴더는 DIDL에서 \"object.container.person.musicArtist\"와 같은보다 구체적인 유형 대신 \"object.container.storageFolder\"로 표시됩니다.", "OptionPlainVideoItems": "모든 비디오를 일반 비디오 항목으로 표시", - "OptionPlainVideoItemsHelp": "활성화 된 경우 모든 비디오는 \"object.item.videoItem.movie\"와 같이보다 구체적인 유형 대신 \"object.item.videoItem\"로 DIDL에 표시됩니다.", + "OptionPlainVideoItemsHelp": "모든 비디오는 DIDL에서 \"object.item.videoItem.movie\"와 같은보다 구체적인 유형 대신 \"object.item.videoItem\"으로 표시됩니다.", "OptionPlayCount": "재생 횟수", "OptionPremiereDate": "Premiere 일자", "OptionProtocolHls": "HTTP 실시간 스트리밍", @@ -507,16 +507,16 @@ "OptionSaveMetadataAsHidden": "메타데이터와 이미지를 숨김 파일로 저장", "OptionSpecialEpisode": "스페셜", "OptionTrackName": "트랙 이름", - "OptionTvdbRating": "TVDb 평점", + "OptionTvdbRating": "TVDB 평가", "OptionUnairedEpisode": "방송하지 않은 에피소드", "OptionWakeFromSleep": "슬립모드에서 깨우기", "OptionWeekdays": "주중", "OptionWeekends": "주말", "OptionWeekly": "주", "OriginalAirDateValue": "최초 방송일: {0}", - "PackageInstallCancelled": "{0} 설치 취소됨", - "PackageInstallCompleted": "{0} 설치 완료", - "PackageInstallFailed": "{0} 설치 실패", + "PackageInstallCancelled": "{0} (버전 {1}) 설치 취소.", + "PackageInstallCompleted": "{0} (버전 {1}) 설치 완료.", + "PackageInstallFailed": "{0} (버전 {1}) 설치 실패.", "ParentalRating": "등급", "PasswordMatchError": "비밀번호와 비밀번호 확인이 일치해야 합니다.", "PasswordResetComplete": "비밀번호가 재설정되었습니다.", @@ -703,7 +703,7 @@ "Disconnect": "연결 끊기", "DirectPlaying": "다이렉트 재생", "DirectStreaming": "다이렉트 스트리밍", - "DirectStreamHelp2": "다이렉트 스트리밍은 비디오 퀄리티의 손실없이 매우 적은 처리능력을 사용합니다.", + "DirectStreamHelp2": "다이렉트 스트림은 비디오 품질 손실을 최소화하면서 처리 능력을 거의 사용하지 않습니다.", "DetectingDevices": "장치 감지", "Desktop": "데스크탑", "Default": "기본", @@ -775,8 +775,8 @@ "Programs": "프로그램", "Previous": "이전", "PreferEmbeddedTitlesOverFileNames": "파일 이름보다 내장된 제목 선호", - "MessagePluginInstalled": "플러그인이 성공적으로 설치되었습니다. 변경사항을 적용하려면 Jellyfin 서버를 재시작하십시오.", - "PleaseRestartServerName": "Jellyfin 서버를 재시작하십시오 - {0}.", + "MessagePluginInstalled": "플러그인이 성공적으로 설치되었습니다. 변경 사항을 적용하려면 서버를 다시 시작해야합니다.", + "PleaseRestartServerName": "Jellyfin을 다시 시작하십시오. {0}.", "PleaseEnterNameOrId": "이름 또는 외부 ID를 입력하십시오.", "PlayNextEpisodeAutomatically": "자동으로 다음 에피소드 재생", "PlayNext": "다음 재생", @@ -785,7 +785,7 @@ "Overview": "개요", "OptionSubstring": "Substring", "OptionProtocolHttp": "HTTP", - "OptionNew": "새로운..", + "OptionNew": "새로운…", "OptionIsSD": "SD", "OptionIsHD": "HD", "OptionEnableForAllTuners": "모든 튜너 장치 활성화", @@ -865,7 +865,7 @@ "LabelOriginalTitle": "원본 제목:", "LabelPersonRole": "규칙:", "LabelMovieCategories": "영화 카테고리:", - "LabelOptionalNetworkPath": "(옵션) 공유 네트워크 폴더:", + "LabelOptionalNetworkPath": "공유 네트워크 폴더:", "LabelNewsCategories": "뉴스 카테고리:", "LabelMaxStreamingBitrate": "최대 스트리밍 퀄리티:", "LabelLanNetworks": "LAN 네트워크:", @@ -907,7 +907,7 @@ "MessageNoServersAvailable": "자동 서버 탐색을 사용했지만, 서버가 발견되지 않았습니다.", "MessageDownloadQueued": "다운로드 대기 중.", "MessageDirectoryPickerLinuxInstruction": "Linux on Arch Linux, CentOS, Debian, Fedora, OpenSUSE, Ubuntu의 경우 서비스 사용자에게 최소한 저장 위치에 대한 읽기 권한을 부여해야 합니다.", - "MessageDirectoryPickerBSDInstruction": "BSD의 경우, Jellyfin이 FreeNAS Jail에 액세스할 수 있도록 하려면 FreeNAS Jail 내에 스토리지를 구성해야 할 수도 있습니다.", + "MessageDirectoryPickerBSDInstruction": "BSD의 경우 Jellyfin이 미디어에 액세스 할 수 있도록 FreeNAS Jail 내에 스토리지를 구성해야 할 수 있습니다.", "LatestFromLibrary": "최근 {0}", "LabelYear": "년도:", "LabelVaapiDeviceHelp": "하드웨어 가속에 쓰이는 렌더 노드입니다.", @@ -934,7 +934,7 @@ "HeaderLibraryOrder": "라이브러리 순서", "HeaderDefaultRecordingSettings": "기본 녹화 설정", "HeaderBlockItemsWithNoRating": "등급 정보가 없거나 인식 불가능한 항목 차단:", - "HeaderApiKeysHelp": "외부 애플리케이션은 Jellyfin 서버와 통신하기 위해 API키를 가지고 있어야 합니다. 키는 Jellyfin 계정으로 로그인하거나 수동으로 키를 부여하여 발급할 수 있습니다.", + "HeaderApiKeysHelp": "서버와 통신하려면 외부 애플리케이션에 API 키가 있어야합니다. 키는 일반 사용자 계정으로 로그인하거나 애플리케이션에 수동으로 키를 부여하여 발급됩니다.", "HeaderAllowMediaDeletionFrom": "미디어 제거 허용", "HardwareAccelerationWarning": "하드웨어 가속을 활성화하면 일부 환경에서 불안정해질 수 있습니다. 운영체제 및 비디오 드라이버가 최신 상태인지 확인하십시오. 이 기능을 활성화한 후 비디오를 재생하는 데 어려움이 있을 경우 설정을 다시 '사용 안 함'으로 변경하십시오.", "GuestStar": "게스트 출연", @@ -946,7 +946,7 @@ "ExtraLarge": "매우 큼", "ErrorStartHourGreaterThanEnd": "종료 시간은 시작 시간보다 커야 합니다.", "Display": "디스플레이", - "DirectStreamHelp1": "이 미디어는 해상도 및 미디어 유형(H.264, AC3 등)과 관련하여 장치와 호환되지만, 파일 컨테이너(mkv, avi, wmv 등)와는 호환되지 않습니다. 비디오는 장치로 스트리밍 되기 전에 즉각 재포장됩니다.", + "DirectStreamHelp1": "미디어가 해상도 및 미디어 유형 (H.264, AC3 등)과 관련하여 장치와 호환되지만 호환되지 않는 파일 컨테이너 (mkv, avi, wmv 등)에 있습니다. 비디오는 장치로 전송되기 전에 즉석에서 다시 패키징됩니다.", "Descending": "내림차순", "Continuing": "계속", "ConfirmEndPlayerSession": "정말로 {0}의 Jellyfin을 종료하시겠습니까?", @@ -961,7 +961,7 @@ "RecentlyWatched": "최근 시청함", "PleaseAddAtLeastOneFolder": "추가 버튼을 클릭하여 하나 이상의 폴더를 라이브러리에 추가하십시오.", "PlaybackData": "재생 데이터", - "PasswordResetProviderHelp": "비밀번호 재설정 제공자를 선택하십시오. 비밀번호 재설정이 요청될때 사용됩니다.", + "PasswordResetProviderHelp": "이 사용자가 암호 재설정을 요청할 때 사용할 암호 재설정 공급자를 선택합니다.", "NoSubtitleSearchResultsFound": "결과가 없습니다.", "NoNewDevicesFound": "새로운 장치를 찾지 못했습니다. 새 튜너를 추가하려면 이 대화상자를 닫고 장치 정보를 직접 입력하십시오.", "MessageNoAvailablePlugins": "가능한 플러그인 없음", @@ -996,7 +996,7 @@ "HeaderPreferredMetadataLanguage": "선호하는 메타데이터 언어", "HeaderLiveTvTunerSetup": "실시간 TV 튜너 설정", "HeaderLatestMovies": "최근 영화", - "HeaderKodiMetadataHelp": "NFO 메타데이터를 활성화/비활성화하려면, Jellyfin 라이브러리 설정에서 라이브러리를 편집하고 메타데이터 보호기 섹션을 찾으십시오.", + "HeaderKodiMetadataHelp": "NFO 메타 데이터를 활성화 또는 비활성화하려면 라이브러리와 메타데이터 보호 섹션을 편집하세요.", "HeaderKeepRecording": "녹화 유지", "HeaderForKids": "아이들용", "HeaderDetectMyDevices": "내 장치 탐색", @@ -1040,7 +1040,7 @@ "DisplayMissingEpisodesWithinSeasons": "시즌 내 누락된 에피소드 표시", "EnableBackdropsHelp": "라이브러리를 탐색하는 동안 일부 페이지의 배경을 표시합니다.", "ErrorAddingXmlTvFile": "XMLTV 파일에 액세스하는 동안 오류가 발생했습니다. 파일이 존재하는지 확인 후 다시 시도하십시오.", - "ErrorDeletingItem": "Jellyfin 서버에서 항목을 제거하는 중에 오류가 발생했습니다. Jellyfin 서버가 미디어 폴더에 대해 쓰기 권한이 있는지 확인한 후 다시 시도하십시오.", + "ErrorDeletingItem": "서버에서 항목을 삭제하는 중에 오류가 발생했습니다. Jellyfin에 미디어 폴더에 대한 쓰기 권한이 있는지 확인하고 다시 시도하십시오.", "HeaderConfigureRemoteAccess": "원격 접근 구성", "HeaderCastAndCrew": "배역 및 제작진", "HeaderNextEpisodePlayingInValue": "{0}뒤에 다음 에피소드 재생", @@ -1061,7 +1061,7 @@ "DisplayInMyMedia": "홈화면에 표시", "DisplayInOtherHomeScreenSections": "보고 있는 것이나 최신 미디어 등을 홈 페이지에 표시합니다", "DisplayMissingEpisodesWithinSeasonsHelp": "서버 환경설정에서도 TV 라이브러리가 활성화되어있어야 합니다.", - "ErrorAddingMediaPathToVirtualFolder": "미디어 경로를 추가하는 데에 오류가 발생했습니다. 경로를 다시 확인하거나 Jellyfin 서버가 해당 경로에 접근할 수 있는지 확인해 주세요.", + "ErrorAddingMediaPathToVirtualFolder": "미디어 경로를 추가하는 중에 오류가 발생했습니다. 경로가 유효하고 Jellyfin이 해당 위치에 액세스 할 수 있는지 확인하세요.", "ErrorGettingTvLineups": "TV 구성을 다운로드 하는 중에 오류가 발생하였습니다. 정보가 맞는지 확인한 후 다시 시도해 주세요.", "BoxRear": "상자 (후면)", "Absolute": "절대", @@ -1080,7 +1080,7 @@ "ColorTransfer": "컬러 변환", "AskAdminToCreateLibrary": "라이브러리를 생성하려면 관리자에게 문의하십시오.", "LabelCorruptedFrames": "손상된 프레임:", - "LabelBindToLocalNetworkAddressHelp": "(선택) 로컬 IP 주소 대신 이 주소로 http 서버를 바인딩합니다. 비어있으면 서버가 가능한 모든 주소로 바인딩합니다. 이 항목을 수정하면 Jellyfin 서버를 재시작해야 합니다.", + "LabelBindToLocalNetworkAddressHelp": "HTTP 서버의 로컬 IP 주소를 대체하십시오. 비어있는 경우 서버는 사용 가능한 모든 주소에 바인딩됩니다. 이 값을 변경하려면 다시 시작해야합니다.", "LabelAirsBeforeSeason": "시즌 이전 방송:", "LabelAirsBeforeEpisode": "에피소드 이전 방송:", "LabelAirsAfterSeason": "시즌 이후 방송:", @@ -1101,7 +1101,7 @@ "MessageLeaveEmptyToInherit": "상위 항목의 설정이나 전역 설정값을 그대로 적용하기 위해서는 공백으로 두십시오.", "MessageImageTypeNotSelected": "드롭다운 메뉴에서 이미지 유형을 선택하십시오.", "MessageCreateAccountAt": "{0}에서 계정 만들기", - "MessageConfirmRevokeApiKey": "정말 api 키를 무효화하시겠습니까? Jellyfin 서버와의 연결이 예고 없이 중단될 수 있습니다.", + "MessageConfirmRevokeApiKey": "이 API 키를 취소 하시겠습니까? 이 서버에 대한 응용 프로그램의 연결이 갑자기 종료됩니다.", "MessageConfirmAppExit": "종료하시겠습니까?", "MediaIsBeingConverted": "미디어가 재생 중인 디바이스와 호환되는 형식으로 변환되는 중입니다.", "MediaInfoRefFrames": "참조 프레임", @@ -1109,7 +1109,7 @@ "MapChannels": "채널 매핑", "Large": "크게", "LanNetworksHelp": "대역폭을 강제로 제한할 때 로컬 네트워크로 간주되는 쉼표로 구분된 IP 주소 및 IP/서브넷 마스크 목록입니다. 지정될 경우 모든 다른 IP 주소는 외부 네트워크로 간주되며 외부 대역폭 제한이 적용됩니다. 공백일 경우 서버의 서브넷만이 로컬 네트워크로 간주됩니다.", - "LabelffmpegPathHelp": "ffmpeg 실행 파일 혹은 ffmpeg를 포함하는 폴더 경로입니다.", + "LabelffmpegPathHelp": "ffmpeg를 포함하는 ffmpeg 응용 프로그램 파일 또는 폴더의 경로입니다.", "LabelXDlnaDocHelp": "urn:schemas-dlna-org:device-1-0 네임스페이스에 포함된 X_DLNADOC 요소의 내용을 결정합니다.", "LabelXDlnaDoc": "X-DLNA doc:", "LabelXDlnaCapHelp": "urn:schemas-dlna-org:device-1-0 네임스페이스에 포함된 X_DLNACAP 요소의 내용을 결정합니다.", @@ -1130,7 +1130,7 @@ "LabelReasonForTranscoding": "트랜스코딩 원인:", "LabelProtocolInfoHelp": "디바이스에서 GetProtocolInfo 요청을 처리할 때 사용될 값입니다.", "LabelPostProcessorArguments": "후처리 명령어:", - "LabelOptionalNetworkPathHelp": "이 폴더가 네트워크 공유 폴더라면 네트워크 공유 경로를 제공하여 Jellyfin 클라이언트가 미디어 파일에 직접 접속하도록 설정할 수 있습니다.", + "LabelOptionalNetworkPathHelp": "이 폴더가 네트워크에서 공유되는 경우 네트워크 공유 경로를 제공하면 다른 장치의 클라이언트가 미디어 파일에 직접 액세스 할 수 있습니다. 예 : {0} 또는 {1}.", "LabelMoviePrefixHelp": "영화 제목에 접두사가 적용되었다면 서버가 제대로 처리할 수 있도록 여기에 입력하십시오.", "LabelMoviePrefix": "영화 접두사:", "LabelMinResumePercentageHelp": "이 비율을 넘기 전에 정지되면 재생되지 않은 것으로 간주됩니다.", @@ -1149,11 +1149,11 @@ "LabelKodiMetadataEnableExtraThumbs": "추가 팬아틀 추가 섬네일 필드로 복사하기", "LabelKeepUpTo": "대기 한계:", "LabelHomeScreenSectionValue": "홈 화면 영역 {0}:", - "LabelBaseUrlHelp": "서버에 더 세부적인 URL로 접속하려면 여기에 서브 디렉토리를 추가하십시오.", + "LabelBaseUrlHelp": "서버 URL에 사용자 지정 하위 디렉터리를 추가합니다. http://example.com/<baseurl>", "LabelEnableSingleImageInDidlLimitHelp": "Dili 내에 여러 이미지가 삽입되면 일부 디바이스가 제대로 작동하지 않을 수 있습니다.", "LabelEnableSingleImageInDidlLimit": "하나의 내장 이미지로 제한", "LabelEnableBlastAliveMessagesHelp": "네트워크 상의 다른 UPnP 장치가 안정적으로 발견되지 않는다면 이 옵션을 활성화하십시오.", - "LabelEnableAutomaticPortMapHelp": "UPnp를 통해 로컬 포트를 외부 포트에 자동으로 매핑하도록 시도합니다. 일부 공유기 기종에서는 지원하지 않을 수 있습니다. 변경사항을 적용하려면 서버를 다시 시작하십시오.", + "LabelEnableAutomaticPortMapHelp": "UPnP를 통해 라우터의 공용 포트를 서버의 로컬 포트로 자동 전달합니다. 일부 라우터 모델 또는 네트워크 구성에서는 작동하지 않을 수 있습니다. 변경 사항은 서버를 다시 시작할 때까지 적용되지 않습니다.", "LabelEmbedAlbumArtDidlHelp": "일부 디바이스는 앨범아트를 얻을 때 이 방법을 선호합니다. 다른 디바이스에서는 실패할 수 있습니다.", "LabelDefaultScreen": "기본 화면:", "LabelDateTimeLocale": "날짜/시간 로케일:", @@ -1162,8 +1162,8 @@ "MessageReenableUser": "재활성화는 아래를 참조하십시오", "MessagePluginConfigurationRequiresLocalAccess": "이 플러그인을 구성하려면 로컬 서버에 직접 로그인하십시오.", "MessageNoCollectionsAvailable": "컬렉션을 사용하면 영화, 시리즈 및 앨범의 개인화 된 그룹을 즐길 수 있습니다. + 버튼을 클릭하여 컬렉션 만들기를 시작합니다.", - "LabelPlayerDimensions": "플레이어 화면 크기:", - "LabelParentNumber": "부모 번호:", + "LabelPlayerDimensions": "플레이어 넓이:", + "LabelParentNumber": "Parent number:", "LabelLineup": "라인업:", "LabelDroppedFrames": "드롭 프레임:", "LabelDeinterlaceMethod": "디인터레이싱 방법:", @@ -1172,7 +1172,7 @@ "EnableColorCodedBackgrounds": "컬러코드가 삽입된 배경", "DropShadow": "하단 그림자", "Depressed": "압축된", - "DeinterlaceMethodHelp": "비월주사식 콘텐츠를 순차주사로 변환할시 사용할 비월제거 방법을 선택하십시오.", + "DeinterlaceMethodHelp": "소프트웨어가 인터레이스 콘텐츠를 트랜스 코딩 할 때 사용할 디인터레이싱 방법을 선택합니다. 하드웨어 디인터레이싱을 지원하는 하드웨어 가속이 활성화되면이 설정 대신 하드웨어 디인터레이스가 사용됩니다.", "ClientSettings": "클라이언트 설정", "BoxSet": "박스 세트", "Artist": "아티스트", @@ -1185,21 +1185,21 @@ "MoveRight": "오른쪽으로 이동", "MoveLeft": "왼쪽으로 이동", "MoreFromValue": "{0} 에서 더 자세히", - "MetadataSettingChangeHelp": "변경된 메타데이터 설정은 새 콘텐츠에 적용됩니다. 기존의 콘텐츠에 적용하려면 상세 화면에서 새로 고침 버튼을 누르거나 메타데이터 매니저를 통해 일괄적으로 새로 고침을 수행하십시오.", - "MessagePluginInstallDisclaimer": "Jellyfin 커뮤니티에서 만들어진 플러그인은 Jellyfin의 기능과 편의성을 향상시킬 수 있습니다. 다만 이러한 플러그인은 라이브러리 스캔 속도 저하, 추가 백그라운드 프로세싱, 시스템 불안정과 같은 문제를 야기할 수 있다는 것을 유념하시기 바랍니다.", + "MetadataSettingChangeHelp": "메타 데이터 설정을 변경하면 앞으로 추가되는 새 콘텐츠에 영향을줍니다. 기존 콘텐츠를 새로 고치려면 세부 정보 화면을 열고 새로 고침 버튼을 클릭하거나 메타 데이터 매니저를 사용하여 대량 새로 고침을 수행합니다.", + "MessagePluginInstallDisclaimer": "커뮤니티 회원이 만든 플러그인은 추가 기능과 혜택을 통해 경험을 향상시킬 수있는 좋은 방법입니다. 설치하기 전에 더 긴 라이브러리 스캔, 추가 백그라운드 처리 및 시스템 안정성 감소와 같이 서버에 미칠 수있는 영향에 유의하십시오.", "LabelLibraryPageSizeHelp": "라이브러리 페이지에 표시될 항목 수를 조절합니다. 0으로 지정 시 페이징을 비활성화합니다.", "LabelLibraryPageSize": "라이브러리 페이지 크기:", "LabelEnableBlastAliveMessages": "서버 활성화 메세지", "OptionEnableExternalContentInSuggestionsHelp": "제안 항목에 인터넷 예고편과 라이브 TV 프로그램이 포함되도록 허용합니다.", "OptionEnableExternalContentInSuggestions": "제안 항목에 외부 콘텐츠 허용", - "OptionDownloadImagesInAdvanceHelp": "기본적으로 대부분의 이미지는 Jellyfin 앱에서 요청할 때에만 다운로드됩니다. 새 미디어를 추가할 때 모든 이미지를 미리 다운로드하려면 이 옵션을 활성화하십시오. 라이브러리 스캔이 심각하게 지연될 수도 있습니다.", + "OptionDownloadImagesInAdvanceHelp": "기본적으로 대부분의 이미지는 클라이언트가 요청할 때만 다운로드됩니다. 새 미디어를 가져올 때 모든 이미지를 미리 다운로드하려면이 옵션을 활성화합니다. 이로 인해 라이브러리 스캔이 상당히 길어질 수 있습니다.", "OptionDownloadImagesInAdvance": "미리 이미지 다운로드", "OptionDisplayFolderView": "일반적인 미디어 폴더를 볼 수 있는 폴더 보기를 표시합니다", - "OptionAutomaticallyGroupSeriesHelp": "활성화하면 라이브러리 내의 여러 폴더에 분산된 시리즈를 하나의 시리즈로 병합합니다.", + "OptionAutomaticallyGroupSeriesHelp": "이 라이브러리 내의 여러 폴더에 분산 된 시리즈는 자동으로 단일 시리즈로 병합됩니다.", "OptionAutomaticallyGroupSeries": "여러 폴더에 분산된 시리즈를 자동으로 병합합니다", "OptionAllowVideoPlaybackRemuxing": "변환이 필요한 비디오를 재인코딩하지 않고 재생하는 것을 허용", "OptionAllowSyncTranscoding": "트랜스코딩이 필요한 미디어의 다운로드 및 싱크 허용", - "OptionAllowMediaPlaybackTranscodingHelp": "트랜스코딩 접근을 제한하면 Jellyfin 앱에서 지원되지 않는 미디어 형식을 재생할 때 문제가 발생할 수 있습니다.", + "OptionAllowMediaPlaybackTranscodingHelp": "트랜스 코딩에 대한 액세스를 제한하면 지원되지 않는 미디어 형식으로 인해 클라이언트에서 재생 실패가 발생할 수 있습니다.", "OptionForceRemoteSourceTranscoding": "원격 미디어 소스를 강제 트랜스코딩 (라이브 TV 등)", "OnlyForcedSubtitlesHelp": "'강제'로 표시된 자막만 불러옵니다.", "OnlyForcedSubtitles": "강제로 설정한 자막만", @@ -1213,5 +1213,111 @@ "ButtonSyncPlay": "SyncPlay", "HeaderDVR": "DVR", "EnableDecodingColorDepth10Vp9": "10비트 VP9하드웨어 디코딩 사용합니다", - "EnableDecodingColorDepth10Hevc": "10비트 HEVC하드웨어 디코딩 사용합니다" + "EnableDecodingColorDepth10Hevc": "10비트 HEVC하드웨어 디코딩 사용합니다", + "QuickConnectNotAvailable": "퀵커넥트를 활성화하려면 서버 관리자에게 문의하십시오", + "QuickConnectInvalidCode": "잘못된 퀵커넥트 코드", + "QuickConnectDescription": "퀵커넥트로 로그인하려면 로그인중인 장치에서 퀵커넥트 버튼을 선택하고 아래 표시된 코드를 입력하십시오.", + "QuickConnectDeactivated": "로그인 요청이 승인되기 전에 Quick connect가 비활성화되었습니다", + "QuickConnectAuthorizeFail": "알수없는 퀵커넥트 코드", + "QuickConnectAuthorizeSuccess": "승인 요청", + "QuickConnectAuthorizeCode": "Enter code {0} to login", + "QuickConnectActivationSuccessful": "성공적으로 활성화되었습니다", + "QuickConnect": "퀵커넥트", + "Profile": "프로파일", + "ProductionLocations": "Production 위치", + "Primary": "기본", + "PreviousTrack": "이전으로 건너 뛰기", + "PreferEmbeddedEpisodeInfosOverFileNames": "파일 이름보다 삽입 된 에피소드 정보 선호", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "가능한 경우 삽입 된 메타 데이터의 에피소드 정보를 사용합니다.", + "PreferEmbeddedTitlesOverFileNamesHelp": "인터넷 메타 데이터 또는 로컬 메타 데이터를 사용할 수없는 경우 기본 표시 제목을 결정합니다.", + "MessageGetInstalledPluginsError": "현재 설치된 플러그인 목록을 가져 오는 중에 오류가 발생했습니다.", + "MessagePluginInstallError": "플러그인을 설치하는 동안 오류가 발생했습니다.", + "PosterCard": "포스터 카드", + "Poster": "포스터", + "PleaseConfirmPluginInstallation": "위 내용을 읽었으며 플러그인 설치를 계속하려면 확인을 클릭하십시오.", + "PlaybackErrorNoCompatibleStream": "이 클라이언트는 미디어와 호환되지 않으며 서버는 호환되는 미디어 형식을 전송하지 않습니다.", + "PlaybackRate": "재생율", + "PlaceFavoriteChannelsAtBeginning": "처음에 즐겨찾는 채널 배치", + "Photo": "사진", + "Person": "사람", + "People": "인물", + "OptionSaveMetadataAsHiddenHelp": "이를 변경하면 앞으로 저장되는 새 메타 데이터에 적용됩니다. 기존 메타 데이터 파일은 다음에 서버에서 저장 될 때 업데이트됩니다.", + "OptionRequirePerfectSubtitleMatchHelp": "완벽한 일치를 요구하면 정확한 비디오 파일로 테스트 및 확인 된 자막 만 포함하도록 자막이 필터링됩니다. 선택을 취소하면 자막이 다운로드 될 가능성이 높아지지만 시간이 잘못되었거나 잘못된 자막 텍스트가 발생할 가능성이 높아집니다.", + "OptionRequirePerfectSubtitleMatch": "비디오 파일과 완벽하게 일치하는 자막만 다운로드", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "This is required for some devices that don't time seek very well.", + "OptionReportByteRangeSeekingWhenTranscoding": "트랜스 코딩시 서버가 byte seeking을 지원한다고 보고", + "OptionRegex": "Regex", + "OptionRandom": "랜덤", + "OptionLoginAttemptsBeforeLockoutHelp": "0 값은 기본값을 상속 함을 의미합니다. 일반 사용자는 세 번, 관리자는 다섯 번 시도합니다. -1로 설정하면 기능이 비활성화됩니다.", + "OptionLoginAttemptsBeforeLockout": "잠금이 발생하기 전에 발생할 수있는 잘못된 로그인 시도 횟수를 결정합니다.", + "OptionEstimateContentLength": "트랜스 코딩시 콘텐츠 길이 추정", + "OptionEquals": "옵션이 똑같음", + "OptionEnableM2tsModeHelp": "mpegts로 인코딩 할 때 m2ts 모드를 활성화합니다.", + "NextTrack": "다음으로 넘기기", + "MusicVideos": "뮤직 비디오", + "MessageSyncPlayErrorMedia": "SyncPlay를 활성화하지 못했습니다! 미디어 오류입니다.", + "MessageSyncPlayErrorMissingSession": "SyncPlay를 활성화하지 못했습니다! 세션이 없습니다.", + "MessageSyncPlayErrorNoActivePlayer": "활성화된 플레이어가 없습니다. SyncPlay가 비활성화되었습니다.", + "MessageSyncPlayErrorAccessingGroups": "그룹 목록에 액세스하는 중에 오류가 발생했습니다.", + "MessageSyncPlayLibraryAccessDenied": "이 콘텐츠에 대한 액세스가 제한됩니다.", + "MessageSyncPlayJoinGroupDenied": "그룹을 생성 할 권한이 필요합니다.", + "MessageSyncPlayCreateGroupDenied": "그룹을 생성하려면 권한이 필요합니다.", + "MessageSyncPlayGroupDoesNotExist": "그룹이 존재하지 않기 때문에 추가하지 못했습니다.", + "MessageSyncPlayPlaybackPermissionRequired": "재생 권한이 필요합니다.", + "MessageSyncPlayNoGroupsAvailable": "사용 가능한 그룹이 없습니다. 먼저 플레이 하십시오.", + "MessageSyncPlayGroupWait": "{0}이 버퍼링 중…", + "MessageSyncPlayUserLeft": "{0} 을(를) 그룹에서 탈퇴.", + "MessageSyncPlayUserJoined": "{0} 을(를) 그룹에 추가.", + "MessageSyncPlayDisabled": "SyncPlay가 비활성화되었습니다.", + "MessageSyncPlayEnabled": "SyncPlay가 활성화되었습니다.", + "MessageNoGenresAvailable": "일부 메타 데이터 제공 업체가 인터넷에서 장르를 가져올 수 있도록합니다.", + "MessageAddRepository": "저장소를 추가하려면 헤더 옆에있는 버튼을 클릭하고 요청 된 정보를 입력합니다.", + "LabelRepositoryNameHelp": "다른 저장소와 구별하기위한 사용자 정의 이름입니다.", + "LabelRepositoryName": "저장소 이름", + "LabelRepositoryUrlHelp": "The location of the repository manifest you want to include.", + "LabelRepositoryUrl": "저장소 URL", + "HeaderNewRepository": "새 저장소", + "MessageNoRepositories": "저장소가 없습니다.", + "LabelSyncPlayAccess": "SyncPlay 접속", + "LabelSyncPlayAccessNone": "이 사용자는 비활성화", + "LabelSyncPlayAccessJoinGroups": "사용자가 그룹에 추가하는걸 허용", + "LabelSyncPlayAccessCreateAndJoinGroups": "사용자가 그룹을 만들고 추가 하는걸 허용", + "LabelSyncPlayLeaveGroupDescription": "SyncPlay 비활성화", + "LabelSyncPlayLeaveGroup": "그룹 탈퇴", + "LabelSyncPlayNewGroupDescription": "새 그룹 만들기", + "LabelSyncPlayNewGroup": "새 그룹", + "LabelSyncPlaySyncMethod": "동기화 방법 :", + "LabelSyncPlayPlaybackDiff": "재생 시차 :", + "MillisecondsUnit": "밀리초", + "LabelSyncPlayTimeOffset": "서버와의 시간 오프셋 :", + "EnableFasterAnimationsHelp": "더 빠른 애니메이션 및 전환 사용", + "EnableFasterAnimations": "더 빠른 애니메이션", + "LabelRequireHttpsHelp": "선택하면 서버가 HTTP를 통한 모든 요청을 HTTPS로 자동 리디렉션합니다. 서버가 HTTPS에서 수신하지 않는 경우에는 효과가 없습니다.", + "LabelRequireHttps": "HTTPS가 필요합니다", + "LabelQuickConnectCode": "퀵커넥트 코드:", + "LabelUnstable": "불안정", + "LabelStable": "안정", + "LabelChromecastVersion": "크롬캐스트 버전", + "LabelKnownProxies": "알려진 프록시 :", + "LabelIconMaxResHelp": "upnp : icon 속성을 통해 노출되는 아이콘의 최대 해상도.", + "LabelEnableHttpsHelp": "구성된 HTTPS 포트에서 수신합니다. 이를 적용하려면 유효한 인증서도 제공해야합니다.", + "LabelEnableHttps": "HTTPS 활성화", + "LabelCurrentStatus": "현재 상태:", + "LabelAlbumArtMaxResHelp": "upnp : albumArtURI 속성을 통해 노출 된 앨범 아트의 최대 해상도입니다.", + "KnownProxiesHelp": "Jellyfin 인스턴스에 연결할 때 사용되는 알려진 프록시의 쉼표로 구분 된 IP 주소 목록입니다. 이것은 X-Forwarded-For 헤더를 올바르게 사용하는 데 필요합니다. 저장 후 재부팅해야합니다.", + "Image": "이미지", + "HeaderSyncPlayEnabled": "SyncPlay 활성화", + "HeaderSyncPlaySelectGroup": "그룹에 추가", + "HeaderServerAddressSettings": "서버 주소 설정", + "HeaderRemoteAccessSettings": "원격 접속 설정", + "HeaderHttpsSettings": "HTTPS 설정", + "ApiKeysCaption": "활성화 된 API 키 목록", + "Other": "기타", + "EnableDetailsBannerHelp": "항목 디테일 페이지 상단에 배너 이미지를 표시합니다.", + "EnableDetailsBanner": "디테일 배너", + "EnableQuickConnect": "이 서버에 퀵커넥트 사용", + "Data": "데이터", + "ButtonUseQuickConnect": "퀵커넥트 사용", + "ButtonActivate": "활성화", + "Authorize": "승인" } From 83fde741bcabadd4b742cbbb3d413b9816af3980 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Mon, 21 Sep 2020 08:26:28 +0000 Subject: [PATCH 330/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 84 ++++++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 40 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 2f49b852d8..bd90bf5e65 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -2,7 +2,7 @@ "Add": "Thêm", "All": "Tất cả", "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", + "ButtonAddUser": "Thêm Người Dùng", "ButtonCancel": "Thoát", "ButtonRemove": "Gỡ bỏ", "ButtonSelectDirectory": "Lựa chọn trực tiếp", @@ -10,7 +10,7 @@ "Delete": "Xóa", "DeleteImage": "Xóa hình ảnh", "DeleteImageConfirmation": "Bạn có chắc muốn xóa hình ảnh này?", - "DeleteUser": "Xóa người dùng", + "DeleteUser": "Xóa Người Dùng", "FileNotFound": "Không tìm thấy tệp tin.", "FileReadCancelled": "Tệp tin đọc đã bị hủy.", "FileReadError": "Có một lỗi xảy ra khi đọc tệp tin này.", @@ -22,7 +22,7 @@ "HeaderRecentlyPlayed": "Phát gần đây", "HeaderStatus": "Trạng thái", "HeaderSystemDlnaProfiles": "Hồ sơ hệ thống", - "HeaderUsers": "dùng", + "HeaderUsers": "Người Dùng", "LabelAudioLanguagePreference": "Ngôn ngữ thoại ưa thích:", "LabelCountry": "Quốc gia:", "LabelCurrentPassword": "Mật khẩu hiện tại:", @@ -34,8 +34,8 @@ "LabelName": "Tên:", "LabelNewPassword": "Mật khẩu mới:", "LabelNewPasswordConfirm": "Xác nhận mật khẩu mới:", - "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.", + "LabelSaveLocalMetadata": "Lưu các ảnh bìa phim và dữ liệu mô tả vào trong các thư mục phương tiện", + "LabelSaveLocalMetadataHelp": "Lưu ảnh bìa phim vào trong các thư mục phương tiện, sẽ đưa chúng vào một nơi có thể chỉnh sửa dễ dàng hơn.", "LabelTime": "Thời gian:", "LabelYoureDone": "Bạn đã hoàn thành!", "MaxParentalRatingHelp": "Nội dung với đánh giá cao hơn sẽ được ẩn đi từ người dùng này.", @@ -69,7 +69,7 @@ "TabCatalog": "Danh mục", "TabLatest": "Mới nhất", "TabMyPlugins": "Các plugin của tôi", - "TabNetworks": "Các mạng", + "TabNetworks": "Mạng", "TabProfiles": "Hồ sơ", "TabServer": "Máy chủ", "TabUpcoming": "Sắp diễn ra", @@ -246,7 +246,7 @@ "EditMetadata": "Chỉnh sửa thông tin", "EditImages": "Chỉnh sửa hình ảnh", "Edit": "Chỉnh sửa", - "EasyPasswordHelp": "Mã PIN tiện lợi được sử dụng cho việc truy cập offline trên những thiết bị được hỗ trợ và cũng có thể sử dụng dành cho truy cập dễ dàng trong nội mạng.", + "EasyPasswordHelp": "Mã PIN tiện lợi được sử dụng cho việc truy cập ngoại tuyến trên thiết bị có hỗ trợ và cũng được sử dụng để đăng nhập trong mạng dễ dàng.", "DropShadow": "Bóng đổ", "DrmChannelsNotImported": "Những kênh được bảo vệ bản quyền sẽ không được nhập vào.", "DownloadsValue": "{0} đã tải xuống", @@ -313,7 +313,7 @@ "FetchingData": "Đang tải thêm thông tin", "Features": "Mục đặc trưng", "Favorites": "Sở Thích", - "Favorite": "Mục yêu thích", + "Favorite": "Yêu thích", "FastForward": "Tua nhanh", "FFmpegSavePathNotFound": "Máy chủ không thể tìm thấy chương trình FFmpeg trong đường dẫn bạn đã nhập. FFprobe thì cũng cần thiết và phải nằm trong cùng thư mục bên trên. Những phần mềm này thường được tổng hợp cùng nhau trong một lượt tải. Hãy thử lại sau khi kiểm tra đường dẫn.", "Extras": "Đặc biệt", @@ -372,7 +372,7 @@ "HeaderMyDevice": "Thiết Bị Của Tôi", "HeaderMusicQuality": "Chất Lượng Âm Nhạc", "HeaderMoreLikeThis": "Nội Dung Tương Tự", - "HeaderMetadataSettings": "Cài Đặt Dữ Liệu Bổ Trợ", + "HeaderMetadataSettings": "Cài Đặt Dữ Liệu Mô Tả", "HeaderMediaFolders": "Thư Mục Chứa Nội Dung", "HeaderMedia": "Nội Dung", "HeaderLoginFailure": "Đăng Nhập Không Thành Công", @@ -473,7 +473,7 @@ "LabelCertificatePasswordHelp": "Nếu chứng chỉ của bạn cần mật khẩu, hãy nhập nó ở đây.", "LabelCertificatePassword": "Mật khẩu chứng chỉ:", "LabelCancelled": "Đã Huỷ", - "LabelCachePathHelp": "Chọn một đường dẫn cho những tập tin lưu tạm như là hình ảnh. Bỏ trống để sử dụng cài đặt mặc định của máy chủ.", + "LabelCachePathHelp": "Chọn vị trí cho những tệp bộ nhớ đệm chẳng hạn như hình ảnh. Bỏ trống để sử dụng cài đặt mặc định.", "LabelCachePath": "Đường dẫn cache:", "LabelCache": "Cache:", "LabelBurnSubtitles": "Nhúng phụ đề:", @@ -483,9 +483,9 @@ "LabelBitrate": "Bitrate:", "LabelBirthYear": "Năm sinh:", "LabelBirthDate": "Ngày sinh:", - "LabelBindToLocalNetworkAddressHelp": "Không bắt buộc. Cài đặt đè địa chỉ IP nội bộ để kết nối đến máy chủ HTTP. Nếu bỏ trống, máy chủ sẽ cài đặt vào toàn bộ những địa chỉ nội bộ có sẵn. Nếu thay đổi tuỳ chọn này, cần phải khởi động lại máy chủ Jellyfin để có tác dụng.", - "LabelBindToLocalNetworkAddress": "Cài đặt vào địa chỉ nội bộ:", - "LabelAutomaticallyRefreshInternetMetadataEvery": "Tự động cập nhật dữ liệu bổ trợ từ Internet:", + "LabelBindToLocalNetworkAddressHelp": "Không bắt buộc. Ghi đè địa chỉ IP cục bộ để kết hợp với máy chủ HTTP. Nếu bỏ trống, máy chủ sẽ cài đặt vào toàn bộ những địa chỉ nội bộ có sẵn. Nếu thay đổi tuỳ chọn này, yêu cầu khởi động lại máy chủ Jellyfin để có tác dụng.", + "LabelBindToLocalNetworkAddress": "Liên kết với địa chỉ mạng cục bộ:", + "LabelAutomaticallyRefreshInternetMetadataEvery": "Tự động cập nhật dữ liệu mô tả từ Internet:", "LabelAuthProvider": "Nhà Cung Cấp Xác Thực:", "LabelAudioSampleRate": "Sample rate âm thanh:", "LabelAudioCodec": "Bộ giải mã âm thanh:", @@ -542,7 +542,7 @@ "HeaderUploadImage": "Tải Lên Hình Ảnh", "HeaderUpcomingOnTV": "Sắp Phát Sóng Trên TV", "HeaderTypeText": "Nhập nội dung", - "HeaderTypeImageFetchers": "{0} Trình Tải Hình Ảnh", + "HeaderTypeImageFetchers": "Trình tải hình ảnh tự động cho {0}", "HeaderTuners": "Bộ Điều Khiển Thu Phát Sóng", "HeaderTunerDevices": "Thiết Bị Bắt Sóng", "HeaderTranscodingProfileHelp": "Thêm hồ sơ chuyển mã để chỉ ra những định dạng nên dùng khi cần chuyển mã.", @@ -596,9 +596,9 @@ "LabelEnableDlnaDebugLogging": "Bật tính năng gỡ lỗi DLNA", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Xác định thời gian tính bằng giây giữa các lần tìm kiếm SSDP thực hiện bởi Jellyfin.", "LabelEnableDlnaClientDiscoveryInterval": "Thời gian tìm kiếm thiết bị phát (giây)", - "LabelEnableBlastAliveMessagesHelp": "Bật tính năng này nếu máy chủ không thể kết nối chắc chắn với những thiết bị UPnP trong mạng của bạn.", + "LabelEnableBlastAliveMessagesHelp": "Bật cái này nếu máy chủ không được các thiết bị UPnP khác trên mạng của bạn tìm ra một cách đáng tin cậy.", "LabelEnableBlastAliveMessages": "Phát tin nhắn trực tiếp", - "LabelEnableAutomaticPortMapHelp": "Tự động chuyển tiếp những port công khai trên bộ định tuyến đến port trên máy chủ thông qua UPnP. Cài đặt này có thể không hoạt động trên một số loại bộ định tuyến hoặc thiết lập mạng. Thay đổi sẽ được áp dụng sau khi khởi động lại máy chủ.", + "LabelEnableAutomaticPortMapHelp": "Tự động chuyển tiếp các cổng công cộng trên bộ định tuyến của bạn tới các cổng cục bộ trên máy chủ của bạn qua UPnP. Điều này có thể không hoạt động với một số bộ định tuyến hoặc cấu hình mạng. Thay đổi sẽ được áp dụng sau khi khởi động lại máy chủ.", "HeaderServerAddressSettings": "Cài Đặt Địa Chỉ Máy Chủ", "HeaderRemoteAccessSettings": "Cài Đặt Truy Cập Từ Xa", "HeaderHttpsSettings": "Cài Đặt HTTPS", @@ -614,7 +614,7 @@ "LabelLineup": "Danh sách diễn viên:", "LabelLibraryPageSizeHelp": "Cài đặt số lượng mục hiển thị trong một trang thư viện. Cài đặt 0 để vô hiệu hoá việc phân trang.", "LabelLibraryPageSize": "Kích thước trang của thư viện:", - "LabelLanNetworks": "Mạng nội bộ:", + "LabelLanNetworks": "Mạng Cục Bộ:", "LabelKodiMetadataUserHelp": "Lưu dữ liệu xem vào tập tin NFO dành cho những ứng dụng khác sử dụng.", "LabelKodiMetadataUser": "Lưu thông tin người xem vào tập tin NFO dành cho:", "LabelKodiMetadataSaveImagePathsHelp": "Cài đặt này được khuyến cáo nếu bạn có những hình ảnh đặt tên không đúng với hướng dẫn của Kodi.", @@ -628,11 +628,11 @@ "LabelKidsCategories": "Những thể loại của trẻ em:", "LabelKeepUpTo": "Theo kịp:", "LabelInternetQuality": "Chất lượng Internet:", - "LabelInNetworkSignInWithEasyPasswordHelp": "Sử dụng mã PIN đơn giản để đăng nhập thiết bị phát trong mạng nội bộ. Mật khẩu thông thường sẽ chỉ cần khi không truy cập nội mạng. Nếu mã PIN để trống, bạn sex không cần mật khẩu trong mạng nội bộ.", - "LabelInNetworkSignInWithEasyPassword": "Kích hoạt đăng nhập nội mạng bằng mã PIN đơn giản", + "LabelInNetworkSignInWithEasyPasswordHelp": "Dùng mã PIN tiện lợi để đăng nhập thiết bị trong mạng cục bộ. Mật khẩu thông thường của bạn sẽ chỉ cần thiết khi ở nhà. Nếu để trống mã PIN, bạn sẽ không cần mật khẩu trong mạng nhà của mình.", + "LabelInNetworkSignInWithEasyPassword": "Bật đăng nhập trong mạng bằng mã PIN tiện lợi", "LabelImportOnlyFavoriteChannels": "Giới hạn để chỉ nhập vào những kênh yêu thích", "LabelImageType": "Loại hình ảnh:", - "LabelImageFetchersHelp": "Kích hoạt và xếp hạng chương trình tải hình ảnh theo thứ tự ưu tiên.", + "LabelImageFetchersHelp": "Kích hoạt và xếp hạng trình tải hình ảnh tự động theo thứ tự ưu tiên.", "LabelIdentificationFieldHelp": "Một chuỗi không phân biệt viết hoa/thường hoặc biểu thức chính quy.", "LabelIconMaxWidth": "Chiều ngang tối đa của biểu tượng:", "LabelIconMaxHeight": "Chiều cao tối đa của biểu tượng:", @@ -682,14 +682,14 @@ "LabelMinBackdropDownloadWidth": "Chiều rộng tối thiểu của phông nền tải xuống:", "LabelMethod": "Phương pháp:", "LabelMetadataSaversHelp": "Chọn định dạng tập tin để sử dụng khi lưu mô tả chi tiết của bạn.", - "LabelMetadataSavers": "Định dạng dữ liệu bổ trợ:", - "LabelMetadataReadersHelp": "Sắp xếp thứ tự ưu tiên của những nguồn dữ liệu bổ trợ. Tập tin đầu tiên được tìm thấy sẽ được sử dụng.", - "LabelMetadataReaders": "Bộ đọc dữ liệu bổ trợ:", - "LabelMetadataPathHelp": "Thiết lập một đường dẫn tuỳ ý cho những hình ảnh và dữ liệu bổ trợ.", - "LabelMetadataPath": "Đường dẫn dữ liệu bổ trợ:", - "LabelMetadataDownloadersHelp": "Kích hoạt và sắp xếp thứ tự ưu tiên của các trình tải dữ liệu bổ trợ. Trình tải có thứ tự ưu tiên thấp sẽ chỉ sử dụng để tải những thông tin bị thiếu.", + "LabelMetadataSavers": "Lưu Dữ liệu Mô Tả Dưới Dạng:", + "LabelMetadataReadersHelp": "Sắp xếp thứ tự ưu tiên những dữ liệu mô tả cục bộ. Tập tin đầu tiên được tìm thấy sẽ được đọc.", + "LabelMetadataReaders": "Trình đọc dữ liệu mô tả:", + "LabelMetadataPathHelp": "Chọn một đường dẫn để tải xuống hình ảnh và dữ liệu mô tả.", + "LabelMetadataPath": "Đường dẫn dữ liệu mô tả:", + "LabelMetadataDownloadersHelp": "Kích hoạt và sắp xếp thứ tự ưu tiên của các trình tải dữ liệu mô tả. Trình tải có thứ tự ưu tiên thấp sẽ chỉ sử dụng để tải những thông tin bị thiếu.", "LabelMetadataDownloadLanguage": "Ngôn ngữ tải ưu tiên:", - "LabelMetadata": "Dữ liệu bổ trợ:", + "LabelMetadata": "Dữ Liệu Mô Tả:", "LabelMessageTitle": "Tiêu đề tin nhắn:", "LabelMessageText": "Nội dung tin nhắn:", "LabelMaxStreamingBitrateHelp": "Thiết lập bitrate tối đa khi truyền tải.", @@ -818,7 +818,7 @@ "LabelRuntimeMinutes": "Thời gian chạy:", "LabelRequireHttpsHelp": "Nếu được chọn, máy chủ sẽ tự động chuyển hướng tất cả các yêu cầu qua HTTP sang HTTPS. Điều này không ảnh hưởng nếu máy chủ không nghe trên HTTPS.", "LabelRequireHttps": "Yêu cầu HTTPS", - "LabelRemoteClientBitrateLimitHelp": "Giới hạn tốc độ bit tùy chọn trên mỗi luồng cho tất cả các thiết bị ngoài mạng. Điều này hữu ích để ngăn các thiết bị yêu cầu tốc độ bit cao hơn mức kết nối internet của bạn có thể xử lý. Điều này có thể dẫn đến việc tăng tải CPU trên máy chủ của bạn để chuyển mã video nhanh chóng xuống tốc độ bit thấp hơn.", + "LabelRemoteClientBitrateLimitHelp": "Giới hạn tốc độ bit trên mỗi luồng cho tất cả các thiết bị ngoài mạng. Nó hữu ích để ngăn các thiết bị yêu cầu tốc độ bit cao hơn mức kết nối internet của bạn có thể xử lý. Điều này có thể dẫn đến việc tăng tải CPU trên máy chủ của bạn để chuyển mã video nhanh chóng xuống tốc độ bit thấp hơn.", "LabelRemoteClientBitrateLimit": "Giới hạn tốc độ bit phát trực tuyến Internet (Mbps):", "LabelReleaseDate": "Ngày phát hành:", "LabelRefreshMode": "Chế độ làm mới :", @@ -826,7 +826,7 @@ "LabelRecordingPath": "Đường dẫn ghi mặc định:", "LabelRecord": "Ghi lại:", "LabelReasonForTranscoding": "Lý do chuyển mã:", - "LabelQuickConnectCode": "Mã kết nối nhanh:", + "LabelQuickConnectCode": "Mã số kết nối nhanh:", "LabelPublicHttpsPortHelp": "Số cổng công cộng sẽ được ánh xạ tới cổng HTTPS cục bộ.", "LabelPublicHttpsPort": "Số cổng HTTPS công khai:", "LabelPublicHttpPortHelp": "Số cổng công khai sẽ được ánh xạ tới cổng HTTP cục bộ.", @@ -862,7 +862,7 @@ "LabelOverview": "Tổng quát:", "LabelOriginalTitle": "Tiêu đề ban đầu:", "LabelOriginalAspectRatio": "Tỷ lệ khung hình gốc:", - "LabelOptionalNetworkPathHelp": "Nếu thư mục này được chia sẻ trên mạng của bạn, việc cung cấp đường dẫn chia sẻ mạng có thể cho phép máy khách trên các thiết bị khác truy cập trực tiếp vào các tệp phương tiện. Ví dụ: {0} hoặc {1}.", + "LabelOptionalNetworkPathHelp": "Nếu thư mục này được chia sẻ trong mạng nhà của bạn, việc cung cấp đường dẫn chia sẻ mạng có thể cho phép ứng dụng khách trên các thiết bị khác truy cập trực tiếp vào các tệp phương tiện. Ví dụ: {0} hoặc {1}.", "LabelOptionalNetworkPath": "Thư mục mạng được chia sẻ:", "LabelNumberOfGuideDaysHelp": "Việc tải xuống nhiều ngày hơn dữ liệu hướng dẫn cung cấp khả năng lên lịch trình trước và xem nhiều danh sách hơn, nhưng cũng sẽ mất nhiều thời gian hơn để tải xuống. Tự động sẽ chọn dựa trên số lượng kênh.", "LabelNumberOfGuideDays": "Số ngày tải xuống dữ liệu hướng dẫn:", @@ -880,7 +880,7 @@ "EnableDecodingColorDepth10Vp9": "Bật giải mã phần cứng 10 bit cho VP9", "EnableDecodingColorDepth10Hevc": "Bật giải mã phần cứng 10-bit cho HEVC", "Data": "Dữ liệu", - "ButtonUseQuickConnect": "Sử dụng Kết nối nhanh", + "ButtonUseQuickConnect": "Dùng Kết Nhanh", "ButtonActivate": "Kích hoạt", "Authorize": "Ủy quyền", "MessagePlayAccessRestricted": "Việc phát lại nội dung này hiện bị hạn chế. Vui lòng liên hệ với quản trị viên máy chủ của bạn để biết thêm thông tin.", @@ -1113,7 +1113,7 @@ "MoveRight": "Di chuyển sang phải", "MoveLeft": "Di chuyển sang trái", "MoreMediaInfo": "Thông Tin Phương Tiện", - "MoreUsersCanBeAddedLater": "Có thể thêm nhiều người dùng hơn sau đó từ trong bảng điều khiển.", + "MoreUsersCanBeAddedLater": "Có thể thêm nhiều người dùng hơn sau đó từ trong trang tổng quan.", "MoreFromValue": "Thêm từ {0}", "Mobile": "Di động", "MinutesBefore": "phút trước", @@ -1150,7 +1150,7 @@ "PictureInPicture": "Ảnh trong ảnh", "Photo": "Hình Ảnh", "Person": "Người", - "PerfectMatch": "Kết hợp hoàn hảo", + "PerfectMatch": "Trùng khớp hoàn hảo", "People": "Mọi người", "PasswordResetProviderHelp": "Chọn nhà cung cấp đặt lại mật khẩu sẽ được sử dụng khi người dùng này yêu cầu đặt lại mật khẩu.", "PackageInstallFailed": "Cài đặt {0} (phiên bản {1}) không thành công.", @@ -1193,7 +1193,7 @@ "SearchResults": "Kết Quả Tìm Kiếm", "SearchForSubtitles": "Tìm kiếm phụ đề", "SearchForMissingMetadata": "Tìm kiếm dữ liệu mô tả bị thiếu", - "SearchForCollectionInternetMetadata": "Tìm kiếm tác phẩm nghệ thuật và dữ liệu mô tả trên Internet", + "SearchForCollectionInternetMetadata": "Tìm kiếm ảnh bìa phim và dữ liệu mô tả trên Internet", "Search": "Tìm kiếm", "Screenshots": "Ảnh chụp màn hình", "Screenshot": "Ảnh chụp màn hình", @@ -1218,13 +1218,13 @@ "QuickConnectNotActive": "Kết nối nhanh không hoạt động trên máy chủ này", "QuickConnectNotAvailable": "Yêu cầu quản trị viên máy chủ của bạn bật kết nối nhanh", "QuickConnectInvalidCode": "Mã kết nối nhanh không hợp lệ", - "QuickConnectDescription": "Để đăng nhập bằng kết nối nhanh, hãy chọn nút Kết nối nhanh trên thiết bị bạn đang đăng nhập và nhập mã hiển thị bên dưới.", - "QuickConnectDeactivated": "Kết nối nhanh đã bị vô hiệu hóa trước khi yêu cầu đăng nhập có thể được chấp thuận", + "QuickConnectDescription": "Để đăng nhập bằng kết nối nhanh, hãy chọn nút Kết Nối Nhanh trên thiết bị bạn đang đăng nhập và nhập mã hiển thị bên dưới.", + "QuickConnectDeactivated": "Kết nối nhanh đã bị vô hiệu hóa trước khi yêu cầu đăng nhập được chấp nhận", "QuickConnectAuthorizeFail": "Mã kết nối nhanh không xác định", - "QuickConnectAuthorizeSuccess": "Yêu cầu được cho phép", + "QuickConnectAuthorizeSuccess": "Yêu cầu đã được cho phép", "QuickConnectAuthorizeCode": "Nhập mã {0} để đăng nhập", - "QuickConnectActivationSuccessful": "Đã kích hoạt thành công", - "QuickConnect": "Kết nối nhanh", + "QuickConnectActivationSuccessful": "Kích hoạt thành công", + "QuickConnect": "Kết Nối Nhanh", "Quality": "Chất lượng", "Programs": "Chương Trình", "Profile": "Hồ sơ", @@ -1259,5 +1259,9 @@ "PlaybackData": "Dữ liệu phát lại", "PlayAllFromHere": "Phát tất cả từ đây", "Play": "Phát", - "PlaceFavoriteChannelsAtBeginning": "Đặt các kênh yêu thích ở đầu" + "PlaceFavoriteChannelsAtBeginning": "Đặt các kênh yêu thích ở đầu", + "TabNetworking": "Kết Nối Mạng", + "WizardCompleted": "Đó là tất cả những gì chúng ta cần bây giờ. Jellyfin đã bắt đầu thu thập thông tin về thư viện phương tiện của bạn. Kiểm tra một số ứng dụng của chúng tôi, sau đó nhấp vào Hoàn thành để xem Trang tổng quan.", + "TabDashboard": "Trang tổng quan", + "LabelScheduledTaskLastRan": "Lần cuối chạy {0}, mất{1}." } From 0d9cb036222429e7bd21b39a30c6284aca8fbcd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=A5=EA=B1=B4?= Date: Mon, 21 Sep 2020 10:22:45 +0000 Subject: [PATCH 331/582] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index 8cfa17f56e..4c6d8c634c 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -1319,5 +1319,6 @@ "Data": "데이터", "ButtonUseQuickConnect": "퀵커넥트 사용", "ButtonActivate": "활성화", - "Authorize": "승인" + "Authorize": "승인", + "QuickConnectNotActive": "이 서버에서 퀵커넥트가 활성화되지 않았습니다" } From ff3f8cedfe4b0905b67c5bdcf999c2cb74c27ac4 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Mon, 21 Sep 2020 10:19:32 +0000 Subject: [PATCH 332/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index bd90bf5e65..4162eaff65 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -312,7 +312,7 @@ "File": "Tập tin", "FetchingData": "Đang tải thêm thông tin", "Features": "Mục đặc trưng", - "Favorites": "Sở Thích", + "Favorites": "Yêu Thích", "Favorite": "Yêu thích", "FastForward": "Tua nhanh", "FFmpegSavePathNotFound": "Máy chủ không thể tìm thấy chương trình FFmpeg trong đường dẫn bạn đã nhập. FFprobe thì cũng cần thiết và phải nằm trong cùng thư mục bên trên. Những phần mềm này thường được tổng hợp cùng nhau trong một lượt tải. Hãy thử lại sau khi kiểm tra đường dẫn.", @@ -521,7 +521,7 @@ "InstantMix": "Trộn Lẫn Nhanh", "InstallingPackage": "Đang cài đặt {0} (phiên bản {1})", "ImportMissingEpisodesHelp": "Thông tin về các tập bị thiếu sẽ được nhập vào cơ sở dữ liệu của bạn và hiển thị trong các phần và loạt phim. Điều này có thể làm quá trình quét thư viện lâu hơn đáng kể.", - "ImportFavoriteChannelsHelp": "Chỉ các kênh được đánh dấu là ưa thích trên thiết bị dò kênh mới được nhập.", + "ImportFavoriteChannelsHelp": "Chỉ các kênh được đánh dấu là yêu thích trên thiết bị dò kênh mới được nhập.", "Images": "Hình Ảnh", "Identify": "Nhận Dạng", "HttpsRequiresCert": "Để bật kết nối bảo mật, bạn cần phải cung cấp một Chứng Chỉ SSL đáng tin cậy, ví dụ như \"Let's Encrypt\". Hãy cung cấp Chứng Chỉ SSL hoặc là tắt tính năng kết nối bảo mật.", @@ -630,7 +630,7 @@ "LabelInternetQuality": "Chất lượng Internet:", "LabelInNetworkSignInWithEasyPasswordHelp": "Dùng mã PIN tiện lợi để đăng nhập thiết bị trong mạng cục bộ. Mật khẩu thông thường của bạn sẽ chỉ cần thiết khi ở nhà. Nếu để trống mã PIN, bạn sẽ không cần mật khẩu trong mạng nhà của mình.", "LabelInNetworkSignInWithEasyPassword": "Bật đăng nhập trong mạng bằng mã PIN tiện lợi", - "LabelImportOnlyFavoriteChannels": "Giới hạn để chỉ nhập vào những kênh yêu thích", + "LabelImportOnlyFavoriteChannels": "Hạn chế các kênh được đánh dấu là yêu thích", "LabelImageType": "Loại hình ảnh:", "LabelImageFetchersHelp": "Kích hoạt và xếp hạng trình tải hình ảnh tự động theo thứ tự ưu tiên.", "LabelIdentificationFieldHelp": "Một chuỗi không phân biệt viết hoa/thường hoặc biểu thức chính quy.", @@ -1259,7 +1259,7 @@ "PlaybackData": "Dữ liệu phát lại", "PlayAllFromHere": "Phát tất cả từ đây", "Play": "Phát", - "PlaceFavoriteChannelsAtBeginning": "Đặt các kênh yêu thích ở đầu", + "PlaceFavoriteChannelsAtBeginning": "Đặt các kênh yêu thích ở phần đầu", "TabNetworking": "Kết Nối Mạng", "WizardCompleted": "Đó là tất cả những gì chúng ta cần bây giờ. Jellyfin đã bắt đầu thu thập thông tin về thư viện phương tiện của bạn. Kiểm tra một số ứng dụng của chúng tôi, sau đó nhấp vào Hoàn thành để xem Trang tổng quan.", "TabDashboard": "Trang tổng quan", From cb432fafb719e64e9839c649e67d89127b8f3b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=A5=EA=B1=B4?= Date: Mon, 21 Sep 2020 10:23:28 +0000 Subject: [PATCH 333/582] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 137 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 117 insertions(+), 20 deletions(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index 4c6d8c634c..99c63c2f6c 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -215,7 +215,7 @@ "LabelAudioLanguagePreference": "선호하는 오디오 언어:", "LabelBirthDate": "생일:", "LabelBirthYear": "출생 년도:", - "LabelBlastMessageInterval": "활성 메세지 간격(초)", + "LabelBlastMessageInterval": "활성 메세지 간격", "LabelBlastMessageIntervalHelp": "서버 활성화 메세지 간의 지속 시간을 초 단위로 결정합니다.", "LabelCache": "캐시:", "LabelCachePath": "캐시 경로:", @@ -577,11 +577,11 @@ "TabParentalControl": "자녀 보호", "TabPlugins": "플러그인", "TabProfiles": "프로필", - "TabResponses": "반응", + "TabResponses": "응답", "TabScheduledTasks": "예약 작업", "TabServer": "서버", "TabStreaming": "스트리밍", - "TabUpcoming": "방송 예정", + "TabUpcoming": "예정", "Tags": "태그", "TellUsAboutYourself": "자신에 대해 알려주세요", "ThisWizardWillGuideYou": "이 마법사는 설정 과정을 안내합니다. 시작하려면 선호하는 언어를 선택하세요.", @@ -640,7 +640,7 @@ "AddToPlayQueue": "재생 대기열에 추가", "AddedOnValue": "{0} 추가됨", "AirDate": "방영 일자", - "Aired": "방영됨", + "Aired": "방영순", "Alerts": "알림", "AllComplexFormats": "모든 복잡한 포맷 (ASS, SSA, VOBSUB, PGS, SUB, IDX,...)", "AllLibraries": "모든 라이브러리", @@ -737,7 +737,7 @@ "TV": "TV", "Suggestions": "제안", "SubtitleOffset": "자막 오프셋", - "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "이 설정은 이 장치에서 시작되는 크롬캐스트 재생에도 적용됩니다.", + "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "이 설정은이 기기에서 시작된 모든 크롬캐스트 재생에도 적용됩니다.", "Studios": "스튜디오", "StopRecording": "녹화 중지", "Sports": "스포츠", @@ -750,10 +750,10 @@ "ShowYear": "년도 표시", "ShowTitle": "제목 표시", "ShowAdvancedSettings": "고급 설정 표시", - "ServerUpdateNeeded": "Jellyfin 서버를 업데이트해야합니다. 최신 버전을 다운로드하려면, {0}을 확인하십시오.", - "ServerRestartNeededAfterPluginInstall": "플러그인을 설치한 후에 Jellyfin 서버를 재시작해야합니다.", - "ServerNameIsShuttingDown": "Jellyfin 서버 - {0}은 가동중지되었습니다.", - "ServerNameIsRestarting": "Jellyfin 서버 - {0}은 재시작중입니다.", + "ServerUpdateNeeded": "이 서버를 업데이트해야합니다. 최신 버전을 다운로드하려면 {0}을 (를) 방문하십시오.", + "ServerRestartNeededAfterPluginInstall": "플러그인을 설치 한 후 Jellyfin을 다시 시작해야합니다.", + "ServerNameIsShuttingDown": "{0}의 서버가 종료됩니다.", + "ServerNameIsRestarting": "{0}의 서버가 다시 시작됩니다.", "SeriesSettings": "시리즈 설정", "Series": "시리즈", "SendMessage": "메세지 발송", @@ -767,7 +767,7 @@ "Runtime": "런타임", "RepeatMode": "반복 모드", "RepeatEpisodes": "에피소드 반복", - "RememberMe": "기억하기", + "RememberMe": "날 기억해", "ReleaseDate": "출시일", "RefreshMetadata": "메타데이터 새로 고침", "Recordings": "녹화", @@ -956,7 +956,7 @@ "Anytime": "언제든지", "XmlTvNewsCategoriesHelp": "이 카테고리의 프로그램은 뉴스 프로그램으로 표시됩니다. 여러개를 '|'으로 구분하십시오.", "Smart": "스마트", - "SeriesYearToPresent": "{0} - 제공", + "SeriesYearToPresent": "{0} - N/A", "RemoveFromCollection": "콜렉션에서 제거", "RecentlyWatched": "최근 시청함", "PleaseAddAtLeastOneFolder": "추가 버튼을 클릭하여 하나 이상의 폴더를 라이브러리에 추가하십시오.", @@ -1019,7 +1019,7 @@ "Ended": "종료", "EndsAtValue": "{0}에 종료", "HeaderDateIssued": "발행일", - "ConfigureDateAdded": "라이브러리 설정의 Jellyfin 서버 대시보드에서 추가된 날짜를 결정하는 방법 구성", + "ConfigureDateAdded": "추가 된 날짜가 라이브러리 설정 아래의 대시 보드에서 결정되는 방식 구성", "EnableStreamLoopingHelp": "라이브 스트림에 몇 초의 데이터만 포함되어 있고 지속적으로 요청해야하는 경우, 이 옵션을 활성화하십시오. 필요하지 않은 경우, 이 기능을 사용하면 문제가 발생할 수 있습니다.", "BurnSubtitlesHelp": "영상을 트랜스코딩할 때 자막 포맷에 따라 서버에서 영상 안에 자막을 입힐지를 결정합니다. 영상에 자막을 입히지 않으면 서버 성능이 향상됩니다. 일부 ASS/SSA 자막을 포함하여 자막 포맷(VOBSUB, PGS, SUB/IDX 등)에 따라 자막을 영상에 입히려면 자동을 선택하십시오.", "EnableNextVideoInfoOverlay": "재생 중에 다음 비디오 정보 표시", @@ -1146,7 +1146,7 @@ "LabelKodiMetadataEnablePathSubstitutionHelp": "서버의 경로 대체 설정을 이용하여 이미지 경로 대체를 활성화합니다.", "LabelKodiMetadataEnablePathSubstitution": "경로 대체 활성화", "LabelKodiMetadataEnableExtraThumbsHelp": "이미지를 다운로드할 때는 Kodi 스킨과의 최대한의 호환성을 위해 추가 팬아트와 추가 섬네일 중 어느 형식으로도 저장될 수 있습니다.", - "LabelKodiMetadataEnableExtraThumbs": "추가 팬아틀 추가 섬네일 필드로 복사하기", + "LabelKodiMetadataEnableExtraThumbs": "추가된 팬아트를 추가된 썸네일 필드에 복사", "LabelKeepUpTo": "대기 한계:", "LabelHomeScreenSectionValue": "홈 화면 영역 {0}:", "LabelBaseUrlHelp": "서버 URL에 사용자 지정 하위 디렉터리를 추가합니다. http://example.com/<baseurl>", @@ -1163,7 +1163,7 @@ "MessagePluginConfigurationRequiresLocalAccess": "이 플러그인을 구성하려면 로컬 서버에 직접 로그인하십시오.", "MessageNoCollectionsAvailable": "컬렉션을 사용하면 영화, 시리즈 및 앨범의 개인화 된 그룹을 즐길 수 있습니다. + 버튼을 클릭하여 컬렉션 만들기를 시작합니다.", "LabelPlayerDimensions": "플레이어 넓이:", - "LabelParentNumber": "Parent number:", + "LabelParentNumber": "부모 번호:", "LabelLineup": "라인업:", "LabelDroppedFrames": "드롭 프레임:", "LabelDeinterlaceMethod": "디인터레이싱 방법:", @@ -1220,11 +1220,11 @@ "QuickConnectDeactivated": "로그인 요청이 승인되기 전에 Quick connect가 비활성화되었습니다", "QuickConnectAuthorizeFail": "알수없는 퀵커넥트 코드", "QuickConnectAuthorizeSuccess": "승인 요청", - "QuickConnectAuthorizeCode": "Enter code {0} to login", + "QuickConnectAuthorizeCode": "로그인하려면 {0} 코드를 입력하세요.", "QuickConnectActivationSuccessful": "성공적으로 활성화되었습니다", "QuickConnect": "퀵커넥트", "Profile": "프로파일", - "ProductionLocations": "Production 위치", + "ProductionLocations": "프로덕션 위치", "Primary": "기본", "PreviousTrack": "이전으로 건너 뛰기", "PreferEmbeddedEpisodeInfosOverFileNames": "파일 이름보다 삽입 된 에피소드 정보 선호", @@ -1244,9 +1244,9 @@ "OptionSaveMetadataAsHiddenHelp": "이를 변경하면 앞으로 저장되는 새 메타 데이터에 적용됩니다. 기존 메타 데이터 파일은 다음에 서버에서 저장 될 때 업데이트됩니다.", "OptionRequirePerfectSubtitleMatchHelp": "완벽한 일치를 요구하면 정확한 비디오 파일로 테스트 및 확인 된 자막 만 포함하도록 자막이 필터링됩니다. 선택을 취소하면 자막이 다운로드 될 가능성이 높아지지만 시간이 잘못되었거나 잘못된 자막 텍스트가 발생할 가능성이 높아집니다.", "OptionRequirePerfectSubtitleMatch": "비디오 파일과 완벽하게 일치하는 자막만 다운로드", - "OptionReportByteRangeSeekingWhenTranscodingHelp": "This is required for some devices that don't time seek very well.", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "이것은 시간을 잘 찾지 못하는 일부 장치에 필요합니다.", "OptionReportByteRangeSeekingWhenTranscoding": "트랜스 코딩시 서버가 byte seeking을 지원한다고 보고", - "OptionRegex": "Regex", + "OptionRegex": "정규식", "OptionRandom": "랜덤", "OptionLoginAttemptsBeforeLockoutHelp": "0 값은 기본값을 상속 함을 의미합니다. 일반 사용자는 세 번, 관리자는 다섯 번 시도합니다. -1로 설정하면 기능이 비활성화됩니다.", "OptionLoginAttemptsBeforeLockout": "잠금이 발생하기 전에 발생할 수있는 잘못된 로그인 시도 횟수를 결정합니다.", @@ -1274,7 +1274,7 @@ "MessageAddRepository": "저장소를 추가하려면 헤더 옆에있는 버튼을 클릭하고 요청 된 정보를 입력합니다.", "LabelRepositoryNameHelp": "다른 저장소와 구별하기위한 사용자 정의 이름입니다.", "LabelRepositoryName": "저장소 이름", - "LabelRepositoryUrlHelp": "The location of the repository manifest you want to include.", + "LabelRepositoryUrlHelp": "manifest를 추가 할 저장소 목록의 위치입니다.", "LabelRepositoryUrl": "저장소 URL", "HeaderNewRepository": "새 저장소", "MessageNoRepositories": "저장소가 없습니다.", @@ -1320,5 +1320,102 @@ "ButtonUseQuickConnect": "퀵커넥트 사용", "ButtonActivate": "활성화", "Authorize": "승인", - "QuickConnectNotActive": "이 서버에서 퀵커넥트가 활성화되지 않았습니다" + "QuickConnectNotActive": "이 서버에서 퀵커넥트가 활성화되지 않았습니다", + "Raised": "양각", + "LabelMaxMuxingQueueSizeHelp": "모든 스트림이 초기화 될 때까지 기다리는 동안 버퍼링 할 수있는 최대 패킷 수입니다. ffmpeg 로그에서 \"출력 스트림에 대해 버퍼링 된 패킷이 너무 많음\"오류가 계속 발생하면이를 늘리십시오. 권장 값은 2048입니다.", + "LabelMaxMuxingQueueSize": "최대 muxing 대기열 크기 :", + "Preview": "미리보기", + "SubtitleVerticalPositionHelp": "텍스트가 나타나는 줄 번호입니다. 양수는 하향식을 나타냅니다. 음수는 상향식을 나타냅니다.", + "LabelSubtitleVerticalPosition": "세로 위치 :", + "ClearQueue": "대기열 지우기", + "StopPlayback": "재생 중지", + "LabelTonemappingParamHelp": "톤 매핑 알고리즘을 조정합니다. 권장 및 기본값은 NaN입니다. 일반적으로 비워 둡니다.", + "LabelTonemappingParam": "톤 매핑 매개변수:", + "LabelTonemappingPeakHelp": "이 값으로 신호 / 공칭 / 기준 피크를 재정의합니다. 디스플레이 메타 데이터에 포함 된 피크 정보를 신뢰할 수 없거나 낮은 범위에서 높은 범위로 톤 매핑 할 때 유용합니다. 권장 및 기본값은 0입니다.", + "LabelTonemappingPeak": "톤 매핑 피크 :", + "LabelTonemappingThresholdHelp": "톤 매핑 알고리즘 매개 변수는 각 장면별로 미세 조정됩니다. 그리고 임계 값은 장면이 변경되었는지 여부를 감지하는 데 사용됩니다. 현재 프레임 평균 밝기와 현재 실행 평균 사이의 거리가 임계 값을 초과하면 장면 평균과 최고 밝기를 다시 계산합니다. 권장 및 기본값은 0.8 및 0.2입니다.", + "LabelTonemappingThreshold": "Tonemapping 임계값 :", + "LabelTonemappingDesatHelp": "이 밝기 수준을 초과하는 하이라이트에는 채도를 낮추십시오. 매개 변수가 높을수록 더 많은 색상 정보가 보존됩니다. 이 설정은 대신 (부드럽게) 흰색으로 바뀌어 수퍼 하이라이트의 색상이 부 자연스럽게 날아가는 것을 방지합니다. 이렇게하면 범위를 벗어난 색상에 대한 정보를 줄이는 대신 이미지가 더 자연스럽게 느껴집니다. 권장 및 기본값은 0과 0.5입니다.", + "LabelTonemappingDesat": "톤 매핑 desat:", + "TonemappingRangeHelp": "출력 색상 범위를 선택합니다. 자동은 입력 범위와 동일합니다.", + "LabelTonemappingRange": "Tonemapping 범위 :", + "TonemappingAlgorithmHelp": "톤 매핑을 미세 조정할 수 있습니다. 이러한 옵션에 익숙하지 않은 경우 기본값을 유지하십시오. 권장 값은 Reinhard입니다.", + "LabelTonemappingAlgorithm": "사용할 톤 매핑 알고리즘을 선택합니다:", + "EnableBlurHashHelp": "아직 로드 중인 이미지는 고유한 자리 표시자와 함께 표시됩니다.", + "WeeklyAt": "{0} 요일에 {1}", + "PersonRole": "{0}(으)로", + "Bwdif": "BWDIF", + "ShowIndicatorsFor": "다음에 대한 표시기 표시 :", + "ResumeAt": "{0}에서 재생", + "MessageChangeRecordingPath": "녹음 폴더를 변경해도 기존 녹음은 이전 위치에서 새 위치로 마이그레이션되지 않습니다. 원하는 경우 수동으로 이동해야합니다.", + "Premieres": "첫날", + "AllowTonemappingHelp": "톤 매핑은 원본 장면을 표현하는 데 매우 중요한 정보 인 이미지 세부 정보와 색상을 유지하면서 HDR에서 SDR로 비디오의 동적 범위를 변환 할 수 있습니다. 현재는 HDR10 또는 HLG 메타 데이터가 포함 된 비디오를 트랜스 코딩 할 때만 작동합니다. 재생이 부드럽 지 않거나 실패하면 해당 하드웨어 디코더를 끄십시오.", + "EnableTonemapping": "톤 매핑 활성화", + "LabelOpenclDeviceHelp": "이것은 톤 매핑에 사용되는 OpenCL 장치입니다. 점의 왼쪽은 플랫폼 번호이고 오른쪽은 플랫폼의 장치 번호입니다. 기본값은 0.0입니다. OpenCL 하드웨어 가속 방법이 포함 된 ffmpeg 응용 프로그램 파일이 필요합니다.", + "LabelOpenclDevice": "OpenCL 장치:", + "LabelColorPrimaries": "원색:", + "LabelColorTransfer": "색상 이동:", + "LabelColorSpace": "컬러 스페이스:", + "LabelVideoRange": "비디오 길이:", + "MediaInfoColorPrimaries": "원색", + "MediaInfoColorTransfer": "색상 이동", + "MediaInfoColorSpace": "컬러 스페이스", + "MediaInfoVideoRange": "비디오 길이", + "ButtonPlayer": "플레이어", + "ButtonCast": "캐스트", + "EnableBlurHash": "이미지에 blurred placeholders 사용", + "UnsupportedPlayback": "Jellyfin은 DRM으로 보호되는 콘텐츠의 암호를 해독 할 수 없지만 보호 된 제목을 포함하여 모든 콘텐츠가 시도됩니다. 일부 파일은 암호화 또는 대화 형 제목과 같은 기타 지원되지 않는 기능으로 인해 완전히 검은 색으로 나타날 수 있습니다.", + "OnApplicationStartup": "애플리케이션 시작시", + "EveryXHours": "매 {0}시간", + "EveryHour": "매시간", + "EveryXMinutes": "매 {0} 분마다", + "OnWakeFromSleep": "잠에서 깨어날 때", + "DailyAt": "매일 {0}", + "LastSeen": "마지막으로 본 {0}", + "ListPaging": "{0}-{1} 의 {2}", + "WriteAccessRequired": "Jellyfin에 이 폴더에 대한 쓰기 권한이 필요합니다. 쓰기 권한을 확인하고 다시 시도하십시오.", + "PathNotFound": "경로를 찾을 수 없습니다. 경로가 유효한지 확인하고 다시 시도하십시오.", + "Yadif": "YADIF", + "XmlTvMovieCategoriesHelp": "이러한 범주의 프로그램은 영화로 표시됩니다. 여러 개를 '|'로 구분하십시오.", + "XmlTvKidsCategoriesHelp": "이러한 범주의 프로그램은 어린 이용 프로그램으로 표시됩니다. 여러 개를 '|'로 구분하십시오.", + "XmlDocumentAttributeListHelp": "이러한 속성은 모든 XML 응답의 루트 요소에 적용됩니다.", + "Writers": "작가", + "ViewAlbumArtist": "앨범 아티스트 보기", + "VideoAudio": "비디오 오디오", + "Video": "비디오", + "Vertical": "세로", + "UserAgentHelp": "사용자 정의 사용자 에이전트 HTTP 헤더를 제공하십시오.", + "UseDoubleRateDeinterlacingHelp": "이 설정은 종종 bob 디인터레이싱이라고하는 디인터레이싱시 필드 속도를 사용합니다. 이는 비디오의 프레임 속도를 두 배로 늘려 TV에서 인터레이스 비디오를 볼 때와 같은 풀 모션을 제공합니다.", + "UseDoubleRateDeinterlacing": "디인터레이스시 프레임 속도 두 배", + "TvLibraryHelp": "{0} TV 이름 지정 가이드 {1}를 검토하세요.", + "ThumbCard": "미리보기 카드", + "Thumb": "미리보기", + "TheseSettingsAffectSubtitlesOnThisDevice": "이 설정은이 기기의 자막에 영향을 줍니다", + "TabRepositories": "저장소", + "SyncPlayAccessHelp": "이 사용자가 SyncPlay 기능에 대한 액세스 수준을 선택합니다. SyncPlay를 사용하면 다른 장치와 재생을 동기화 할 수 있습니다.", + "Subtitle": "자막", + "SubtitleDownloadersHelp": "우선 순위에 따라 선호하는 자막 다운로더를 활성화하고 순위를 매 깁니다.", + "SubtitleAppearanceSettingsDisclaimer": "이러한 설정은 그래픽 자막 (PGS, DVD 등) 또는 자체 스타일이 포함 된 ASS / SSA 자막에는 적용되지 않습니다.", + "SpecialFeatures": "특별한 기능", + "SmartSubtitlesHelp": "오디오가 외국어 인 경우 언어 기본 설정과 일치하는 자막이 로드됩니다.", + "Smaller": "소문자", + "SmallCaps": "작은 대문자", + "SkipEpisodesAlreadyInMyLibraryHelp": "가능한 경우 시즌 및 에피소드 번호를 사용하여 에피소드를 비교합니다.", + "Filter": "필터", + "New": "새로운", + "ShowMore": "자세히보기", + "ShowLess": "간략히보기", + "SettingsWarning": "이러한 값을 변경하면 불안정하거나 연결 실패가 발생할 수 있습니다. 문제가 발생하면 기본값으로 다시 변경하는 것이 좋습니다.", + "SeriesDisplayOrderHelp": "방송 날짜, DVD 순서 또는 절대 번호로 에피소드를 설정하십시오.", + "SelectServer": "서버 선택", + "SelectAdminUsername": "관리자 계정의 사용자 이름을 선택하십시오.", + "Season": "시즌", + "ScanForNewAndUpdatedFiles": "새 파일 및 업데이트 된 파일 검색", + "SaveSubtitlesIntoMediaFoldersHelp": "비디오 파일 옆에 자막을 저장하면보다 쉽게 관리 할 수 있습니다.", + "SaveChanges": "변경 사항을 저장하다", + "Restart": "재시작", + "ResetPassword": "패스워드 리셋", + "ReplaceAllMetadata": "모든 메타데이터 교체", + "RepeatOne": "반복", + "RefreshDialogHelp": "메타 데이터는 대시 보드에서 활성화 된 설정 및 인터넷 서비스를 기반으로 새로 고쳐집니다." } From ef4370bf3bbbc73df48abb2f0e80d274cb2ad3df Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Mon, 21 Sep 2020 10:23:50 +0000 Subject: [PATCH 334/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 94 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 76 insertions(+), 18 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 4162eaff65..85ac283006 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -131,8 +131,8 @@ "AroundTime": "Khoảng", "Anytime": "Bất cứ lúc nào", "AnyLanguage": "Ngôn Ngữ Bất Kỳ", - "AlwaysPlaySubtitlesHelp": "Phụ đề phù hợp với sở thích ngôn ngữ sẽ được tải bất kể ngôn ngữ âm thanh.", - "AlwaysPlaySubtitles": "Luôn hiển thị phụ đề", + "AlwaysPlaySubtitlesHelp": "Phụ đề phù hợp với tùy chọn ngôn ngữ sẽ được tải bất kể ngôn ngữ âm thanh là gì.", + "AlwaysPlaySubtitles": "Luôn luôn Phát", "AllowedRemoteAddressesHelp": "Danh sách địa chỉ IP được phân tách bằng dấu phẩy hoặc các mục IP/netmask cho các mạng sẽ được phép kết nối từ xa. Nếu để trống, tất cả các địa chỉ sẽ được cho phép.", "AllowRemoteAccessHelp": "Nếu không được chọn, tất cả các kết nối từ xa sẽ bị chặn.", "AllowRemoteAccess": "Cho phép kết nối từ xa đến Máy chủ Jellyfin.", @@ -153,7 +153,7 @@ "AdditionalNotificationServices": "Duyệt qua danh mục plugin để cài đặt các dịch vụ thông báo bổ sung.", "AddedOnValue": "Đã thêm {0}", "AddToPlaylist": "Thêm vào danh sách phát", - "AddToPlayQueue": "Thêm vào hàng đợi", + "AddToPlayQueue": "Thêm vào hàng đợi phát", "Absolute": "Tuyệt đối", "ButtonSend": "Gửi", "ButtonSelectView": "Chọn chế độ xem", @@ -195,7 +195,7 @@ "ColorPrimaries": "Những màu chủ đạo", "Collections": "Bộ Sưu Tập", "ClientSettings": "Cài đặt thiết bị phát", - "CinemaModeConfigurationHelp": "Chế độ Cinema giúp bạn mang lại trải nghiệm rạp chiếu phim ngay tại phòng khách với khả năng phát trailers và những đoạn mở đầu tuỳ chọn trước phần chính của bộ phim.", + "CinemaModeConfigurationHelp": "Chế độ Rạp Chiếu Phim mang lại trải nghiệm rạp chiếu phim ngay tại phòng khách với khả năng phát trailers và những đoạn mở đầu tuỳ chọn trước phần chính của bộ phim.", "ChannelNumber": "Kênh số", "Channels": "Các Kênh", "ChannelNameOnly": "Chỉ kênh {0}", @@ -327,7 +327,7 @@ "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 kiểm tra xem máy chủ Jellyfin có quyền ghi/xoá vào thư mục đa phương tiện và thử xóa lại sau.", "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.", - "ErrorAddingTunerDevice": "Có lỗi xảy ra khi thêm vào thiết bị bắt sóng này. Hãy thử lại khi chắc chắn rằng nó có thể truy cập.", + "ErrorAddingTunerDevice": "Đã xảy ra lỗi khi thêm thiết bị dò. Hãy đảm bảo rằng nó có thể truy cập được và thử lại.", "ErrorAddingMediaPathToVirtualFolder": "Có lỗi xảy ra khi thêm đường dẫn phương tiện này. Vui lòng đảm bảo đường dẫn chính xác và Jellyfin được phép truy cập vào vị trí đó.", "ErrorAddingListingsToSchedulesDirect": "Có lỗi xảy ra khi thêm danh sách này vào tài khoản Schedules Direct của bạn. Schedules Direct chỉ cho phép một số lượng danh sách nhất định mỗi tài khoản. Bạn có thể cần phải đăng nhập vào trang web của Schedules Direct và xoá những danh sách khác trước khi có thể thêm danh sách mới.", "Episodes": "Tập", @@ -376,7 +376,7 @@ "HeaderMediaFolders": "Thư Mục Chứa Nội Dung", "HeaderMedia": "Nội Dung", "HeaderLoginFailure": "Đăng Nhập Không Thành Công", - "HeaderLiveTvTunerSetup": "Cài Đặt Bộ Bắt Sóng TV", + "HeaderLiveTvTunerSetup": "Thiết lập Bộ dò TV 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", @@ -544,7 +544,7 @@ "HeaderTypeText": "Nhập nội dung", "HeaderTypeImageFetchers": "Trình tải hình ảnh tự động cho {0}", "HeaderTuners": "Bộ Điều Khiển Thu Phát Sóng", - "HeaderTunerDevices": "Thiết Bị Bắt Sóng", + "HeaderTunerDevices": "Thiết Bị Dò", "HeaderTranscodingProfileHelp": "Thêm hồ sơ chuyển mã để chỉ ra những định dạng nên dùng khi cần chuyển mã.", "HeaderTranscodingProfile": "Hồ Sơ Chuyển Mã", "LabelEnableAutomaticPortMap": "Kích hoạt tính năng tự động kết nối các port", @@ -696,7 +696,7 @@ "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": "Đồng Bộ Phát", "LabelPasswordConfirm": "Mật khẩu (xác nhận):", "LabelPassword": "Mật khẩu:", "LabelNotificationEnabled": "Bật thông báo này", @@ -710,7 +710,7 @@ "SubtitleVerticalPositionHelp": "Số dòng nơi văn bản xuất hiện. Số dương cho biết từ trên xuống. Số âm cho biết từ dưới lên.", "Movies": "Phim", "Photos": "Ảnh", - "Playlists": "Danh Sách Chơi", + "Playlists": "Danh sách phát", "Shows": "Các Chương Trình", "Songs": "Các Bài Hát", "Sync": "Đồng Bộ", @@ -756,7 +756,7 @@ "LabelTVHomeScreen": "Màn hình chính chế độ TV:", "OptionProtocolHttp": "HTTP", "OptionPlainVideoItemsHelp": "Tất cả các video được trình bày trong DIDL như \"object.item.videoItem\" thay vì một loại cụ thể hơn, chẳng hạn như \"object.item.videoItem.movie\".", - "OptionPlainVideoItems": "Hiển thị tất cả video dưới dạng các mục video thuần túy", + "OptionPlainVideoItems": "Hiển thị tất cả video dưới dạng các mục video đơn giản", "OptionPremiereDate": "Ngày công chiếu", "OptionProtocolHls": "Luồng Trực Tiếp HTTP", "OptionRandom": "Ngẫu Nhiên", @@ -888,9 +888,9 @@ "MessageNoTrailersFound": "Cài đặt kênh đoạn giới thiệu để nâng cao trải nghiệm phim của bạn bằng cách thêm thư viện đoạn giới thiệu trên internet.", "MessageNoServersAvailable": "Không có máy chủ nào được tìm thấy bằng cách sử dụng tính năng khám phá máy chủ tự động.", "MessageNoPluginsInstalled": "Bạn chưa cài đặt plugin nào.", - "MessageNoMovieSuggestionsAvailable": "Hiện tại không có bộ phim nào được đề xuất. Hãy bắt đầu xem và xếp hạng các bộ phim của bạn, sau đó quay lại để xem các đề xuất của bạn.", + "MessageNoMovieSuggestionsAvailable": "Hiện tại không có phim nào được đề xuất. Hãy bắt đầu xem và xếp hạng các bộ phim của bạn, sau đó quay lại để xem các đề xuất của bạn.", "MessageNoGenresAvailable": "Cho phép một số bên cung cấp dữ liệu lấy các thể loại từ internet.", - "MessageNoCollectionsAvailable": "Bộ sưu tập cho phép bạn thưởng thức các nhóm Phim, Bộ và Album được cá nhân hóa. Nhấp vào nút + để bắt đầu tạo bộ sưu tập.", + "MessageNoCollectionsAvailable": "Bộ sưu tập giúp bạn thưởng thức các nhóm Phim, Phim Bộ và Album được tùy chỉnh theo cách của bạn. Bấm nút + để tạo bộ sưu tập.", "MessageAddRepository": "Nếu bạn muốn thêm kho lưu trữ, hãy nhấp vào nút bên cạnh tiêu đề và điền thông tin được yêu cầu.", "LabelRepositoryNameHelp": "Tên tùy chỉnh để phân biệt kho lưu trữ này với bất kỳ kho lưu trữ nào khác được thêm vào máy chủ của bạn.", "LabelRepositoryName": "Tên kho lưu trữ", @@ -1047,8 +1047,8 @@ "OptionEnableAccessFromAllDevices": "Bật cho phép truy cập từ tất cả các thiết bị", "OptionDownloadImagesInAdvanceHelp": "Theo mặc định, hầu hết các hình ảnh chỉ được tải xuống khi khách hàng yêu cầu. Bật tùy chọn này để tải xuống trước tất cả các hình ảnh khi phương tiện mới được nhập. Điều này có thể khiến quá trình quét thư viện lâu hơn đáng kể.", "OptionDownloadImagesInAdvance": "Tải xuống hình ảnh nâng cao", - "OptionDisplayFolderViewHelp": "Hiển thị các thư mục cùng với các thư viện phương tiện khác của bạn. Điều này có thể hữu ích nếu bạn muốn có chế độ xem thư mục đơn giản.", - "OptionDisplayFolderView": "Hiển thị chế độ xem thư mục để hiển thị các thư mục phương tiện thuần túy", + "OptionDisplayFolderViewHelp": "Hiển thị các thư mục cùng với các thư viện phương tiện khác của bạn. Nó có thể hữu ích nếu bạn muốn xem thư mục đơn giản.", + "OptionDisplayFolderView": "Hiển thị chế độ xem thư mục để hiển thị các thư mục phương tiện đơn giản", "OptionDisableUserHelp": "Máy chủ sẽ không cho phép bất kỳ kết nối nào từ người dùng này. Các kết nối hiện có sẽ bị chấm dứt đột ngột.", "OptionDateAddedImportTime": "Sử dụng ngày đã quét vào thư viện", "OptionDateAddedFileTime": "Sử dụng ngày tạo tệp", @@ -1250,12 +1250,12 @@ "PleaseConfirmPluginInstallation": "Vui lòng nhấp vào OK để xác nhận bạn đã đọc ở trên và muốn tiếp tục cài đặt plugin.", "PleaseAddAtLeastOneFolder": "Vui lòng thêm ít nhất một thư mục vào thư viện này bằng cách nhấp vào nút Thêm.", "Played": "Đã Phát", - "PlaybackErrorNoCompatibleStream": "Ứng dụng khách này không tương thích với phương tiện và máy chủ không gửi định dạng phương tiện tương thích.", + "PlaybackErrorNoCompatibleStream": "Ứng dụng khách không tương thích với phương tiện và máy chủ không gửi định dạng phương tiện tương thích.", "PlayNextEpisodeAutomatically": "Tự động phát tập tiếp theo", - "PlayNext": "Lượt tiếp theo", + "PlayNext": "Phát kế tiếp", "PlayFromBeginning": "Phát từ đầu", "PlayCount": "Số lần phát", - "PlaybackRate": "Tỷ lệ phát lại", + "PlaybackRate": "Tốc độ phát lại", "PlaybackData": "Dữ liệu phát lại", "PlayAllFromHere": "Phát tất cả từ đây", "Play": "Phát", @@ -1263,5 +1263,63 @@ "TabNetworking": "Kết Nối Mạng", "WizardCompleted": "Đó là tất cả những gì chúng ta cần bây giờ. Jellyfin đã bắt đầu thu thập thông tin về thư viện phương tiện của bạn. Kiểm tra một số ứng dụng của chúng tôi, sau đó nhấp vào Hoàn thành để xem Trang tổng quan.", "TabDashboard": "Trang tổng quan", - "LabelScheduledTaskLastRan": "Lần cuối chạy {0}, mất{1}." + "LabelScheduledTaskLastRan": "Lần cuối chạy {0}, mất{1}.", + "UseDoubleRateDeinterlacingHelp": "Cài đặt này sử dụng giá trị tỉ lệ khi khử xen kẽ, thường được gọi là khử xen kẽ bob, tăng gấp đôi tốc độ khung hình của video để cung cấp chuyển động đầy đủ như những gì bạn sẽ thấy khi xem video xen kẽ trên TV.", + "UseDoubleRateDeinterlacing": "Tăng gấp đôi tốc độ khung hình khi khử xen kẽ", + "TvLibraryHelp": "Xem lại {0} hướng dẫn đặt tên TV {1}.", + "Tuesday": "Thứ ba", + "Transcoding": "Chuyển mã", + "Trailers": "Đoạn giới thiệu", + "TabAccess": "Truy cập", + "SystemDlnaProfilesHelp": "Cấu hình hệ thống ở chế độ chỉ đọc. Các thay đổi đối với cấu hình hệ thống sẽ được lưu vào cấu hình tùy chỉnh mới.", + "Sports": "Thể thao", + "SpecialFeatures": "Các tính năng đặc biệt", + "SortName": "Sắp xếp tên", + "SortChannelsBy": "Sắp xếp các kênh theo:", + "SmallCaps": "Chữ hoa nhỏ", + "MediaInfoCodecTag": "Thẻ mã hóa", + "TitleHostingSettings": "Cài đặt máy chủ", + "TitleHardwareAcceleration": "Tăng tốc phần cứng", + "Thursday": "Thứ năm", + "ThumbCard": "Thẻ ảnh thu nhỏ", + "Thumb": "Ảnh thu nhỏ", + "TheseSettingsAffectSubtitlesOnThisDevice": "Các cài đặt này ảnh hưởng đến phụ đề trên thiết bị này", + "ThemeVideos": "Video Giao diện", + "ThemeSongs": "Bài hát Giao diện", + "TagsValue": "Thẻ: {0}", + "Tags": "Thẻ", + "TabStreaming": "Luồng", + "TabScheduledTasks": "Công việc đã lên lịch", + "TabResponses": "Phản hồi", + "TabParentalControl": "Kiểm soát của cha mẹ", + "TabOther": "Khác", + "TabNotifications": "Thông báo", + "TabNfoSettings": "Cài đặt NFO", + "TabMusic": "Nhạc", + "TabLogs": "Nhật ký", + "TabCodecs": "Bộ giải mã", + "TabRepositories": "Kho lưu trữ", + "TabAdvanced": "Nâng cao", + "Suggestions": "Đề xuất", + "Subtitles": "Phụ đề", + "Subtitle": "Phụ đề", + "SubtitleDownloadersHelp": "Bật và xếp hạng các trình tải xuống phụ đề ưa thích của bạn theo thứ tự ưu tiên.", + "SubtitleAppearanceSettingsDisclaimer": "Các cài đặt này sẽ không áp dụng cho phụ đề đồ họa (PGS, DVD, v.v.) hoặc phụ đề ASS / SSA được nhúng kiểu riêng của chúng.", + "StopRecording": "Dừng ghi", + "LabelSubtitleVerticalPosition": "Vị trí dọc:", + "LabelMaxMuxingQueueSize": "Kích cỡ hàng đợi phát ngẫu nhiên tối đa:", + "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Các cài đặt này áp dụng cho mỗi lần bắt đầu phát lại Chromecast trên thiết bị này.", + "SyncPlayAccessHelp": "Chọn cấp độ truy cập cho người dùng này vào tính năng Phát Đồng Bộ. Phát Đồng Bộ cho phép đồng bộ phát lại với các thiết bị khác.", + "TabDirectPlay": "Phát Trực Tiếp", + "TitlePlayback": "Phát lại", + "Unplayed": "Chưa Phát", + "UserProfilesIntro": "Jellyfin hỗ trợ hồ sơ người dùng bao gồm cài đặt hiển thị chi tiết, trạng thái phát và kiểm soát của phụ huynh.", + "ViewPlaybackInfo": "Xem thông tin phát lại", + "XmlTvKidsCategoriesHelp": "Các chương trình có các danh mục này sẽ được hiển thị dưới dạng chương trình dành cho trẻ em. Phân tách nhiều bằng '|'.", + "XmlTvMovieCategoriesHelp": "Các chương trình có các danh mục này sẽ được hiển thị dưới dạng phim. Phân tách nhiều bằng '|'.", + "XmlTvNewsCategoriesHelp": "Các chương trình có các danh mục này sẽ được hiển thị dưới dạng chương trình tin tức. Phân tách nhiều bằng '|'.", + "XmlTvSportsCategoriesHelp": "Các chương trình có các danh mục này sẽ được hiển thị dưới dạng chương trình thể thao. Phân tách nhiều với '|'.", + "UnsupportedPlayback": "Jellyfin không thể giải mã nội dung được DRM bảo vệ nhưng sẽ được cố gắng giải mã tất cả nội dung, bao gồm cả các tiêu đề được bảo vệ. Một số tệp có thể xuất hiện hoàn toàn màu đen do mã hóa hoặc các tính năng không được hỗ trợ, chẳng hạn như tiêu đề tương tác.", + "EnableBlurHashHelp": "Hình ảnh đang được tải sẽ được hiển thị với một trình giữ chỗ duy nhất.", + "ButtonPlayer": "Trình Phát" } From 0057e10ae852128d9679938b6aa4b785969688cb Mon Sep 17 00:00:00 2001 From: pucherot Date: Mon, 21 Sep 2020 12:14:02 +0000 Subject: [PATCH 335/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index 76ac4a9249..3fbaaa6709 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1370,5 +1370,24 @@ "LabelIconMaxResHelp": "Máxima resolución de los iconos expuesta a través de la propiedad upnp:icon.", "LabelAlbumArtMaxResHelp": "Máxima resolución del material artístico del álbum expuesta a través de la propiedad upnp:albumArtURI.", "Other": "Otro", - "VideoAudio": "Vídeo Audio" + "VideoAudio": "Vídeo Audio", + "ThumbCard": "Tarjeta miniatura", + "QuickConnectNotActive": "Conexión Rápida no está activa en este servidor", + "QuickConnectNotAvailable": "Pídale al administrador del servidor que habilite la Conexión Rápida", + "QuickConnectInvalidCode": "Código de Conexión Rápida incorrecto", + "QuickConnectDescription": "Para iniciar sesión con Conexión Rápida, pulse el botón Conexión Rápida en el dispositivo desde el que está iniciando sesión e ingrese el código que se muestra a continuación.", + "QuickConnectDeactivated": "Conexión Rápida se desactivo antes que se pudiera aprobar la solicitud de inicio de sesión", + "QuickConnectAuthorizeFail": "Código de Conexión Rápida desconocido", + "QuickConnectAuthorizeSuccess": "Solicitar autorización", + "QuickConnectAuthorizeCode": "Introducir código de identificación", + "QuickConnectActivationSuccessful": "Activado satisfactoriamente", + "QuickConnect": "Conexión Rápida", + "LabelQuickConnectCode": "Código de Conexión Rápida:", + "LabelKnownProxies": "Proxies conocidos:", + "LabelCurrentStatus": "Estado actual:", + "KnownProxiesHelp": "Lista separada por comas de las direcciones IP de los proxies que se utilizan al conectarse a su Jellyfin. Esto es necesario para hacer un uso adecuado de los cabeceras X-Forwarded-For. Requiere reiniciar después de guardar.", + "EnableQuickConnect": "Activar \"Conexión Rápida\" en este servidor", + "ButtonUseQuickConnect": "Conexión Rápida", + "ButtonActivate": "Activar", + "Authorize": "Autorizar" } From 44ff21c8030ff368501d71ac6fba5d8c9b8b8557 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Mon, 21 Sep 2020 12:13:52 +0000 Subject: [PATCH 336/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 83 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 78 insertions(+), 5 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 85ac283006..28d1a6c3c4 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -99,7 +99,7 @@ "ButtonGotIt": "Hiểu rồi", "ButtonFullscreen": "Toàn màn hình", "ButtonForgotPassword": "Quên mật khẩu", - "ButtonEditOtherUserPreferences": "Chỉnh sửa thông tin, hình ảnh và sở thích cá nhân.", + "ButtonEditOtherUserPreferences": "Chỉnh sửa hồ sơ, hình ảnh và sở thích cá nhân của người dùng này.", "ButtonChangeServer": "Đổi máy chủ", "ButtonBack": "Lùi", "ButtonAudioTracks": "Track âm thanh", @@ -702,9 +702,9 @@ "LabelNotificationEnabled": "Bật thông báo này", "LabelNewsCategories": "Chuyên mục tin tức:", "LabelStable": "Ổn Định", - "LabelTonemappingAlgorithm": "Chọn thuật toán ánh xạ Tone màu để sử dụng:", - "TonemappingAlgorithmHelp": "Ánh xạ Tone màu có thể được tinh chỉnh. Nếu bạn không quen với tùy chọn này, hãy giữ mặc định.
    Giá trị mặc định: Reinhard.", - "TonemappingRangeHelp": "Chọn dải màu đầu ra. Tự động là giống như dải màu đầu vào.", + "LabelTonemappingAlgorithm": "Chọn thuật toán ánh xạ tông màu để sử dụng:", + "TonemappingAlgorithmHelp": "Ánh xạ tông màu có thể được tinh chỉnh. Nếu bạn không quen với tùy chọn này, hãy giữ mặc định. Giá trị mặc định: Reinhard.", + "TonemappingRangeHelp": "Chọn dải màu đầu ra. Tự động nghĩa là giống như dải màu đầu vào.", "StopPlayback": "Dừng Phát", "Preview": "Xem Trước", "SubtitleVerticalPositionHelp": "Số dòng nơi văn bản xuất hiện. Số dương cho biết từ trên xuống. Số âm cho biết từ dưới lên.", @@ -1321,5 +1321,78 @@ "XmlTvSportsCategoriesHelp": "Các chương trình có các danh mục này sẽ được hiển thị dưới dạng chương trình thể thao. Phân tách nhiều với '|'.", "UnsupportedPlayback": "Jellyfin không thể giải mã nội dung được DRM bảo vệ nhưng sẽ được cố gắng giải mã tất cả nội dung, bao gồm cả các tiêu đề được bảo vệ. Một số tệp có thể xuất hiện hoàn toàn màu đen do mã hóa hoặc các tính năng không được hỗ trợ, chẳng hạn như tiêu đề tương tác.", "EnableBlurHashHelp": "Hình ảnh đang được tải sẽ được hiển thị với một trình giữ chỗ duy nhất.", - "ButtonPlayer": "Trình Phát" + "ButtonPlayer": "Trình Phát", + "LabelOpenclDeviceHelp": "Đây là thiết bị OpenCL được sử dụng để chỉnh tông màu. Phía bên trái của dấu chấm là số nền tảng và phía bên phải là số thiết bị trên nền tảng. Giá trị mặc định là 0,0. Tệp ứng dụng ffmpeg có chứa phương pháp tăng tốc phần cứng OpenCL là bắt buộc.", + "LabelMaxMuxingQueueSizeHelp": "Số gói tối đa có thể được lưu vào bộ đệm trong khi chờ tất cả các luồng khởi tạo. Hãy thử tăng nó lên nếu bạn vẫn gặp lỗi \"Quá nhiều gói được lưu vào bộ đệm cho luồng đầu ra\" trong nhật ký ffmpeg. Giá trị được đề xuất là 2048.", + "ClearQueue": "Xóa hàng đợi", + "LabelTonemappingParamHelp": "Điều chỉnh thuật toán ánh xạ tông màu. Các giá trị được đề xuất và mặc định là NaN. Nói chung là để trống.", + "LabelTonemappingParam": "Tham số ánh xạ tông màu:", + "LabelTonemappingPeakHelp": "Ghi đè tín hiệu / không đáng kể / đỉnh tham chiếu với giá trị này. Hữu ích khi thông tin đỉnh được nhúng trong siêu dữ liệu hiển thị không đáng tin cậy hoặc khi ánh xạ tông màu từ dải thấp hơn đến dải cao hơn. Các giá trị được đề xuất và mặc định là 0.", + "LabelTonemappingPeak": "Đỉnh ánh xạ tông màu:", + "LabelTonemappingThresholdHelp": "Các thông số thuật toán ánh xạ tông màu được tinh chỉnh theo từng cảnh. Và một ngưỡng được sử dụng để phát hiện xem cảnh có thay đổi hay không. Nếu khoảng cách giữa độ sáng trung bình của khung hình hiện tại và mức trung bình chạy hiện tại vượt quá giá trị ngưỡng, chúng tôi sẽ tính toán lại độ sáng trung bình của cảnh và độ sáng cao nhất. Các giá trị được đề xuất và mặc định là 0,8 và 0,2.", + "LabelTonemappingThreshold": "Ngưỡng ánh xạ tông màu:", + "LabelTonemappingDesat": "Khử bão hòa tông màu:", + "LabelTonemappingDesatHelp": "Áp dụng khử bão hòa cho các vùng sáng vượt quá mức độ sáng này. Thông số này càng cao thì thông tin màu càng được bảo toàn. Cài đặt này giúp ngăn các màu bị lóa không tự nhiên để tạo ra những vùng siêu nổi bật, bằng cách (trơn tru) chuyển thành màu trắng. Điều này làm cho hình ảnh cảm thấy tự nhiên hơn, với chi phí là giảm thông tin về các màu nằm ngoài phạm vi. Các giá trị được đề xuất và mặc định là 0 và 0,5.", + "LabelTonemappingRange": "Phạm vi ánh xạ tông màu:", + "AllowTonemappingHelp": "Ánh xạ tông màu có thể chuyển đổi dải động của video từ HDR sang SDR trong khi vẫn duy trì chi tiết và màu sắc của hình ảnh, đây là những thông tin rất quan trọng để thể hiện cảnh gốc. Hiện chỉ hoạt động khi chuyển mã video với siêu dữ liệu HDR10 hoặc HLG được nhúng. Nếu quá trình phát lại không mượt mà hoặc không thành công, vui lòng xem xét việc tắt bộ giải mã phần cứng tương ứng.", + "EnableTonemapping": "Bật Ánh xạ tông màu", + "LabelOpenclDevice": "Thiết bị OpenCL:", + "LabelColorPrimaries": "Màu cơ bản:", + "LabelColorTransfer": "Chuyển màu:", + "LabelColorSpace": "Không gian màu:", + "LabelVideoRange": "Phạm vi video:", + "MediaInfoColorPrimaries": "Màu cơ bản", + "MediaInfoColorTransfer": "Chuyển màu", + "MediaInfoColorSpace": "Không gian màu", + "MediaInfoVideoRange": "Phạm vi video", + "ButtonCast": "Diễn viên", + "EnableBlurHash": "Bật làm mờ trình giữ chỗ cho hình ảnh", + "OnApplicationStartup": "Khi khởi động ứng dụng", + "EveryXHours": "Mỗi {0} giờ", + "EveryHour": "Mỗi tiếng", + "EveryXMinutes": "Mỗi {0} phút", + "OnWakeFromSleep": "Khi thức dậy sau giấc ngủ", + "WeeklyAt": "{0}s tại {1}", + "DailyAt": "Hàng ngày lúc {0}", + "LastSeen": "Xem lần cuối {0}", + "PersonRole": "với tư cách là {0}", + "ListPaging": "{0}-{1} của {2}", + "WriteAccessRequired": "Jellyfin yêu cầu quyền ghi vào thư mục này. Hãy đảm bảo quyền ghi và thử lại.", + "PathNotFound": "Không thể tìm thấy đường dẫn. Vui lòng đảm bảo đường dẫn hợp lệ và thử lại.", + "Yesterday": "Hôm qua", + "Yes": "Đúng", + "XmlTvPathHelp": "Đường dẫn đến tệp XMLTV. Jellyfin sẽ đọc tệp này và kiểm tra định kỳ để cập nhật. Bạn chịu trách nhiệm tạo và cập nhật tệp.", + "XmlDocumentAttributeListHelp": "Các thuộc tính này được áp dụng cho phần tử gốc của mọi phản hồi XML.", + "Whitelist": "Danh sách trắng", + "WelcomeToProject": "Chào mừng đến với Jellyfin!", + "Wednesday": "Thứ tư", + "Watched": "Đã xem", + "ViewAlbumArtist": "Xem album nghệ sĩ", + "ViewAlbum": "Xem album", + "VideoAudio": "Âm thanh Video", + "Vertical": "Theo chiều dọc", + "ValueVideoCodec": "Mã hóa Video: {0}", + "ValueTimeLimitSingleHour": "Giới hạn thời gian: 1 giờ", + "ValueTimeLimitMultiHour": "Giới hạn thời gian: {0} giờ", + "ValueSongCount": "{0} bài hát", + "ValueSeriesCount": "{0} Bộ Phim", + "ValueSeconds": "{0} giây", + "ValueOneSong": "1 bài hát", + "ValueOneSeries": "1 Bộ", + "ValueOneMusicVideo": "1 video âm nhạc", + "ValueOneMovie": "1 phim", + "ValueOneEpisode": "1 tập", + "ValueMusicVideoCount": "{0} video nhạc", + "ValueMovieCount": "{0} phim", + "ValueEpisodeCount": "{0} tập", + "ValueDiscNumber": "Đĩa {0}", + "ValueConditions": "Điều kiện: {0}", + "ValueCodec": "Mã hóa: {0}", + "ValueAudioCodec": "Mã hóa âm thanh: {0}", + "UserAgentHelp": "Cung cấp phần đầu HTTP tác nhân người dùng tùy chỉnh.", + "Upload": "Tải lên", + "Up": "Lên", + "Unrated": "Chưa được xếp hạng", + "Unmute": "Bỏ tắt tiếng", + "Uniform": "Cùng một kiểu" } From fcc110447d8ad32717b551773923380295bc74c8 Mon Sep 17 00:00:00 2001 From: pucherot Date: Mon, 21 Sep 2020 13:38:30 +0000 Subject: [PATCH 337/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index 3fbaaa6709..9a7fb536f1 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1389,5 +1389,20 @@ "EnableQuickConnect": "Activar \"Conexión Rápida\" en este servidor", "ButtonUseQuickConnect": "Conexión Rápida", "ButtonActivate": "Activar", - "Authorize": "Autorizar" + "Authorize": "Autorizar", + "LabelTonemappingThreshold": "Límite del mapeo de Tono:", + "LabelColorPrimaries": "Primarias de color:", + "MediaInfoColorPrimaries": "Primarias de color", + "TonemappingRangeHelp": "Seleccione la gama de colores de salida. Auto selecciona el mismo valor que la gama de entrada.", + "LabelTonemappingRange": "Rango de mapeo de Tono:", + "TonemappingAlgorithmHelp": "El mapeo de tonos se puede ajustar con precisión. Si no está familiarizado con estas opciones, mantenga la opción predeterminada. El valor recomendado es Reinhard.", + "LabelTonemappingAlgorithm": "Seleccione el algoritmo de mapeo de Tonos:", + "EnableTonemapping": "Habilitar mapeo de Tono", + "LabelOpenclDevice": "Dispositivo OpenCL:", + "LabelColorTransfer": "Transferencia de color:", + "LabelColorSpace": "Espacio de color:", + "LabelVideoRange": "Rango de video:", + "MediaInfoColorTransfer": "Transferencia de color", + "MediaInfoColorSpace": "Espacio de color", + "MediaInfoVideoRange": "Rango de video" } From 56a04d8e0782c4ce8db78130d987063577d11b5f Mon Sep 17 00:00:00 2001 From: pucherot Date: Mon, 21 Sep 2020 14:22:15 +0000 Subject: [PATCH 338/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index 9a7fb536f1..f760af180e 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1075,7 +1075,7 @@ "Descending": "Descendiente", "DirectStreamHelp1": "El tipo de archivo (H.264, AC3, etc.) y la resolución son compatibles con el dispositivo, pero no el contenedor (mkv, avi, wmv, etc.). El vídeo será re-empaquetado al vuelo antes de transmitirlo al dispositivo.", "DirectStreamHelp2": "La transmisión directa del archivo usa muy poco procesamiento sin mínima pérdida de calidad en el vídeo.", - "Director": "Dirección de", + "Director": "Dirección", "Directors": "Directores", "Display": "Visualización", "DisplayInMyMedia": "Mostrar en la pantalla de inicio", @@ -1404,5 +1404,9 @@ "LabelVideoRange": "Rango de video:", "MediaInfoColorTransfer": "Transferencia de color", "MediaInfoColorSpace": "Espacio de color", - "MediaInfoVideoRange": "Rango de video" + "MediaInfoVideoRange": "Rango de video", + "LabelMaxMuxingQueueSize": "Tamaño máximo de la cola de entremezclado:", + "LabelTonemappingParamHelp": "Ajuste el algoritmo de mapeo de Tono. El valor recomendado y predeterminados es NaN. Generalmente déjelo en blanco.", + "LabelTonemappingParam": "Parámetros del mapeo de Tono:", + "LabelTonemappingPeak": "Pico del mapeo de Tono:" } From 545d062873d9b1279db6a8ab75ac11a25384d07a Mon Sep 17 00:00:00 2001 From: Thomas Schwery Date: Mon, 21 Sep 2020 17:05:43 +0000 Subject: [PATCH 339/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index ee1af587a7..bf80687183 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1379,7 +1379,7 @@ "LabelTonemappingRange": "Gamme de mappage tonal :", "TonemappingAlgorithmHelp": "Le mappage tonal peut être affiné. Si vous n'êtes pas familier avec ces options, gardez les valeurs par défaut. La valeur recommandée est Reinhard.", "LabelTonemappingAlgorithm": "Sélectionnez l'algorithme de mappage tonal à utiliser :", - "AllowTonemappingHelp": "Le mappage tonal peut transformer la gamme dynamique d'une vidéo de HDR à SDR tout en maintenant les détails et les couleurs d'image qui sont des informations importantes pour la représentation de la scène originale. Actuellement, ne fonctionne uniquement lorsque le décodeur NVENC HEVC est utilisé et que des vidéos HDR10 ou HLG sont transcodées.", + "AllowTonemappingHelp": "Le mappage tonal peut transformer la gamme dynamique d'une vidéo de HDR à SDR tout en maintenant les détails et les couleurs d'image qui sont des informations importantes pour la représentation de la scène originale. Actuellement, ne fonctionne uniquement lorsque des vidéos avec des métadonnées HDR10 ou HLG sont transcodées. Si la lecture n'est pas fluide ou échoue, considérez d'éteindre le décodeur matériel correspondant.", "EnableTonemapping": "Activer le mappage tonal", "LabelOpenclDeviceHelp": "Ce dispositif OpenCL est utilisé pour le mappage tonal. La partie à gauche du point est le numéro de plate-forme et la partie à droite est le numéro du dispositif sur la plate-forme. La valeur par défaut est 0.0. Le fichier de l'application ffmpeg contenant l'accélération matérielle OpenCL est nécessaire.", "LabelOpenclDevice": "Dispositif OpenCL :", From 7f8019d01f73a235edbd3e7872cf44310ce013e1 Mon Sep 17 00:00:00 2001 From: Nelson Tham Date: Mon, 21 Sep 2020 19:04:42 +0000 Subject: [PATCH 340/582] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index f65bd6b91a..54d8593590 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1364,5 +1364,9 @@ "Photo": "相片", "LabelIconMaxResHelp": "透過 upnp:icon 屬性使用的圖示最高解析度。", "LabelAlbumArtMaxResHelp": "透過 upnp:albumArtURI 屬性使用的專輯封面最高解析度。", - "Other": "其它" + "Other": "其它", + "EnableQuickConnect": "在此服務器上啟用快速連接", + "ButtonUseQuickConnect": "使用快速連接", + "ButtonActivate": "啟用", + "Authorize": "授權" } From 746793ec6f5576c3e5cad0d0f07e663c88d012d4 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2020 20:37:27 +0000 Subject: [PATCH 341/582] Bump sortablejs from 1.10.2 to 1.12.0 Bumps [sortablejs](https://github.com/SortableJS/Sortable) from 1.10.2 to 1.12.0. - [Release notes](https://github.com/SortableJS/Sortable/releases) - [Commits](https://github.com/SortableJS/Sortable/commits) 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 d0d0e796e0..44b81ed2d2 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "query-string": "^6.13.2", "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.0.2", - "sortablejs": "^1.10.2", + "sortablejs": "^1.12.0", "swiper": "^6.2.0", "webcomponents.js": "^0.7.24", "whatwg-fetch": "^3.4.1" diff --git a/yarn.lock b/yarn.lock index f88fa8b0f0..4199b1779d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10300,10 +10300,10 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -sortablejs@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290" - integrity sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A== +sortablejs@^1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.12.0.tgz#ee6d7ece3598c2af0feb1559d98595e5ea37cbd6" + integrity sha512-bPn57rCjBRlt2sC24RBsu40wZsmLkSo2XeqG8k6DC1zru5eObQUIPPZAQG7W2SJ8FZQYq+BEJmvuw1Zxb3chqg== source-list-map@^2.0.0: version "2.0.1" From 1350cbc4e4d30118e874e1ea173e842a85fe16f7 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2020 20:39:00 +0000 Subject: [PATCH 342/582] Bump html-webpack-plugin from 4.4.1 to 4.5.0 Bumps [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) from 4.4.1 to 4.5.0. - [Release notes](https://github.com/jantimon/html-webpack-plugin/releases) - [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/master/CHANGELOG.md) - [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v4.4.1...v4.5.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 d0d0e796e0..216273a584 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "gulp-sass": "^4.0.2", "gulp-sourcemaps": "^2.6.5", "gulp-terser": "^1.4.0", - "html-webpack-plugin": "^4.4.1", + "html-webpack-plugin": "^4.5.0", "lazypipe": "^1.0.2", "node-sass": "^4.13.1", "postcss-loader": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index f88fa8b0f0..f9373a8e2e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5569,10 +5569,10 @@ html-tags@^3.1.0: resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== -html-webpack-plugin@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.4.1.tgz#61ab85aa1a84ba181443345ebaead51abbb84149" - integrity sha512-nEtdEIsIGXdXGG7MjTTZlmhqhpHU9pJFc1OYxcP36c5/ZKP6b0BJMww2QTvJGQYA9aMxUnjDujpZdYcVOXiBCQ== +html-webpack-plugin@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" + integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== dependencies: "@types/html-minifier-terser" "^5.0.0" "@types/tapable" "^1.0.5" From c17a9d36adc1fbc86083af30dd373261b6d1c13b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2020 20:39:46 +0000 Subject: [PATCH 343/582] Bump webpack from 4.44.1 to 4.44.2 Bumps [webpack](https://github.com/webpack/webpack) from 4.44.1 to 4.44.2. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v4.44.1...v4.44.2) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 15 +++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index d0d0e796e0..7b114f7b9e 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "stylelint-config-rational-order": "^0.1.2", "stylelint-no-browser-hacks": "^1.2.1", "stylelint-order": "^4.1.0", - "webpack": "^4.44.1", + "webpack": "^4.44.2", "webpack-merge": "^4.2.2", "webpack-stream": "^6.1.0", "worker-plugin": "^5.0.0" diff --git a/yarn.lock b/yarn.lock index f88fa8b0f0..d064761701 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1297,12 +1297,7 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== - -ajv-keywords@^3.5.2: +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== @@ -12002,10 +11997,10 @@ webpack-stream@^6.1.0: vinyl "^2.1.0" webpack "^4.26.1" -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== +webpack@^4.26.1, webpack@^4.44.2: + version "4.44.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" + integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" From eeb5c84ae7a3b5371f1216e2dc25ef2739043817 Mon Sep 17 00:00:00 2001 From: Andrew Rabert Date: Mon, 21 Sep 2020 17:46:51 -0400 Subject: [PATCH 344/582] Optimize images Used: - `oxipng --zopfli --opt max --strip all` - `jpegoptim --all-progressive --strip-all` --- src/assets/img/avatar.png | Bin 3571 -> 1637 bytes src/assets/img/icon-transparent.png | Bin 39651 -> 23534 bytes src/assets/splash/ipad_splash.png | Bin 44353 -> 30256 bytes src/assets/splash/ipad_splash_l.png | Bin 44006 -> 32817 bytes src/assets/splash/ipadpro1_splash.png | Bin 48759 -> 35139 bytes src/assets/splash/ipadpro1_splash_l.png | Bin 46324 -> 35577 bytes src/assets/splash/ipadpro2_splash.png | Bin 58190 -> 41737 bytes src/assets/splash/ipadpro2_splash_l.png | Bin 53247 -> 42460 bytes src/assets/splash/ipadpro3_splash.png | Bin 50458 -> 36223 bytes src/assets/splash/ipadpro3_splash_l.png | Bin 47044 -> 36299 bytes src/assets/splash/iphone5_splash.png | Bin 27006 -> 20176 bytes src/assets/splash/iphone5_splash_l.png | Bin 32486 -> 20616 bytes src/assets/splash/iphone6_splash.png | Bin 29236 -> 21658 bytes src/assets/splash/iphone6_splash_l.png | Bin 34037 -> 21777 bytes src/assets/splash/iphoneplus_splash.png | Bin 42934 -> 28756 bytes src/assets/splash/iphoneplus_splash_l.png | Bin 42309 -> 32056 bytes src/assets/splash/iphonex_splash.png | Bin 42405 -> 31878 bytes src/assets/splash/iphonex_splash_l.png | Bin 44968 -> 34548 bytes src/assets/splash/iphonexr_splash.png | Bin 31989 -> 23870 bytes src/assets/splash/iphonexr_splash_l.png | Bin 36913 -> 26684 bytes src/assets/splash/iphonexsmax_splash.png | Bin 46402 -> 31165 bytes src/assets/splash/iphonexsmax_splash_l.png | Bin 44271 -> 34109 bytes src/themes/purplehaze/bg.jpg | Bin 300045 -> 198076 bytes src/touchicon512.png | Bin 38341 -> 25694 bytes src/touchicon72.png | Bin 3524 -> 3516 bytes 25 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/assets/img/avatar.png b/src/assets/img/avatar.png index 0453f2489704e37852b32a4d0e0a50e01dca422a..4023d1c5c7775388429a9f7b252fe0971320b75e 100644 GIT binary patch literal 1637 zcmah~Yg7^j6h_kwkxcM`nE3+K#KOYT9;5~#p=tI~$5hN$Cnd(L~<_wl5cnvT@f9w0^hPmM*5?i&39;e%v458|R3%T6eJ_u|)QmS^v9JJD~} zhp_=xiM-sY)vuEd`!9C{PyfilM7MEC(>SW`Trkn}u9SObdK(pXYQVqXa$B)~A3=6; zN#uc60X_=JY~X!wQCRH#HlIaYU1uF@+@IGCsJ9Q;L5mS1Nic7BQf-tJNf3IiBb|-P zM0yJ!Lnw`+hLX-~>zPMp)|v>2q;ir6=nbB^W?1fA|tmTv1RX0y^47f&D9UJ6P zJA0yvR3S|5|Dn{B<1#y1g-Wl`DIY2^O*^_sE6{h`obqnIb&|bzc09pc^xnDsY>Sv3 zG#CK_9U9?aM+VbOHrjzVwnVURkytKhn36O&$p9T%%)=)2rH$BkB+oVb+ypG!Xni`rTS@<^*N4+zu5$GXPU|fqWK3Xa1+C+`Y z|A_;k3z&7hplLm&(&2oK(u|Q#mIogEv}t)W#j&oj-)WhBMoj(J6)MY{TYvgHi~nv zC6BO6XHbX7$9hnxw~?QnM^uJw$B1qP9~3r?^}(Q51D`OCLpZq}IS{CgTXt_XvU(!X z`4>MXQU6}zPRkd=L0gm?x=JcRUo|2P7|7f?+(X1ckmvc9JY~`SZWX1&J6WVf$r-+svP600w#>E`_IW`kFrqRKHd)GD zU4}5jfnN3f-u)C=hX$X1t#qWIfdQCHDvZY0WG_gIp`#}(SnEcz#yyH|hWJ3t=dkJ~ ztJ2j0>M;2#DR+-nY8&8sF%dl>en=qB^rCYnOQAJ(cR6Or(XQ4a& zFbmRIx4`$pbF@yR?{1yPb)h!EsqJi;h7U7%97Q5)FGY@Z4^tR&c{I)W~rKFR))3Km62hmhdRz2vuLZ;;N2XAM)}UcU;kU zWol=RxS`76RbY0!aO<5r*a*<{!1Z|PzJcr$0b6E zJffsXt(R!rolngC;QZ*~j2&*U*SOD`SvJ&3e$iCbmKtOZJ+LHl?bF{!*f9kpZz1wG zd&+nO&jbW9)VUeKa8dBeL(dCI+ZDVmF~LDn)|8@7V6-)us73VB$-1$V>ph2fUPxNr z0{TjpeXdnyk%{^4`3~!*oAT_l3@#;_p)wn@+a5Aj-EFN+zHa40=c1dX`EqMst8|uo z;Z4fwK~K{WeyWkDoU^=RcyXOAK==Pb|H~6tBlx%nkq^#P9xJA;RV2a@e7#RZ+P|1? B&~pF) literal 3571 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 literal 44353 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 diff --git a/src/assets/splash/ipadpro1_splash.png b/src/assets/splash/ipadpro1_splash.png index 9e7fdb7f6ce019d91498406c42a623475c59af02..c5afa50986f7d924a7cdd2c5bb8ea7aa136e179e 100755 GIT binary patch literal 35139 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

    @A?+Li)u_6FKmVst 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 diff --git a/src/assets/splash/ipadpro1_splash_l.png b/src/assets/splash/ipadpro1_splash_l.png index cffad337c811429b1f2523f3668eb606e892f969..f5ef6f3b04e730471a66500bad91b8a4c3df92ef 100644 GIT binary patch literal 35577 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

    U-_NlbzOR84Z5yYy`In2uvV2vzUHU#TuPMt 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 HYT*9>=33PG literal 46324 zcmeFYcTkgC+c%131B!@>g3_xXz4s6WQF`xH488XjLR6|!rAmz=z4s2W0n(*Q3rH0L zgdS>g?y&c>&-%vh*h+Qhc3c;H#^HJqg-Wl>35u6;*Nb@dazL zi@AFEJ2T`d$(e$lHF?2tg z{`#cHa$AMSS(NC)E7P_cKVpakswyfJN$q+rNZ7#g5_T#2N|@DT!M5KG4lWXDlHH_M zAv>(bb-JJ8^$p+O?X{$M$ZA0Kmgo}^lgkpd0z1(Uq6l*(eJ461&xR!AH+mqt05+`>Dxba&AUCt0PiTe%R2;3+wJ+Y`Hbv`jd=lKP@3yE6pLC+K8 zyyDMX9RDqDY5}LS3`HEspA2@uA35-5Xg% zpJ?9qy-~TPSLyY_G&v{WsaJ_E10ts+p}%`UBf?-ze&Df)AL#|^t8Q;YSr#8n4^9n{ zm94Q|3;Z5;>87df_h*l}4&xqOl)a_(2F&!5v|Zl)^PD{KO=YIfoy@xazK_HX<33zw zxy{NL%Oua7tx0tAcHE=OU7B^bPl@k+!*}yNym?jgGVt^l*+q&$uE&A}J);a(Lh`B1 zy`(mGJuf>ell%zs5}|)cGIXIvdPD8xn*ND6Vmrb;bvw>IbFixcq}HN%pa3@g_MYBIxKL7_DI<0Xr zOeLvRMNhnR>f~pw&8U$H(|sIw3X$tJt`1x7rjl+__)(+No?g#Iv@})f> zAu@mKm8_bPz`a7Ol=~NpOU`2f2e$E<(LNGIz)-m0dB=ROh#tQCjf>`$Ac`WRzk63= zPn@dyuEaAkHz`~Po#Ta#{ZA8^%U6wF-}-pr#f9rNmPC|>pNM1JUP{aS3V#^#{Nj9E zh?i<8Q6p!_HDLh~GOZZpl5bKY&xGrqbF_8J*36Nr&vRsSvYU3&du7vV42B!{Y23IR z`Galm3gwsh3f7D(zF*QwndDyEvAk5|5PD4~C&w8f`OV-ldu3VybKMQ{Zxr8{=h@t2 z8dRt6Gu!}uBb%pJdP|dY!Crkb;iHnPP(&0uikZ6(y|YqJ~tB5z9k- zHH`F+IEF6vz_j z*T1euuDcvSWB58>E(|EmFS=8C6iKRO2xl~BAV)?=OGjZN97U0%)CC5`7(H+??%`Q! zSXNj9u?D0nOb*i6aXp%nrd|{`G%`{%er=@pN1`L&xYG}rTz`w*=;XFB&Qe9*4`YF) z#-%o;+{Obn6O%rZk0y0$RcecCu#OfZo1>QKpXe>GL#bUa2k+~v(<7_nqvPJg(ZjqW zW_isj*o;j|P;yqQc|n$DxvFb1>Om_XOnLSRBA@>UUKyT_yLaYtDeq(&~^A`8*TYD z{IBbjw5 zuXL_C8;x;ZaZYipN0rTN*0u)2iq4*&P@QmG|4PR~uS`!vzbWM)72}(+X^8Q2zU&!- zjX1qY`_$BfB~vEDBhw+1Pb#55tN-~*bbrcIp(n>tiBTnt{=*7i*}vz0%N<<$%=uAk z@FP{U!@Yf{nvLI4gT+tkV{waXzl`Ua`u1bev!*WBE4YNum^Vl_l1)3#lt&NJQHt5% z-i-+kbV|kEiJlQTNDgm%8rAtcRxCC)%REbH;Qjyuze%}jxm0;NiWs$x>S-A`76^O= zTRx%N_D7>vxv?`VC;5m-i?&%lB*y|>$LkJf+VLgVjREZJ{Or9?* z9&b}za=sY)a_SNzNi=CU*(CiQ&reZ9sz8B5(Sa246knE*t5+xrNmofn$<(fwUTI~t zp--k9yE{g`c~e&U^zmg@7Ov-d-})4H6(3p2Tg_fBzv9V}5i=B_998r>;O@q4-bh(G z`3}_xBT7&4F+TlUQ@6q!zBh=vW9RAT^E>epZzTnTo^O16dd206=dDS~ead|HP36F( z+Zi=1tLjydDwalG1!-#!W%+LONZiP1VW$1Z;pMzc4RJN<{Cb-TA#I^L+dYk|nKdrj zSgY8sr36=1_jf{`-HnBLI%IhanR%dSurvHVtFWl2!7@n@9WrYcaVJ$TWt3y?${1PJ z)k~p{p&%Ccpu^yT6MlVkLc`K!6i0qc=+2bFo1mK2>J6(wJJ+2X{mHLEy^tR zHb^PkG^VW1^XK(-Zl6p+=aotuh}Jpm2J{ECANQ~QUK=B?qt$mg)J!n(Y!z$p(a1EK z8EP7*4W%u2x;i~lGZE;ywCp?k2H9H69;o8k3WJU6FOS8S#@6LJIpX_In!`5ornu|j z)65ftjlz~ItHkADVP-bX`XcesZ#uGO5_~O=WfxDz?x*DOLZc3JH`~qIQM2&xr@uPd z3SiDBtyppT3TaJWP5d(j;X#?=#&Y)h+-lL*{hbe2!Y8kv(90e!6fpYIRZ3|?N49>y zfn-3eJBedb7%*UF&>&Q3#mZo+rcOG4NZm{twC&ZIS|Dr-zk0H&3)MW?uEyEMX6%A| zf7@aZCjHPX*S0zLUvvBnNV@f{b-T9T-j)0D1G!&QI?ZH#tWT2?4CKpjUc5V#N9f9N z{#nH~cl7dNdS-n{ebzKz!`bP0yv6LSkz0y;{d`t`Yte}f7L6C42ScSm(y_9n{%*f4 z=f6suy(-H`-oYPyXkLH2{IRGrIhHo70W3L0Ip(>FRYLlLlVoADCb;lTM(+VS1pT4# z)&LpI9yT*zJwRg4bJDX|PS4-j=7f&LAn`?8qbK8cTvbu)f#|ckGqbhkPK<5fGgtvm zVt(P5h8AM;`t9r26pw^tiC$cMXk&Yc--jq|^#zXog|JfN$^|0QC6}w5_~27ti$=1G zL^3b$6I~(l<9N}^L3Bd-LZ9gdH7VO)ujqtrerp@KAKdlLP1a}qR7G>wPwR3;Zoq0HA{nrsnjbFlLINBil2$BWStc1jDPRLpomPdpGnGDr5ndDtPteHgl#CRcsA_7d}l6-<<0wSV< zJWN6Yg5vxFqWl74yaIw!0uoX}f=vJXumGodSlLKvKYsGhS-@`~7CSF5Hz|I8UteE7 zUtvC14_kggNl8h50U>@NAzokwucyC@m!%)Cizn-Uc6e;<3GuLZ^Rjn!VIu5k`P|jp z3&aB4^luWJ-TvLy#q%FF0Sx2!vvlJZu6v)=t*W)-GP2 zz*@n7*SgucdbxVqx&AM<{`b%S?ErwaYHI(U@ju?h+4_O{n*mW8pHyukmMB*^ckdzW8JWB}({Jm7o)ym$+|9@I4Dl8=={@<1Y zdShkjW%>WQ*a{+L#l@bSphpfe{LyYDIhG&D=29x$SWdl^_*8i93sIhEM)my z5Mm`LY9nAtQ0a3mky5nx1mx%ckCEtDyZ`g#WY2W27*duHg2IDXAOuNU12_2lWBdPs zAOA-u|MR}Doi(uO|3>(KALHq2Tg4nQ8^@n5V3e)$)z ztzCevJpe4eFWml%h$tJP^!SmkU&i{3?K`V+7~^kGX03&QW{1m1ln3eLE6<<@1T z7i{kyyvb2~bF0)zrE0u}w=21Ir;Mk(C6>oTf4=)FmC|da+X;^@K4!Z3`r5S}rc1#} z?=qSW|ye7_QM{y@aSapUhlMr1rBJ^zTw&7{VVcAaLLh7W`qsA1(M}2m}uN!Gb?5_@f2?zcd8XsmJ`l z#h=;DI1lR&fITNlMnUw|@}wlO8!*dR9Suyt;`i-f%2p8~q8ASyGF>JjQZ+ACnle)1 zZ**%37d8eXvo}QFnv_7pd&C?vU71^LfT%s~HaL)NUHRd-P~!rSq@;1qjEhNI%eCS# zt0{hOUsbYIl!o(~j+ddSO-V82Sdx2|E`F=mks=Q#K}7VaQ2G3giq#F_pyMxa@71Du zcBNZ#aEvX}j*{GQMMKf#*Lk_`H4$?0CFX8p)2k|s@S{zXGRDv85+I>ll%xQ8l=eXb z@fHnx^%{s~<{T)PIb;&0A+}>Lpg&A!ECU@q&ZU;Yt+hTidjN2B*O9ss^|BNs;08oDM;GHNBlG6cX9G(%M((K|zP1X0b8L$-ry(LFY#WmCbJbqU}HI!g17^A#{@ybQ$wI z<(zvdJudArisSL)b-&YI8cZ>K8&+qrHK*uJo6W*a!)w9iPox-hd=mEnNl zkQR%hU5Z*74K50AAN>urKl&mpPbzH=t!N|%UQoS9=%ziBX>mR~DWBc?fa8b;-U1c) z2wADWBx|Q8OLDwfYU(#uNf~b8H#6Z*;QJ#2-=iA2_08eKsfZ$So1N;6IIErX$pB5o z@!&8TmC;}ilgGtWuF!=a=<-efqOKXjNkQi)Ic35plNcpWsN=1eGPFF(D-LX=cGaG(DP(q_s#OUx|-$LySnL1xA%hN z)?ybkE*j7mt5d~T8$VVWs&YAM=idkj#Jo&N|H%&A*6O^0*wNkOpAPoKtxOtAA7_n` z2q*15aEtB)u9@^IK=XB#7T#Kcm$ww1Vs`umO@VaZs(tHn8#ub^T$v%yCwldeeuKyj zJIwVDgN@FYnANmJsIIEN;52oFi7mkCGU` zT5&5)llh^VZZ0N8pA&A!giiD1e>RM#?>Q|gBpF>>dxvW)#+&($uMe33ynUxE5&~$d z*4V`4kqR~bAp2g=aRB&Ch*{0~gYEBynIedMQgpl%d%C^Ak;#ht4 zWE7x%pGKGnaP&myR=h?Q))Bpe(1Ttz4UWsZ75`;nMu<1NrBd0U3dx}BhW{~_q~On+ z%@%Sa58I0nhD;o+1PPSz0*3sLyhK{zyZQX)xaAvifN-zMrLhgq6%M$Djk8=`z5Bq{ zi7AguF>ATc{4E>r05Smnx)nJ1AEg>GtzPS>cRkc3{m{mst4BLDvLCe5;SuB8(`;C< zZb%w!{FwPl54H0I+z;#6jNoi_1&HoaKi969YAUm>1QR&3lCc96yx-Y8>IDk}Q8}2? zXiXFtQxtX6nlvs>ulUL~;O88z#jXQTdh~ZA`NdtHw6^sHTfFkn5RFi1dd;hIRx7`j z`%0xXXgH%1%A5UC+}YU~KAwcPS*~ICF9xW67eIiZht*9}P+Zp$0=@c<%E3g!e^n)V zzA~!i^gbx#8t!{bA|GvThez1(1wDh6DBAL4183)cT|n5+=e`5T`Ch5Zw*Q2>c*TXT zAvpiOM^}hQEnxA%`E$1$rYkkUR6}NnTM$Wr+unJm>>>6uo-6&P2Zz=5BiLwQlRPSd z?f*#hEyI7e=0-`yEiGb$vXCEJA0`aeDeXDrM(q)DYhUnoc4L4gx*TkwcT=x>}^bqp1& zjRq5UCiBa#B#qZ&rtsRo@_}0jtTxIMkn4lOaB|RThJ{jmP8&mF5@KnD-1d2v*90dP zhSqr5WATQGfPNW&*S;&JHQsISI#Y+t;x7KXt@RdvANWCj`|2d zpHPv}XZf5tUDuX#BqTY$ERl}`(0;Z1NhpDzz4aFRWBx3k1nN^V9D)hcAT1Qdvoom#ryrr8=l@JQSL)Y?4QL zRApF2RK_u=tc9Ve+}cACnc}``C^W!_gtT)X5Vl!okC0s%pPHPMM?G*;@ZDNG?RCA$ z9^D~?nR@S(n8iz4u+|?_OkYq;vfny6Hg;6UjkkVk;@giPV8OR@#k5b_dR>Z?fggYQ za$U{*_?Fyn06Gthy5jP16%EHzu&S>>+%So(-{kKb3l?%LpeV5EGxix}M`rAf6O8%! zCP6p41A5ZZ%goPWyaW>Z&8}kRlMUFx?Hvsp3jGU@g}Xo~-jNphT5JOJ zil%vxPMnOjg@Z&gh^LI{eK(_{GrHxV2tI+@{Pq_h2ZwW4AYT{~>w4CH1R@*e_>v0+ zE0ASCap38S0h}EGa`TmR-n`j4j~QMzKUx#<)ANE%$U*-;>pKS4#BN{SFR0z zq0;IzL|M8^cIl}7PNIB}+hL<>@pB5glVrenjX+6K7;u$1Oz+WDneqO?4LKNy6F*%S z54k5_8*$9x(D?@a=w9es4I3wk&goH9oXDZyR2{;w;u!=5CFs&s0uz}!qheAS!6(%6 zGiHyHTA(l1vJ-RS6Z%I;gu6)P(k7AOw(lQB793PGFkdWsMWy9aa@>=XyOCCmQ!p{{ zMd<_gxSvJfXo1cZaN|C;jdve8vnPp$nXJg+Q)SfW1j-?+&LL(sILNNxBwV>RVh6vr z{@P8c@da0xlS4;uF15w!L<<cc^HCpf(R>G{RtH9C&htRoLJ0mIce~;ASeD>V_Qql@!zC$QjV?&KN+9z}xe? z=&1}H7gpo#pE}yk(95if6l{59vU$6hyq5Npn|ZkQ{KJRNot@M$-t5!L-hn5)*%<*p z-j|i7rkEWSCw(yoF!a;6b4Ay4wK(~_RIQ)V63j8ul9;e`J7#GlxJWr>v~>iCAOE%y zBy(YflWrV@S9)VQIvtg2MzGV6TZC}%EV*vmWNc5$mUB1KBRpI2tvswaABUKTz}uXC}x8mxxFX+uKtlRY)k}B|KPrq;&jOVq@I4XO}h-=PJ0PY&qOqeL6Y&}1< zG_!dXVRp)B9G{%=ruQLJB6etQfsL{hUS1kD6K3?n z15<8ak7!Xdqk_EEEid!^_ut1uCYIP6F+ZNIf7@oYIBQ1CATdW78h~4R7Fg@!?X9*) z1JL$*WN`9`jQX@As^18v!TlGIv%GN>Or_Go(aR{o1QLYYcr`bEF7VHurPSllPc0fY z4!c4o|L2q``qbr7epesy6+fToR*G!>xG zpy6eDu)EhvF@-3Kpi72?Ao$Y*=daVejHn&qu4nOD<0q@*oIMYQS(K}^l)qM{9LS!n z%$}?aYy>u(KJh_rpRx|1TAY66-2;&kL&4;iiUbyaRv167eQmIzLYCs>kDHi^WtcDt zBINWR&m+G4va+#Fi>BZ80aAHbu*TB837t8DW8uvnu}ZDP1^l=)5QHg*Z>5LFvWL^~Cv-e{*p-@%|V{o*$&#XU;%4hI&BLoxY zw&}JOfKNrBYUbACEFzUggRf2sE5RPdOY1)nA2TTo#C`zdI~noysP3+}8wIzxG}_!c z-+m-9;F+O{ce`wy*PHm$M2VL!j}4 z0+P@lbJw!~9}6hW+0X5SPW*BV9KW?&FVa{T1#)dUTr1-k&k9mSN@=y;v z)}WyKoF`Qb@@w#`>pJS_C+9kWj(6vDbQ{S+_B;D=?Q8B1g~S@T2X0^Qa@*a!6TN?M z5cI2m)_*-$`iZsUy_4%LdprFbXan=Xp`kQ$=UN8c=KQ!A|1ha#m!A-_WEcOakv34`X9V-u8QuQ~`G@n%m}x`Ovs>Yee=t4+98_CXqq((YF6_AB~V*B+&g z>^S#Gr9Z&uL|h|FLWo8h@aUWh=OT_-v>iABQ>mH=9ku{bqRXAoCodqX0nyzH!w;h#|;2I{#$ve5F8CTac8vQ#)wD2m7doIq_IqR*y8;fahCEE#Zm1?l~#OJh+9{)kR3zlA~f3%FnpY_jZ zBzJqf0cR`QlvOC`%20igG{DJ0J8SL(UnVCKxJE-TV&%iaYPj`L$>``xA!~nC{--5d zN%9Wu1R!yBrJFe801%HPcGEHFDeJI_xKuo z4?j?Y2{m4A2d6V1D}em`#Roe8Q6HYx@ion5uv23}W#uGGs7tzlS_)lI+IR@m1xoRB z(*Aq=E@#oOaG&dNl8>u%zsxM~o33=y?rb6RJRIc=A_B?BOm8CfS1Vhn1}CdsGDP8D z6|sQI2wWqmeT3;##}yJW*!}%tU5U3L(}|o`#*bGKU0WT;K|%W{u%A69ffen8f5vSy%&4Ld}g->-XT1H0-kdmJ^F z097Amp*iFXqeG{OVGjo{HCw=HCeDDpMREwKg`kNTq(% z4qHxqK7Bd(G?wDD>wBGm&t}645`^D5W2PP2<8H)`xZwwKOoNNyP78m5M};ASisAq# zG~W=6hb1}Cs%M}UfILv4^gIvD&@>O5z(6J+dk6Ko8nab~Y&x3-N+%+}@+PmvDPZrr=hvPW0aThC4QJUe9+|Li-+w>Eo86nf5(7iO1p8YK z9OU^3b(qiYf6K(4#>Q1+Zve_XPorn^IKtk!iWuH4&P=AA_CL(@5TW{O2Pr6(d4H8~1XE zR#<|n2%{-LRmJFpjZz3l`B~%98qpnLz}<@opmzkVl2}vIokhfj6|{Q z1BaW|#Euq|xFL|Q?Do=IjODz{-j7+#Pxq6#;WiOY{EwEXFT{EqwyB^(er$KPFyGPY zLBGA46M#xg=dK`o=d&<)cw!8G?P0>xj3tCn3Q$2zioQ-aagqxSaxF5YPkhVvE7=5& z{qe!C=y4_S&+H;7=w^mT#O{w&esrDo=)s#6>e7f65C=&{0h(r0f*E{MjS_`? zPFp?z*c-<}Pz1%A`=yN2r^CS-WYyuap-(f|8<(=0j8(O}Xq(So^Si>2$}IU|@&2o! zPzLB?aj*dixmHbgO~h5cd)?p7brRbW3UhP!d%1%uwf$rPKmMuWTp4b;nqYAX!x}0C z{jx$oI)bDkYU`IrY79L(%_r&?Oek>n)l={2Hrvq1P1L^Equ`KoUV!i$|`PHxU4yDLb+ezvCXeR=a-2)PJ zv-4!+y%9oUB}F5>G8^M=zNT495*pWNSTJH(0OH|WG%edL4ac3nrFLaZYE``zPJt=h z(@)OuQRkHSt1Mp9oF53UwIQL_A6qKh5T*1pyrr4tn0Gr*w*W>byd>oCs{XdTQgC!O znGUk3c`*;CS=Gea|E5!jBy+Sj!e>2jv2Me{$%8uKhdjmUXn$txvc<*Q%3=jo9Q#T1 zDsrTjM`N_My%sYg1cQ?!C3uZ@YsLw6*v##&&-wBhX34js*_UD@R2;a4U@@5zJMB=M z4m-vpqp(c7@N{l@R?_`c5hxx|=H;f#uOf~Viub}1Fk}!fuQP2qE|(N+1O#}~1lc`v zX!aRxrcwj*?iarTQb03A?}RmwWAz&PNL)#}(Y8N_*pS-N7B+d;dw_xdYJ=juw(PZn zxpLE*tTkS8^B6B#`@v#YGU}|in~KwZ0t|Tg_jQNze0$qmHlQR3o9c|HFRcCXs%ttT z`m-znJEJF?e)HU{#wUr}zk@9T_H#+NyaD4qMW+?T3SR}91$`$=v8BzY!o1FzeNKce z2~m*F&y)T`LygXw$=RI9`x610qZP3dDr=oU&UlK&;(|7fY~2f|4_ap>efH))p%Su* z^^RG)$AYzo#3e=fXuStat9GU-MCySu&73Zw_wb_7VX4HMny=Yr%YFtVqO_d*s=6m0 zKy>yP30gW_Ckf7P;IqM#7TklyA1@6U8=!M@4PUbLHl8Npwswsl%g2tM%A8G8c=s9p zn7$9h4m#&m#k@S_!?|UIi;^*M*610JzmHL2B~V2WmS${07sBlv$aK07!jY$wJrw#v zm4;ulM=Q!5udY_+9RI5K_9|~%6z z>}&gKUe$c7Zz8Zz!6JrBbj>i zD&WUltYviQjWN@M)w+Ir)>+_kZbg4@xZ9?NShw3KIa8C$C>RT_3WEWWkp;yu?js(( z1k(_&#ud8EZsym658FTIuf}o`QqAF0yeS}Y#@I^pS) zy1jQ9GVXhw;KQ$RzMr-Ay3lEI0VQ<|x<6PP>>Vv&N49B%Fwkx7CV`2G?%VbTr5UY! zK!~{pq>|lHqJVqLA$vm6>Na(df^l%TbkpCz)0rOxgQ^8{0g2R_4(~Wiw<)!*q1aW+ z&tb(jS#|ziK7en_pdsXe0-`nbHM14JIEWEqs`NV=FVW>$B6c^~Lm{2&bcAj=Y_T|Y zFxK^izcZGep~x-?wm~g~y9hA1y%PhuB}edaIWVr!xAER6a>cn}e%``R z#MR9D8Ebi4+gY+SuE(*N0r5#sFF@n;@C1Lfc@Jt5OU3U{m5b z7SBF~+8vsK5C4rRa*hTDYb zuO1e7sC zlaq5J>-#h7Z8|-DRiB01V|ysdf9@TO)y1rPtBsD{XZHMN(cdmNL4h3n`3YW|Qz~qa zo<8ZNcs(KFl;w6_sv+(LN=5N->s$nzCmH{v}^-Bxt)2FzfFmk zcSGEKH$9&pl&>07Yqe@Lj@D%ng$w}kq zVF|_f17Fkq#-;pB6UO*Oi!#di(8zwjo^+hEqvMnWpKxv22@-#jr0j~XCLR|Z#eH~L z9PEKpS+epAg?NsciNPk4^XdTtzn#x$Bkb)22R?vNQX4>LE-T*RwSfA)^H$Kj5vJq$(*{u>B-N&x6URNSJgz`0P`P zJXcSlO7+!OO}$Qy*Z4(S=DP>fRebND_@(-9^_*a zB%hbrmDDMSKvwf49r+!D$N)7dIY+B|-u2iP=b002q;i$U8@_iBM3dn@M);rNjHlHf zIbuZ`L*GtR9H%*_&l*^~Ei97e;S=^b7^5gRhxIk^h@lS$gQwt!9G3>FNRCIxgNv>T zwJ2}&dzlv|5;CQ@kZQRqpD{MwbW-Gq?Q#7B2je3#^p+U$Ww#mJ`3=2Pv7qJS9}Gwmg59c z^vWyGMyE?N{}*{HRzP437FAp;;#jTJ#A96J5Y&S%FQ^8qZSl5FedH9W6V;i<_aF?|AE8cC&&H zgPCIvRp2=J%*#K)W?r|RIY<7k>5-in8k^Xo`q%b{8Z8$zyz0F7K`uX-t}r7X4W%TC zDAPN102H1enyov_o~9X|kk+!5Vj9+FRS|XXF{^Hyb6t$-V$LW%*JFdO$8;a+(CsJY zuw#-!H$Hqp{VA2!>ja|VuSx~iY6_)nc?|tF)jn1Ln!+S?4(X;;8YVt~6C20fpJD16 z3ofED7f29Kw(5w%GMtRb!^ifnKbepB4070hB`gQ`iB|)AI0&+LQ1PQ$_A?N7i|>f< z{V0XI&3~)ZjDzf-X*4Dfk#)YI(N*EYDXOgWzU2q9mx#o3`K6?b!CGo_OEK<%4P+AE zF&EG&B_Us6NV^fVbx4h+3(W1>kNvc&Qs*qa3;M7v=qp-fukRl0fUb+>Gxj*JE33_5 zb!}-`_)vbE9+M3JX3+)oj?w}&5q16dfaAV%t^>Lf5qW;rTVM{&+04swc7d6O&0c}J z_jasxF$YP^X5&&Nzewf5&9%*UN69L1Q6*!!-zu_2=}tS>vy>I%bC!0BgIYaVXoNLT zM=PDzF+hH-=982tP0pXskO=iLwZV|px8_5ZvzL>BS*mYOmpXss>NrWk?{~Pf$QSUFD+Hdn&&N4(W$iE44x@E6y4v~VUv4*rI_zKCVeq^*U|kN zLXy?8yG#D1Q5ILn0l;srW?rs`8p$^dZ{1}@SEP}g88p}-?0R=J zG^J|c19BF5G64jddKBGvJ5XeJ@{qU?f0HtFTD^ye7{J8Ga_3|{_V{|dH_8umtcF?< zO_iFv+PEbt^3FDQJfi{4zG26=Q^{gJsTGK*kvi@*P|r=ZGW6ZrbKaVc46<1+8Gh=# z%C5&1JF`P_78~AOIfMwp?`d*epsI_IQ$fe~fCs17E)cyaIClWr4bN8Z^w^fIL1kVM zD_Ll3S1BYanKJ}z*X8@5#utynxs~F@Eq1t_OE;MLkq=~-`R*MUk|y0So|58g+A(+| zlwVox*f~=Uf*P!SrI0M7A$Zulg9xWn5u>_I{ }7S_n<6b=h)2J) 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 diff --git a/src/assets/splash/ipadpro2_splash_l.png b/src/assets/splash/ipadpro2_splash_l.png index 588902a2b11e245b70891f8ab006bfe66e1c28fa..ec17e3e81ba170ade85e1b3101ac3f71aad6fc81 100644 GIT binary patch literal 42460 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 E2Z(mOaR2}S literal 53247 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�PvWYbq*Wi1Mt2mY_pj!iU|wFJ`UWLCxu>4AZE?&pK#YYn zNR0-W8Zx;jxqePG6vWDMizcwzyTm(2RQsV7{9iwKH9z2C`N1`G{oIjRMBg#ir;hjR zU4*zoHd;DRnOpd*vhbaAU=Aa7=xl2QYfFL@<qu( zNw?cOd)bB@BU(ioxx+?OnuRKpSn-IEp~{_@HLl}aMZFU}#pRs5LY2zfy?*HG2h2wI z%I;&^l)&)Caa7|~LHjZcQ7rR*luIei;$9S$*qjzYQld6JL)UMnFWiabY;F8bg*lu{vs0c9NCc~S~*mPOFwSjn@a1#MYOV=SSUHsJgNz|jt zP=+Y+<5Kj9iW6?zYNVIHi8(mDK3pc(Kj}c&`8;s!qhhHLKU`@E14fKnadzH-slTow z!4@^)Yxf7v4LNXH-iF1vm($mijK9Ckk7rPa>r;0^20B9tP(vn7F&kW}ksIW}8iS^$ z=XGd|PucqI^x@z@TyvAa0>~U5*7}AQlUTu_Pkv$8>D5kq`H~suql#OjK`U2Q^IquQ zTlIeh1x)Llx)jXa(^}-giZ~WH$b}CD*`Q;+gb_J0c0A43D zlBak*TK{Mic$8M9q$`IxP0?YpAle4!#csLKha%4|wrA@4osqlHI~C+UhPy}__@0}E zqw~Kjq-m-xLEaVI0ouNwndu<^2s`1qG>0eRTLx%|y(RbvEw;>3N-1C4jT=5<@bTWg zhWjGeFfGp{4Yu;Sm+x%-?<9a23L9jx?cN|<`EPgrNzrG zAP*+tsK6-B`-GcY)@biIsc;xgAe z$k`7)bpeYhe~>8Y)i~unq{^T;Yv&>q`x4(v+>u0d)@v}~D zcfU6YOB1>kaP&xyuC~5bZRqSy(zy-3T*xVau-pxgnJJaHougRO#70vsx8z8=;^sE0b8c zzHx6}&|7!Q?Hj7w4K82%UOcrHWaw^ELJT-C78V04`|zghZSU&$`$TI^dCFBBE6Ks5 zS|Os8$@JzmI2^}wEN{txR(aJM*b^)N+b__t5i#OiNvbnRd^8{ONZ4y#- z6(yeMc6?QoOMLm#9)Nc67Ky*D&C%i?@S1a6AfL@)a_uhXtgj3v*P6cD>XOBJ8}8YC z3B5nQ9RD`4v+9B3cxd3S_SZU}bb=@%oL2Oj0Vgdh9W1o7y6PTfZfxF!p8{Zl#KyyN zU(iNCP4UHhq2GN4(4W7iH_(HfJ+qgaGVRk5+FR*0*GR^yAM8k5U+?e=QBF#%H@>_c?)LQv5!9mCEzn+grLhJI`f2ofr+n__ z%ALiSgHOwo$i^4>aUd~{fM_1#x2#J%!vX-}LwP7+TupkVKzI>%>ixXL2g%lc$BVCL z<%E1)D7@(4d3XFqOZ7I%UW{8iYyf_JnU?iC3&09`aVd(?90Tn3CQE=yk!EJKcJvJDKf{+?+Ag*IQe*LYqR>Lb+#$bC2~`B>|#ZPE}x>e531=FO}Trv6EORhp5K!@4Q!lHU^!8i5liN8fFMch zNhlh=m~#1iKS1pho8_mhIzF_Xq2OHNOhgbVh^pvxmO7N zKxldj<^6`1RR&F%GhQb%S%p|C|0o#fSu8i11*tEmZYozMF%~M(2l0rxk>U4*RHt={ zPA_AAIq}>5K6VR1q3xzg75|APz2*0&n3G=PT0s0BAL_0X9&^SJ-7~>E6yeb=03u5I z4!c^k#>JzO&M6fKz0e?yU*~GVUU-mM7YnE+r>4!UeRxD)Y$-ELE~GQs-+k?9uuY=F zfv}G`1es$OY}$L&UoyL#bZ0ZBy;E3VDPy>tw*8?PiYgM?)CK)`c&wfz^9|5R4WMEA z63{W$)i95*(e0JXjj|0UNB2JiNbwD`ax3VPYp;T&1zrsbeG>5X#w-~ooV&i^+v}=@ zNjJQ>#f@ffg-4vKD`rMd8H|^*Sc!dJr%89YGV!2bs3|ov(J8j;JS~kgFmV?STmUKR&m40!ZX1Peg3q|RD z@TSl?fWi^qj6(`!l!J3Ad6dayC!z-0dJL#k2v3%*PP6!BQZ|k7f{T^y78q1Z`V83@L(6q;v%JMGN zz0yNbhP`|3#>Wd!_UwEftRywIIy!>WigV?$xY-zB876&*Ri;cm|4Oq~0wBN-T7sx>1bgO4 zzPG|-XN8!Lw#-bv;>O-rN&bjUbZ_Ce;q59aVFqy&6u|*>Lb&*Z&S=2_jZHs;src8; z7_I!yudFifT2JX2bdFX)bwp=WH^oK%br3jucJ&aokQno3f6zEQCg{Od3zBV~Uc~Ks zm@M+fS=}>6d0)N=5&P(E+H?HlyS5L7l&4?S5U_WNE~ihOZSjq$Rz?cF4ARNoPPgmy z(8r>nc?TQ@g?&|u*95Ri#su48-zrNY)j(+!&WW0SQM$)trf=_}cAXhdn#ych+ zEH9@hrI#{yU$wUEMH!V*%8{m0dc_h)^ftE(h*hbZTh<*Dww09B@PP)1p!7Q0z zglNl&sNZS~%-Jn9zMm$R+W5MCNEI;DGtny&($&+|tIVk~*Kyov+FY{wdPAky>gJeQ z>yX=XPy^6eRDp0w6krX%N%<7sp#$*(KQRP(P1@T$siu-a#Pfs{as zxuSMgd4bzN^efotGN7F-ZW@ztlW#3DB(J+4bLUO}`dprCnsBG&+Yq*1- z%ZZ=as4f7-A??VRXjm%AcquL1!Xr@#sI`^)##$LOsmc=_54hL3J`^HqWR}pGB)d|dvgb`< zqPu+t7mU-=#v6&1oF6_L*(OiqeLVyG`E4w9`gZ|pCkh50d7l^ou^TXo-+S$cWR~i? z!w;HieIhUJvj}sdKpDf>oDv$0o`h_78LH@atu`#Ku~?xc<|ICVgtMYIcc9V2N!7G) z$#=I({$?0l+{+!jKE+<KSy}cZcz%H?M!sjr5m;iuE|^3#KbVtPe;(Vn@Goil}In z(TRvn&DL*3W==Q#cJaXY>jxzZUW?%Lh@7ZpLtAX%NBU+U^k)P$sE!Yd-dcO}103*D z?rni7Da&TeNDN-wIiI(;Pz@QJi5x02i~w(3Y^W&9`spuH`q6129BBov(z=+iWk!A$9;YjY zK=2AG(DgN>r)+;@ol`#KT{g0mwW8-;IO0tjWKhR!^$wWRHgb8mQsCP6T*X2Z08YjF zFvq)m?E9nwo|mD<&_FsFTNT_kAc0@N3={6RqmYY{Qe4~X6+OFMpK)k-e!dynJ-VVN z6q^XT4W#9y1pmzC$z)(M!>6EN|3+>OrCUn8Svp~(bTU*zrJR1UKyj#~;z1`bnEZ!S zMQ5QAAPC_BXF0KjT$4%i%7cE-!Q^7pH&}l}4Q;==gf5-5nS@xF1XpEQIC7*mKV!n2 zc0aR+4RTI<4vbh8-)eA1H0x{B6!~ME2vC}h7Nq)%dAOrwQqt+~Ss=>{4T=;IthZL* z>c2M;*!@U@JmvKKCPd1?(D=6#jlo{sAHz)m>G$v)Rc$PD-rC)xgY*O&01Ls)j7QN$ zUG@YbQ8G+_Z{NM`)Pv91*ED)~6eVUQdXjiB-q$%xG=SW*)GY9&Wz>Gn=XMn1JeB*5 z>A3#tYb{q&k6zp!8{~%kUF#gez_a5Jg8@#=-8kbq@mp{wI7|4@iYj&)c~Fr~Dtm-o zHHx4>BU@mM&fWjk-;^jZ&H64!zIq0(pwcd0~ z%cLpfI)$QkRiMs?$V~9wn+JxaUMyd193D|2C%a+;mpd!$AtOEadrF?IBv?PmKiSk4 z<$2O_p$k<`Nw1kner-achE;-#iD#>;<%zQyzUP**52{(_Ma;Tkd-Jk5hS)To8J4#11c4F zSx~);^wB`ph@oSzNIN`WLnX6Ld__r`JWPf$`?;q93$5o&x=dQ1Bud!eo{0idb90G) z_47U`pm{=%1Ck`Jbgkcv`)ugSKwKq$_?7pMNB3?LpWz8ykq;Qncb}JA9&s*5P2K2; z;)us142J}LshzI$<_3OV=x}!^)k*gD9hP?+@5CHzjJkb@4v=Z8GDymHeAU(l&u$eF za;Q*(2!4z^fHZ3bh@2F7+(~^BL}-aoU&v(_`%!X9mZ8g?O{Iu?TgAT<9Ntz^WD{Ry zS`(J6%y+L8+tbKr=QdqgJ$hJ88B_o#Xzm#IA*M^E9_evGMe{9cGcd%xyhyvveaHW5 z>W2-;>`G~{x=sSVJ|j<8^G@0xiHOyHu(HZJ;BgTMm_$#M0(Biva66XS_ej~83UC_d zL!h?Ym0wdTx)ztY=O^_DXl9}Gzzql04V-$FpVjNZ@MGK&dRmfRx+Tq@X?9BPD}j2W zB2nsP*|!u69g$OD0D3A~s5E4dv+sDJdPYK9u#waPPRR9Zg~x3^$M`#2Of4~tV;;U3 zJag!9#aWG>vXK+r0PAsDev)qYqg?M+)#PV^LU#Z)=5xw2^!hL4#kXi&03(StzD;pZ zm2ZC)cC&d1xf&^bA+x(_N8)2em)Ds3SJpC*5O7=(rz(xu+0a|gp|7N#|2;{iFH#Se zJKMzEKh0_c)ReKyiL%RSZbd~h1O9L}DK~yn{nLQ07 z)-jsp&PG?xGby?{*#3^!8p_WHArAu{g$H&#C8Y7(w5SnAb^XBV9IBuU$;&^mssukQF6|YCSRo zggkiLt6VhC2`4T`&mImlE{s>I1u@|&byqiw2S*Cqy05$%<#ZGSoH!ted{g^PI=l1) z47cjnHdRV?=8`4!6tvoW1k)NA)>N_U3S(ASC? z=-u>hRG;MM?bmzNjx~=^s3;-;3Vx19I-DpKb6!zLH`~CJ)LynKpFOlt^Ne1;v(xdo z16*leh_qGFe0**-`{(FUFUj#{^FXM>-&A4d->d- z=XvhuzT*kj7siA|N9JYmnq1usdrv#I*0lk14`4?pXDMhu96Ocb2xd63`!Mg==SQ5_ zLucbWTX5BG+2M|~4H`-*5~$%#&kRj{N}q>lS8j^99>IB-X>MpW^zgP%By|s`IOPGp!tbx zj6`x3%X4UuB3ju3!ma9tlgO>F*IcLfYg>(Si(dBJdDxJA@1d*Jfq@(MDxio{>b>!y z@l?nQaGVpmZ%gv}ga@X1c@}&3Q=Jbb2j8wLZezdm%UQbMqwj2w-F!UH^*Ea!u5kAcdadgehYHVJa5i5jbrI5;$Jw&(U6 zg*V;y_H~-}_4@i58L6gb#uV|x`eJum49v{NZU%R)zO3hQNIF?M+Iaa3hZPmF<PFoZPk4Zi6r6gKrh^=Q|zhm{MwIGpxGKyK-TCY!T8c08uX~ z$L-t23*$XHNA#}Tj_v@G4mQM6%*$ooaJi$Y+*O}p{_4>_pFO581NLRFJ!~eNkrBGv z;r**F+r%B=!@a}zJY@#-L_+Fze6d~o>t^Fihl_)oPgvtoD;HaK%+KociyDegd#rZ+ zjFO6(Rmb^x$F*#73#Lk-k>E^~Ix+MnOTr3t7tUxy7oaPWgA3!LV1E72>MtqU^0e zNuJ097;h`E3?pFd*^N)}8gYW_pPx&bFDnT(A6mFK3l@5B$m}4?V+04^owiRKlJ0Lw zjC`P9J(?zfUT$KkV`fxsVJ@p1tgxn%%E@<+by^9&(}6s+)rwg7?U${zY98S$bT@Sw zACmYI-qk#FeRARQ7u)1S$J$eQ7N3uEX+IJxEIwPFSvplBP>%)t!Aqu*5 z9MtMLlV@?Xj;BfCI82~+QV&Abhz@s=I^ zn6Bpx2}4VWtvtes@V2byk%Ra^qk8x)ffkY%PIV@{tRnhX-T5HwW0jS4TUWO1EU790ViafHEQ9Y38euN z7P0)S%A2Xq3X4s@j5ngKnQ)`G> z)^$RQs4Iqi7&S40WsNbsz2OZxP6bI1KOiZ$)jKDSbdGn&606LD$pVl_v~%2)+{XB=67r z8KSJHuMRFXDF5o1W#;xox%ViI-8!o*A4ob8<(MFGFv9EKQ2c0H`2tJ?94iFQ?>>9h zz>algSjfy8M5Q?Kq@6bP+g0%wguE_X(Idhe+Z%DxN}FNBtREZT%~EzD#SbZa<(~Wk zXRrLmnDA7L6jbP9e4aIp5EU|Y1 z1(vX*x0Io>nV{XoE4K=>kD+#J*jRI%^t|36lP$2@(1^qi9IYscb zE_OYy;SsLA(!$}y9x-yU<2Ym}!03=6KH;ol#SnY17FpoR8=Q$LVD4hA*Z>)pGTbh( zrFCZVKwhKL25WFGjASlzks=-CF9zo}bL4x|7m@P<+y;6J5?tFGt;GQWCUJ^5l0fh* zTv+P|fi{q(EGt>tw$yxRa;Qt-R0p3berKS}EY37xG_nkD|0c zA9ya9jyJK&aDyP++Nc7TLF`Yq4)7qvi~Bt} zD`Q6zhx{%o+&$eOxfq?8!!+0SXoP9Aqs3t8P?O_njXGSRZHmci-$b(?>Ab*dApmf4 zg@UW9*`)ha$T@jF)!obwCXmDIkAy=X>QWxzMc|9o7W19#u%Y`|%JG6is%0cHMygkF zIhax0b4U)t9G8xL?9|ODG#BYU09<=wcqekdPZfWQ6Uea(#OER(k4avPJ_pM{9XndfX$_W>+1*>dX;bPDOejcVdJ&6= z%!`^LnSxTK;1W;X91H_der(~sYbhlQSQjrSRkD^x82w3cfrN^?ow$Ucfzg5@9;r`I zO<|*r=wUk381Y=g$ysw9nM=VCGYEVGRjW>t#M3cCtJan&l%cMDN<_>$jt^bN$}htr zX6;?Bn_jx7v^HrzI1`?h#8PZ%7kb0y=vtL~Ny4_~#H63BqEP# z-~<}zx>62cz8q31w0uB#KF`6WYUR4xwsS23YD7E)jLHH4^RZM?lN;RMuVb6QX1|0a zKYD?z`biS@A_U*@U<&rduRgj1k&Fnr9j}nSXo#v?i_w@oss_PxjGZ8mn{;I%KYDQc zD$E^zw6uJ$(#lVi&P=}}NHA)M(OzR2*n|VvFnSRX=5G$?_f{({4Nx6D1=JYA(SbqL z2z^roye2F>?Ps%f{h-m+<6Krkd+G%6P93He4 z2|xj$UwW4@s3Gutm_Mk$KWVahP9``- z>?A<^M)vUdAWlEH(;D9&KfvCVAb>8R)X@zTP5gS|kUqc@G0d zdyes}YtsuWsR)|t{p`NOQ(ovOcj15VA0a200 zgaWdP=ah zPATQDl2N8sF)XI^BdeoN{oK%ce;xf3TH&ES;agxig8Fl`dDV67X$otuN9qM>x8U@& zJOG0xl~$IyH{s-cQ+#-g&HbIPO}xSjpg_u`avT*Nb$QA9s*bE2J-JvJ($ zzSdmI7m6Tq^n^SV(SvA~(gmt9d_2(P2fe3n0LI9n@%I`?f z3;JpStN}2y#hqx;axCOcMANYd%JqnRhX|uABpM=S&vo5Z+n3R=##qdm>&7X_YB7CJ zHZp~}m2@{R2u{FijsR8~d{mOIZ(GYP?3%+&J5m_eWV;P-^4cJ`)+8%Y=}FYFi2R%N z!c$KSI<)%z@M)XVrzMFLDdO-Q;^{lx17kdRu*`)JlqvkKeONaA*5DC(}+$4 z7G^OKXydY(Pvs%0;bJ*CZxm`P$`oRl!MJ83;r$(j5D|S&>Y&H7d(RIzw774&q}d(a zi0tG|5YCjNO^+UFc8fl{WmMyAq|tE)8d=gjRGtNU6Fs+;EI~zgbA##|rf< z;sQqvr6K2A|6sG}(H_k?!e{zF=6feEdE{BM_YBY zq!M*l@-&|Tu_i6Mn#7}$;b!ZI>jET(FBhoOlFuiFz0F$xqWIwM<;iTXktP1j56`xJ z$Uj0gUtl2;A->{4Ud%uCt(aa2d`5}w*{&6!?H|-O|I3;;I83U7&wn)CH*Ce;AN51~ zf7Y`F*5ES>*UzZLKHCEWq%*5=#74ev3NYKQ1Ch)3-3WewP$lKC_cLWlf4SV0gtt$1 z6|Lsn6?pj67FjU;d9&mnw~}y%XCQ}=XQ4AGezh6WuJL~~x2dO*k%;-1&us=AeQ$%m zP0*GZQF3PZBv?%LW0*H&EZ}+)mTFVe`aYUYK5RPZ{a;@XyD)$Lz8U>J{<0u8^}gwH z_<>1IsSVNE&zpGbO@!J{z3_K^es5(n^!dG>{sZOq0|owP7|hR^xEge~LC&$}iu-oA zC>2gLkNX}5)KuOh#ye}Bh!AGo5`^$`tP>IUbhw^@f78GCc{n~faa!IVE2f@vQF_eXSW>ZaT^P m0VnxeZchAeuzzQmMkz>n1degzdf)Y~wNHSN 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 A3IG5A diff --git a/src/assets/splash/ipadpro3_splash_l.png b/src/assets/splash/ipadpro3_splash_l.png index a0b6c569044fcd00d5c61210c5c13bd2de528137..df275b3448414fe6f50b791a78d56426fdfd8fb1 100644 GIT binary patch literal 36299 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 BlvMx# literal 47044 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 DI+fct;FUaW_K`+vP2wSj^A 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 G{67H8m1$N0 literal 27006 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 diff --git a/src/assets/splash/iphone5_splash_l.png b/src/assets/splash/iphone5_splash_l.png index 28fa8838e12158ec07a6912c1ae2ab97f77a2da9..789f50f62822fa4ff46ccb08627d507dca25334a 100644 GIT binary patch literal 20616 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

    S@BgKmf6Z#V;aMtlVsf^}b;I(mCnWPi@aYTc< z1zElvemx@Pm?3-Aej!#>H2o8Z9b;bLrW}3~;)Z2;m*TwE)C1750p@eJ%Rez1SUn;V zVQHf&N}-LW3V?Nd<=o|cNyz_H9;Yu5y00yO^J&g1;OThtO%`0vrB?Kht<~*;Uk$=A zC2j(F2Y{t`9{&e5QX~TCv{stOzyX{Icr_zsC)HW~HHO)%I6s?g{g0V%^qRXUpiajC zQ~Ebk8FCSC5gB1Xb>aorrh<->Xgl~+NHTGvkq{89Z;&>G_o2Xhtq@a;Xiz7~8!sMp zhp#0`f!Cmv)Jd)?!H5j~UJTPtRf~QZ?0D_98i_};1;cbgwYSzM7`%IYcI#nId&A}` zUsckKgfyXF0=&|6>lp^$V@9C`fcYpf;Rv91Q5oh2y9wD~*-;Ov&V#t|!nFZ#2?9D~ z#byeZp-}L+LZ!=R6$8xn0^QP(op2$Czf+5zUoS~$>`oK~_lvIjV2Xar&fi!&_;UYg#BP@NC z+9kmU9(`E_#8l$JWNVN;xO3o2*vVLg0i;f%VS3Pb=9 zz1LkTgMWkTX^DEkx|!hOkm6JmIt^Gj1)%c=XkO$R3NXx1J%BrFYSB%!K0uKC{GHOL zP{inr??~yF?yUmua7r@R+w7ATT?VWi#3JW4!g?_syaxbQQv-bOdKbLmV6F#W%oWxtuZn1P5c zs^8zn^~bgJD`m>F80KVjC^*2)$7s=Qg#1@G%_!G=N{ha6Se($Ixf(#)5v+0UFhRaog{9zQKXlu;N=TR0mAzC4;bm5CNGi6w?0oV>pZ8Mc-hvk@&Sj3D4ijt@@HJBDfUpRU-ZVETdQc6zd(Yt%*I>M6RIY96v>IBAeo2V+1%`>t1^}DKzaK%e zjIxKX5u2&bk|3}hLC@OQWU4Ru@f?2y@YK(P076RiEvl~OMG(81*Y|-_h9Vr9HnF*D z)@(J>z-0+SBT4`~+eo9(BI8Oxi%gp>c@PyN0&Jdr0>Iy0`_U6TnmS?bcR$b#`k}*s;crxqu2O6awpwNtEIY-N($Qh=!(weZobKV^bHL!?PNPE5}!~FUp zlHJ0NPF;HoeEyWmU;~dH-xq<1H!8ps1px5tqOW{3Hmy6cSR3kZaqty*Ap&CJmn<5s zGv5AAOw=~)P8m2pv82=s*}F0U!^DFTd>;@I@o#04rp3s#9Uu&3PQ)Na1AB*d3y09W z*rLv&yTIXKW(njCxNm9XO3LLyKCIY_3Bjg=uB$eP%>V>1hkfPr1qa(>B=CA2_p-J; z^B}damZZ%#BMOC{AavN1fazqqDOD?X42{~QWR$hGtn-{l(|sO90}B6-NNiln9`JKd z?%TjP6LrFa9RBQzO%cKE-rC5MH*dN-F3Mjhg3CA+eEfL}Ti0<3oTr05NC1n@0hbg5 z1+*Gu&m!o+KxhZ{|k{Nfs zT^dLc3*KTm{1FCl&qzQ|oWZyu`@qXHjC2)JvHIFb z&aj}%0N=_BpT||6wc)HdhwY<7>h*v*K~8&e+%R;11mmG*n@ z`Nx6xRsY^P(&&oXf>sXe zFR*Fjw(htqIY8)tr@yXQb#`y=5&G2S!kd4pWI_cmwxk4EUWu)<^Snrz3zLvD#MRC*N?<<3tcXy>D3a>PU3QaCp~P zu*L(PDBF|a35@*&8Jr{B5XjR|@quX#UL&Qwj|+<|#XfoO%IUaqAR?m20fmy6$c&tOyla z-*vNcnPdOlXj}_Ds_m*1{f%8sTe|8*tU2ovTKRt0OS05+-Y(|tKNQD(8ih->809%wMg-v9K+|NQ$uJ@LQz;^w3OJT)}*zmE7HzPS15 zKdte<`y%w{zuDElj`$zG2ragP8^HL#`JuW0>KDZRZ~uTASnQMT40GUd5a;XdpF7c< z+y2K2Z9vTZ*B>+cH*5Z1{*Kze8Sx#+ynmf~^OJx5(YOEKU;Gb0Be&;=-zOc`I;%lo P2AHan`mOXEcc1+qt@_Ld literal 32486 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 Z6uL8?b>P|F1v%uos*;vsjy&eh{{=R*5_tds literal 29236 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 literal 34037 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 SahRsR%W}#W6VB^D`F{Wzupz<# literal 42934 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%0D(mI=mwEfO2f~}pD&Gp%eQw3wy zKketPq-3dFBoY{G0#=T;&F~6XDDw(H8ai&1{nlf=%mt3&^eq%_8=olf+U>`9`~NV2 zfa|oKa_p+uljj22HK|Y9&n0+PX|>=9xsKHIJ#Wz2pNTgvw>&Yadv{Vh{HgaR@nRGc zm}YWdv(1r)?#hN@V4{$z#DHi?Z4r_&kt}MM8n_fBng0BBMv}B-tiztcvGVfCaAD0wqdHoySN4DmV-3m!z~h7 zYg&pQKAVYDaiV)HtaRa#XQs>lD&$#2jZHrkPhShnCx=lJKDSxV)9vlva<-a%+Ryfh z?dwUd-YRb}&nUy`CjLv&_pjJy`?Y+!Y!J2_^27w&xz7Eu_J-Fp;w^ZV4LI5ZZ>mxc zs$U6d^6{f(tHp{5PLFrJ`jU(I?!oa*hyuV`f1ENp^TGId{(y97XvCR0X9xxq@$X)H z?=<_7i%zoSI=+o3AjQLeqk6?$+lj`JMEfQt`Lhxh13^;!!fC)FZ$@UtbtIZtzigSJ z!y{1I^*iJ-Z~spKx%qb(6})J$Qw&;;j!x?2tW{q`gzcPjdb(4~))#40?Ar)M&)kDe z=2wQ*pQb9U&PmVo+QRTQ5JhTZZ!7l59SYZ0=fCXQd4ngQ9E07P0J|2z{-+zfRCd{4 zA1=rZFH%28{2rVH>=^1})2DpG>;3USwDdk0E0Ek3T#d!$Uiho6;KAvf#mHmX>cBQ4 z%g!kk^c&br&!w-$RXxOpg!Q%91C~OzzOs+SiOllh8jEV4$sML5XT>;xNWFY~%+;)( zQ;?tMc><`&*-G?iFYzqe^twHBY}@RxhYz!1d2%ccu;~AE7)A4=3SbRKYikZ*vp}E(#Gh6Y2u>8 zUEe}$b6Mo4pm1GBEG8}%3r#iS)vi6iA|;Vabb~`18P z257b2oh`xw<;-X1z!hPAM*Sy^45Qm|*KNva@Sx-Q+{eU8N!vL)AeycijZasW3lVF< zl|Je7xLmV=Tq%>xh z%TD^?)7pM@$y$DOD{~lHqR|?5{=;6m>s-3S^%qg7AfkW-v{}GcMJ%39+e7*sXQgub z=gQ7WIIrK2uxKlo2qmNzSweBnM*IxKCS==(Y85s6tq?BInfLwDtbI4wVFkh$klaX! zxPo5$KEwAwWYgH9*P;-`zpV3?hK>~7KVo3@(DeZohMqn4xaR7;Yp(Pu4z}Fa^pvEC2hxk>$gyw*eJV% z9*=JpEw=Jf^*MY9%20K`gU@#Og$%CEl3ad+Oy9=}ePhs|R1h=l1>qdLK;6YQbR}gE93PQ2*Y8{zvPRswjEt)O)xiCMoFCVtt=YHAD#pwYd(Hxty_@eJ zStfxfwA(UJTU!r%psqvqP4agmpO7MkULZTQuJ)Bh7cf?AO<2C4%5X2CEkL3^c<;fwo-tyMPpN!^98@(YCHF&Cw2+Ho z2+BPCw8QV9FbA>kE6H-CWm=*uZjh_4^O=2f83BaiVmNhboGv2c*6fqI-S7O~U!X!F z^@5Qo|v|7ns*9*&BpcL7&7SXJ) z)C=C56jsPwT?=J7*3^JT#_=!-n@Kf8(>^=cnT3(#o3zxK2GEPlTyV0dToG+vc7tpz z$lZ8PP&3R~%Qc9-3}8+I#qK+K9`*dMH`{R~d>|a;;t5B~d+O}OV>A?betmw`Ef|y8 zZs!D5#L`{ZuAn@UyX6~tr@vOTcnvt^ZY)V{>k&Me(qva4Ztyz;gZ9hPoP0P;xV(1M z>Qo>J`A=F4088Hpao6fBCGEMet=c1DVMPtM6;Y}hVtyalfTP%R2OAT zu^V<~gV$bO`?zh^xZ^2*k&sN~eKJ;^vvpHl>| z`6h;Rws3tuikZ3o_xp+}KB+Z!txa?$CL@8uPQkrr+7T{wkZfW-2GMl$I{N{jpqK`p#)_BYT?vo2;+}XFi)LGi7&JKNPe&L9^AD<@yxAWbYQoJ+q0+tueCG+cniry^Pcf`yE6O0YdFyS0XxN6tgy?Ge015;>v#R7euIps&>F>y9#rR$JM#`dhzeDn zHm<3-HefEP_gg!)OO1#LYkGL8liRkXVW+1t=cyNcAE8=4-jPCc$H>-VgHu&=@tL+C zvv{#kU}7RotnJmBu1CBAF~Bl*d5R+Fg!WR>ic=1AmRsIjG7Nhb-qIdGHrofq1xq~V z4BenXRrSM^Z}Hu~J#Ik5cD8VZOd8}pP*UhZQLa-rh+WHfVkXnZOje6(Nl-sQn27ly z_`B?%P%2QUsNm_Gyx5p%9JM<0^?H8V-aDdMjK!4Pf~Q7@I21$Ue!Dq#hqBDQO6_q? zzn7NhaAzKufTTxUCdBNK^io=NS6TiY@_H|fuV_-$+&!u>3i02n&W=kQJKLuv`o%S2 zn2^6@Q3LTq*6794v#X$5KUYp0ebMyGbCYVpQ$tQve`si^;~cv)$-a0vD~{vw4+@?$ z;VsY?m_Uq#(*CMNW%7$tpLW8$(pyMzqgc$!E7%g4TpY`-(~%wnHAn(vy;%kEs%__X{J`Kb4OhK$wxLkhIj(;qsnvQu z{30far$e=saU42VqO|I%^wvP>+%$F63oCV35nH;T#1^<|g&&Gv$z|^)9|m=gjuja9 zz+&z7y&;quugvZNty4x9WroGC1Cm_8c4C{j>I#$wO9|I$Kvqe|JP0f2r-{zROB!BI zqh~-Pi{f6s78FIsyvdb8pG~a1y&+GEIs>^H=a!Y1RPNOfk~xMENaJ%_q81L>g_9@j zim{*UF*+d_YuP`5|r8Hh&3*)pa$$vUlqjO5|I|zo>ee57>v>j zA&qB|6RH}Jyt_rsTS-*ZJCN&ju0nLq44Y-pSS^Wi=drGiiry!u%ki^?F}9UOg9*lt zZ-xoL0Vc3M!Da@&+pi?-&@ASG2T^0>p!#gUutq6l%Jtz+E*0-7=Flq!$qQx`j>!@> zlUTXmAE(*)9{FntXY7JLXa6Za;RsOkx7W%NscUwfpRnt6L;K-H`#G<=-RbsK+OOGU zta@2sKT6F|zl2IBxHao^=H0b@pY!83*5UxAg(*v9iH_Ceq?d8qUR~;cpqSeKbTf_d zc7@E=W{}hQC_C?Sw;mDFdZ^r|h55loZ7eOO`1CmV@*%--4+hfRT^|J>-t0CD<0VMH zz^orG9}i{CgqFFj&M%EJZqfkK(-&p|=3ki{JDREL_p%k*d9GBt1Ii0jkGG7kaUeDT3%2 z%RN`?$~ZJ{U5TI9YgqOAK{zwFU~49)9b_E2H<((iN~B(xvw!S4_4v}jj&~TAE|h9J z3e^Vn{%?6py^K4<911TR?Aj_*s+a-t7F0wS#c5udr4=R#GOJfz*5}BL3Ke5YPgc|_ zPBdYZqD~CU5C(jdMzG2@J>=hY-Su0(MhtG=KGvel^^+NWl7TQ}UR z5ibTM{D3t^Z<^Eg-GiJ86*1}^18XBcb*r3;ezNE<9>ybX1(a^^;gfWpfaH+$nS64( z1I_V+lA+mGzOPLsLRwgBrg{=2Hf$(pP{LP9lviE^d%g)qHH>7`W!A0rUArbH_cN~K zGN9ZtxxGea%`%;N7gaPew}6Bw%`5O3z;c2@J6K0c?8y&|v38u(HdFCh5x!aV8bjJins8&Sfxrr8sg=uTuIxyek zbplcv0P>YmK)MZjNXAY)+rr!TRO<`uH}KR&9ar4@e58eJ?{vRZjvt?o>5iWCeeg@~ z`ND=Yu?^`O$yj7;o!th+MFYApDY=Yix_By{RdGEtfp8*Xn7~-F=&!5`Z4}5v(5MRf z0UB2?AW^xc1&dsIQ{S*jKH)_lBkT3VQ;?NcVt$DxiX?O9*AKqs-V025b8gNIB5xRL za0(dT%5as0d=) z+7o(sAqu_#!QcSeiNYXveVc*Ff?FR$&h}2+!KR_>L$`0EW44DBlF>j#mmmOFUXmbE z93I`y&`UfsI-eX%hwhSbon<=HF4fr~TODcuAqKuhJ2ER;Xk+RuuG1~MQBKaZXOQ!J zl4sGsGAXn_lF*JA!}f+oeh5-O?nA;<`!Us&rdL=kOankMqNeZCBthTb6Gp?5mJ=N3 z%*>1|ZH_o+FHl5q%#^6|5XzB(WsIE38(WWgw@YGmyMUtMcb>j7>$7s<88Br;jq~m0NP&b8{=5rh>&Qz?LH8fA z8^rqW66^K51ewR3i2>oE1jGFJ`R{Vx_41otFpw6?HG6 z;eFdDEQnoU#??O8^)6!5Z)XR{zw%i=J_1kZZeMpefAGe`X3dD7PxXS>jb=6F3>Qp- z&3Dno4^mKFI#O|pIP&6D!ly2avO!SFtC9W|8&+jP4+Ww8BN@pMq%jp#^Fgi5>Ny2N za$YVJC@rnf}i5AZLStzT_};WeFa2 zFJDy!u|J#Dz7Nw{AyeH5R+ExK9$}Wdh!SQtzg|l|9UJC5y%r_-=wmP~(TQm!=UIFF zVnOm;A;f$V6KGlEQ48-%cy4QGTDmtJojRJE!-jrR?>c5P_M*v!ewugm%MSu!_c98x z*@EgTOVL>hVzSrABgN&t-duE0I`T;E){*aNxAPMI8`Wc=N<-uvth@4RtZ0lbb#~6| z%36A>c)cC?IP_A1251bRJ~SZ^iG}HD8H@l?Rv^2@%&unh@u^?Npz=eF0RmwruRsTd zc4wbUG{?fzC?u40xLL=tN|I3MP6mj-GW}FU+)OcaAd(H zwuq!QqhMcXaYTd+SPxG&Y>3Ys)?l<-Gr1j}7Z|VqIn3r^zya@EAEoAL5ls@-3`Aew8@iI zy#I_-7vanslkIdI<#cg7Q{@URjr6{A;lsPRpa*!c%u3%$cN)X31azcYpijE{f zrscrY^Mr&Xaju}H17n_8Q&0;trVx=YoUu3;%Ly4Li^m zx~0Wx?mi4PWI%2#FZwt0i)A4dbI#2X!mDP^p@7UJzv37EffbpEYka1L(7mWIhO~^v zSSo(9@+NHB^M`&X`+ZHX#V2ciVLMO(AoM3>sa{md&&Q{1tKp|SW3PBI3}28mFo#@e zY_Qhd2^(XAK0d!Nbf9DyP&t7=rb4N}8auZz@`2aH3P*Lnmxn+>drPOul1#_73{7kC z9Idnlub#@Z58JL|bB-~n;mCRv8~9)+RxISKz_8;QOxNVU`MC|We6Y%YG{~`w9$~9Z z(s%mEYZ%)P-uK1ri^IHf|2bToHDsqmIt}_ttAF|`tm^r>i=*{3@Wg1*HeP`v&;u74 z6wV6L9!*`&^kGc}0S90q4iLNQ(cVk8Fn6=iAku%rE3nRJ&@eNN1MU(Yt*#@MBK39& z^C4guiwq}!rEG`a%L)jlWdLTk(TGa=3-8T+kC#lTjd`w!IBsxC0gEA%3E;gz+cw45 za5lBw>=DHrbOAihU+eO-J~qODULN$(GZbOA4vy}d!z{#gP0F+Zj8y;tBidWD&_IA4 z2vTU{`&^XB+c`Er1C@8jtNIO@X~HaDn=b8??HHpcHr=;dwNnjB$MpNq8TAu%*8g=K zfOY=Aji%GofwO(yePOEQQ_*Rj#O_Ltl8_RwfHH*^4Uh)~l?`;UOR+d?cmuu2=WDYd zX=M`WMe+@*il3$?UsaZi%I>_+S*_}~T@QwOYL(F`M>{NG>fg#`=ts|+>OYybcq1s` zgt9>FWei!~N1r&~2=@BV{5K&GPv{H$Q079k?|!=>7~7#3Ol4@*E;M0Ll)zmA5FH$| zy9a&cruk1+1T2QZ%=^(hZbWM4G9>h9u(5IIKT&9h?0v%?z|WJ0>@pV!(-Z4ZT9rI@ zlKVKALbDV{x)$RGd7bf~vDsfVMppKWvEFCiM4o^d3~Bx+Fsj1pp_9(xSY`c!CRA>o zVMBwL2-nO~bpBIi;N(d!&|(%*d{)Q=!{We{o6!id4!JHJlo3gH(Lfrii=H8DFecuFNEn^s3Y}kqA20Yfb*Q! zaa%!8<3c)&2X24=0r0mDKQ^Xl*jL|zAy7XSFa9Yp9-yzws-SUeAREvGMNKp0!6_ck zgV^OY-$ZBIa~KdYS3d6bd$|*s*zdOLHcZ%$^3NoWr45u7M@C=hmUe=ke=y|9zz<>d z2g~uA$t`z17u?t%b7PWDvkXjo8RW{xW*QV8ITjCxe$sbpC(+QZ|Ah7W!*A&lhAQDfPq1zcR{k*OccNJOHFi+ zbEGfysV&A|Fd_Vs4(quDxQ~al&g(V69#n6IP-?$HU0Gh!s=y*(>QpqjT>V2#P@aRb9i)p=6^{c>8WTN8g-x*Rwv-5>y9)dtl9)c-dN_P65F(XT<8AHz=vt1m?^fw8%m0fOB zXp}(f4gh-t025S%LpRuo{k_Mrnq_VwQ2#z4Sl(^xdqG0ywYcJc=74EcXDGD&E*4@C z@SzqhP5i=JF%LH@K!g>wAiqJ=*_}$U-A<|^xYbO#<%AUwGY?ZK&m5@(CdPF=mr-uT zPw8fBv&4hg0&uFRd*>&3wkNifi46;bn*APHb4gQP6$kpA=gchC3vX7vPromTP3}1! zjR`D+p2laKZrniFAs660<+N{g=2>&^mi0AnXqlSKF{1xa^cXB`a?GCA@*7H`UxD#Y z@kZC1P=Aqn9q~kXyTQNj2NZ?=q#48fB z^LYAynwz_^O0T*2`+0x^Bh!IRUW&!{K(K&u2aJD1)maA7a`zIK zj55&IDz$oF7*L;0Fpn8XyGhQV(AY3+p1;l~^4fQwh=)@17$^C-kWo*w$HH7Ni4;vP z3)#d3p4{RR8htNAr1(K}URfHTPcpRWzM$YmeEb#?ZR2F-kccr5LeH*0T}S)b7Lzd8 zySS`4HM*WvJf!KjUE2~(58qQoDp^(Gm#t2v+Sq1?vDzlOKa63nUB%r8Gwd)Opbvm! zRiaBX?ly&?3>p+TFOIn$al)N(fq&3=i}hI?&GiTTVS3gSsL>1rb_OP{CQavPmS zwm>ERuhMYlwkmNMABA@tM|s{{JEE(}8S~h0n8#{ZXM zxD5FKyYLeC!?e5y3#XUuV2Gg*is8XbSr>6`&6S%GPlRrg9WgV1P{le!KU17AW;BMe zF*DO2YK50EoBgi;pBeH^irPc{Z&{=DO#NSy@(pI1MPR1+0c?0PX>^3xB$k63&w(f3 zu&3N;VX9}}OyEj-(FR%2VbY^B_e((R~@tP3OD8Wdv$dJFGIQaHqZ^h3jU!#kE1)tt1Ctua;eX4Xh z$_s%o_7Cm{@{La0c!xSpK5fI_^(e{n<_c(Ge@rW4yNd7Ij ztqBR^|1x|uB$bNEF02O!>n2Xr= zx2YM&5bQA0qJdZh^Rcr+TUSq%3k1b~sXs_^1Wt}O&b8l(R$0B9v`0%f&}W87e+YGyns8C)`Bir0;Vn4{7IGXfm*#&@;?V4 z!|q&o`Hc_FuLWgV?@SYqrlTQ6h$m&sT~z~GNI2`7@ai|kIv1!Yt{ugiT5%0nV`X7> z9hlqJR{`W@{wgyYd!#37CA3Q$k@JXmfLy1IQgHX8#K1=j`^5%lnUBMkxxjokh$iph zcESWSe$mM68>cyaGrJy(Qf&AJ=2WNngx}_&0jg$5=V@awmf)!}vx%eut^Tg`ot(A- zw~W4bisZgj84F!yM}^=GKxhNAwnW4y0#{>v!BWEx+;# zuH6R1n1sB1X=5+g7m|KC}6Xw9LU%&xYR30|Hqkp9+% zFiqJ8iz)v{EJQ2@i9}m6fge$5iw&rzta*#Su6lXBV0hd9d=UduWgw{(8zqiW^gS>L zKQrGb*oK=HV1t-oYt+f~-4Azd{yQsIwh&Czo@hMm+S_x56-K^)<}5>n0nGg^G>#U4 zi}C`pAj!B6&+TnU7x1xVizP78Fb1puy1o(%3xv1r(RMQdDsGiD6E4$9BUq z=q16~Wx&~4FTF`#w%%jjbxJ8D-8jJzT<;i^to!>F_=pdH)yh0vswU4+eR{vi?ajCifHp^WV zcS>9mjAcI0rAwI9vWRTEdjJ`c0FM@MsEL=iB_?EqV|fi_VSdVJa8X37gKb%HahQ%{ zRN&RYS68TXnCb`6XbIn&(DHfjM%Stsj9w%!_>@SC{l#kN8&Nd<&NEhK*(8%fF|kx3 zqSSRl5p+JZueMrDJ~QVPSh$FF7+1V@EJDxZ z0fmZ4=2--?JOI?<4s(4ACi&Jgf7I55+STLJ$*OXTPl3MNV=DT!me_y5Ug1zrX$j@6iyVCd;J`ax8c%_ z6Wnv)M2HXv}74*9zwSa$T&G%{DdT)IY++l2*ulP(8YrH+TN<-8jqi-Dq2K73{Len$PZ4gUol+f8+FQQX^AKse} zB<(w#YP^yx3*IefU!sEET{h&ViHS>N&{VCH$eEX4Pcmj-#DYbKj6h=JOSlcTC656Y z2xu^IDh(4vTPS$r@(E{-ukppuX+nNqRFtfS8pk-F-XoSZa0gUMsP+$vLaIj<01$6V zdD0iVBiM3x{_uVHFhdl4n3~Y#x7>S@A25Rb401jY_&Rw_B8)oPo;u%zzxD4d!0dgZ z&CK!8onB&S!0kM`z^n6@BK5VwueGQ$NCX}MmCXoo48BO=_)gW~n8h~(MO3UD^HibA z{*u1e?;up#x-Y=tJV6lxl?NPd8GJRwF)C%E<9mZ^lSC)m#=?wq=o3%C8Q?>_t$f1Z z6wsmYI>?+`ikZI#6?+E`DqK4{-I%fs?os{sdi5>&c=UY?O967wxQ|&C!+5sa#aGUHHd6amGnX%1w>YHbURH(dRS#jK6l~GHWX+oD?VQAz-M66P0 z^*KW$Lu}|wI0%LLqMWP5S3pbYP=Zv#mAUt^=_3!GC=_q&a~K%(h`sw%>sICK3#qo8 z61~Gm=WdYM<6pFqf(bZ-i8n~-Xzi}(y{=bFtn8^JHZ|}z45qJXP=#w!gH2+8wPo3U zc^tDK)N`O=I(FV&B}x>&#bWOMqLB#9<*~1c(fMmn?o{x(I+#OSpg~X{k)H-W&Ahs? zAdp4_&wj>hx(5G4B0FrbNAU< z|1b9>my%Yld6gGx@uDdu*YSDEVGG4vw<~*^M2;Lfx8@kTo4M_gKO?BeGG_LxWp>?ZFd(hQ~R{WN=wqo*;CD#J>$D{g$((JC?m@{d*Fu@vw7`n zyQ&%DrP46pz{E+evGr@tz;2iB&K={=#&=w-TwLF9OF4Pd&nX8wPk_Q=KH;)85<0zC z=*?%oYPqP+13xKTLcyKC{#f&@euon+#av&}I=fp^$KAH^P^$8m<}sJgWQzaI(l5i= z=X%r?&%S?_exWbR=EC^p+0H0J`~6&k&sy=pSxSZzZ9RNJz;_sL9g~D@FGFdLmMH>-q_~c&okEB;1*AugW91QR&S%-4-XBtP95~ zr+8xjn6ye(9}K$nnvr<@R#hvx4#Gz7E|97m+cjY^?`X|b4oq|tX zoKJl<7UBQNy1lftW$@m;Ot$#CQ^nhqt><;O9veSu{c@z@k!$Jvg^5z?xtZ&ip>33V zp(o9D#}(%O9p9=)&kmJW>^L2JJEAl;dt16MF3y0Y2;&NGt%({#r*=%yxp&{YNCop4 z7qyJR{PHFF9G-VedcrMysW6pXrOKN56_;L)D@nCk&w4su9C(fQA90RuF0HgFQoHIh zJp!_dNi$Et(iXBmdoGjYJ9<7xYbd@428m+D<5u9zWbA|X41Q51Fv=skqm;hmO8V8I z5Qw9&Mp~jc>0jNW&e!sHZy-cC(X4p|+Vlt!<@hQ3hk8y=hsao&uRixdCzX>9-*liW zj(ehmuP!eBp-Onb6X3suUwFdpn6|G|WAPdZ^9@$5R>M(fonJB@D8Z_)wZ~D;M>^3a z)Pz38`rnElPcb#+T0&zQtw}^__=6MI4G5vzGMHkhSIx30w9{znkD_ps^mcevcFVt; zyxwU)^hD8hg^bDO?S9)+-i6gSs1g)%R=AJ(;^$$8Bsu_(+r96J+7%zD(TX#W$ZPaK z>4PdEmnUGJDp*=%dh6`RkXNSMljk*8h-lLYn9-G|ak`UEw0-RnoMl6<$} zzHUaV5+7FijqHmWs5WXL+wuwPx4>oT zpIrKcojuV>!+rM&ON!GB3?~M!Wa7Rq+8&#zDwsC?{9Fq;pI`V*08NuuAoH`B&gNB2 z{HgrRKK3%PGu07l7lmX3x53_?ogiu)hNDHVpP%Q3{af?^+?NkAKi&IIbxli zJ}Aai5tJEwZKt@7F+tH@-C~myk3Hz)4}LG3>@`3E!!G0EOh~B{#GHYz9U|^S=a*mY zKR+g}RtWzOCkzVcjhbs|M(G+dVn?Crn z?doPb)1m}yVRdQ7%V38CVhDXCdzVvS-qiCZjYor<^m{?EeM!NO9y{PV3irS$Djf5W zQA;_kk3?h@OdkxCJkt?U6nDA0YYr|eW-{)=jA!w2^{m{Y%ezms&(-#-Rf}!M?VY@2K7mx!H@Dt8BhOt9&rvR>&tj5$T~aGt#3s+*)=@pX)>CI@fLP z)K&d{mqo%?LksY}Z+7f6MHe9Oe&*rKbDQ<&3z zaJkejfMh|jxKmC9lPONjsE`aX-%g`WlzFr10=-!^YutDCz>}huQD+=!6IxkU>+oo* zpv>Dy7+<@AC5OzTPzLO$Mbaeh-ifbqn91|k7ujxC`O1lQmsdbEgE0aZ<}w(3w)u8m z1#YDN$(jefZaslXz8bjRQ~(B2sJK1*0Z^g=@GPHWr$IHnUrw{HihHz^;?P(uxvS*e z<8@YrcK_n=!K=79E27u;15aL&_2A!eV-{$y6|1TQkAj=SsPDo#f>)$KDrJluvUaWa zH|1Wb6VS72YYE{Aki7wsK3B}xqstN?vDSG`zz+Gjxj)}tc1%ssrlpfq^faZ&Q%h;arsx|f0L9hz41K_oGhU8h4-)U#}GTq zWtN*l9Ra5q2+!+-1@26$b(&FI!^{`##`*PN_qoq)bZ#)Njvvsg zZc(igH?}&gp4>t%Tu-=(ohl&B^G~X*Ws)@ZP`pShKCO?vGSpF8EPjxC0e}uj!G}sg z8DfE572H8GCTR?G2vOl1eqx0HR%74a%vo`7(q;N`>A%ziK+jzc6!@pX<(5k+wQgU0 zI`5wgsKRq}my2lQ%QUAN;U7Ap(yKwf1U~@i_6I1k5Y_2j%V^hH`MhZOd9T_#uJPYE zF;lPtpN8AqbuzDjjV`ig%MZ}^37r+a%WU*m&G*0Mr%RV+jB~}Zlaw50+-`U--{ayC z$evGqG~}PTx6T|knd4YlY#<~$(V`xt zS7JvEsSwiKVWQ#95r`y&ZEv@7XcTucb@K_z(Us0&{F&y%?0b)9CD5 zG|d*p&4{4AkOy;pBO$&{U*idoZrb5DgwzQzFnYxm_Vfi!*YBT($D*Y_#Z!GnTdXJC z1EsWKnc{C8B~=w}vZwwrai132(KmZ4{5~06NZ%gvf1O4SI5bIVh&XnPK)6QG99CI(A)iqZ`2yY`S{pAXLLe)^`r(|s!?-PBPExQ306h7;U?>rO_w*XV|wnVrL>Ss`GuLlL&j?1 z%}s9iKf19sRzb*O9lXfkb0=gdg|ChCRE*` z!5O|N&<>W@(0nz}>Hc-X_uiU&(sv9yd;Tc~OeGAh%Se=C+Miq<@8Y4osd&oJ#A7`5 z(cBL!RqR+VL4wO*wEtL+a)nv{N=DIad&_Y2WKnQq?VH$X-(|R7Jp^j8pR?7ZmQfx< zL)bd|vzA{7q?F*AI?MSA(s8lOE|IVxS+WL13kMW)Z1BYR9ZK7)15q6~OwIM4_iz@5G*%E4<+G>C5l zJyuI}+(6|DQ*HrH=hS*gO1zZ9sXJh{--#`xBTA_jSK_J#m+4PtQxv6{QgB_-ee9R{ z*_O7Lk00FT@y_|bf?iLRDD7}4nIkz2HwBUTa)jeVauE764U8j$%OBI8W3ej_1`7~0QEmL|MtL3`%bjvmDch8V{Y?= zSMK#%JG}p2dsiA1)wOO9;YLjaF-Ac|z{IFgL2Q*lnM?@yyiPG*83ZBBEi|(V$j~OD zs5GE4C=vvbh(?B%shI>E7*qx!M38O-fdDekAVYV*wGW#3>b>{tRo$vrg;iaa)o{+< z`}@AN*0=UP$F3HpGH8pfxmQYZ$G)(*4lXCvSt)$2%yd9>=J>FdvpBXj$waigMtgVn zJeTKm25_EiJNfPE3?ja&=rQ|or_=>&`vVl4d|%}!h+k6I)#%(Evm77Kf15PsZI8$D zewCc}Ob*Wv3`g~*ZmMJ5d|a!Zp?gnwJDA5_B;zXnLh0W4c&dG?eo1EHch*e32p0w)B`nV)>^)$FtS}kE)2Sc1?3}X@ z@IK063H)~O6vvO9;Z1F8@DuMB^os);yu|&jm41PrW+jP_BxR39nBF_;Sf2l?Hu6Mm z8^fub!&H3HIKrMAu(J?GWLrQU6a8J+DNtx4MAZIyu|atyy`9gL|q zHQTW=s}f(oLXMYqIe*H&oG;K#d!Fl1He{FK$V}A2ixi@gQzhpK0W27*pSW9VLdb39 z>_&AJK=v_QwK3-byE&Q@lFv_-R^olK> z@GCewY&E&5J%7Z$ymwT%mZcupZpbRcQEajr*kXjAwu z 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 QHwx_sdiM*|pS}M70PjWv0ssI2 diff --git a/src/assets/splash/iphonex_splash.png b/src/assets/splash/iphonex_splash.png index 2d9698c287839593b723dac5d25f721ada9e4edc..435bbe07a997f27800895c2170d90efc9aeba8cf 100755 GIT binary patch literal 31878 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 Ye8Neo==`wn06>xL+e{5_Zgo8If41X=&;S4c literal 42405 zcmeFZhf`B|*apg?SWskL1VrkpbO8xXT0jv{dJ71lDZPs{DFIQ@6%i0A1_VT;cLJdo zTj(IYgBa-nq=gb7_jiuF-}l{_`w!e1cV=~TIOYAl?RlT~IX=_VQD>k(M^8gT!*KJ) zbpslj!*(<@#~&X%0{$kSx3`LhhKJ_n^{Ynr-;jpV{-EJG*;t%hOic|F%jP*>UyZ9d z3V!ZEMdm5+8_o7h!9(D;KQDt@(9qCko&>)tH^%+}emnLW0sY+{hR}U^tXrW!9M)n3 zzdm^I`=Z|m@jD`Zr^fFZ@w-_5?i#<_=Wj^x8yo!wi2xe^h6KMM!EZ?L8xs761ivA{ zZ%FVP68we)-~@g{g5QwfHzfG~f&>rRCNN}GOr{%0$nneGhhqyL3aBcdR#hz#7I;W& ztgNqBa)RF1Q1YBh_`K??x{8ZQwy#K;`3!-YqX}MPj5LQnwO?LOy~pq~@F(WfYzP-; z>be|bBh594qzC^UItH`)G&Co9U`C&Y=JEqQh|Q;=`Taw`kKlI{{7!`5wE#MS|G(FQ z%eL1as|wk8N6zTx8d&J(Noy&+9eHQmkz|yyYE#O5n#F0)<1h`)UDhDta)3au%G7F-bgRo?u{hkL{8s80r zn#WH@!z zp$?|}^`Dc^``)zQt1~)yhBWsJROTVNY7+E$){XZ$>r5vzWZ0|wOn07T>fXw|>)r|W z(>&J%z*hU=wbpD;=QqL19t8)M+?$6H-1Wz7$HroEs1mXMIR04w^t91oAFBRR1V$r5 zTjrpFmWJl>lfS^C`vFgMlF@te4(rC$2zop;f*p-0OcB`}kC|t%E0pw}zxRoA$&&o! zUQZ@FH5J$gz2yUO{oDFx3QlpIsDo6br5~DmbB??DWboKlZn|=2eF%?NMw(^jv&H4s`lxUrgu-nCtFOF$#)vm1RKG-p0$){LjM z&(z3O*4q~#oD&?EDrce2QkSM1NXtgiBeZ&2=?WK9o*?#VvDz3~ESE#l za<0z~YWjVbBvKw2ReKr|H#7)pCFj^YpYT1`d_{hFF^b+*y(@m#t;MxI52u*c?xO8i z?zV$Yj75%bpZtTS@h9xJy*u|>B{?nco2C}l?K=oa%;9*cM%MB{_#d{KnKH5d1@ndY zc&nbrMkxsJW>gr5A!R(+JZd~-x%)(%rWW89#}_gbj<=xB^=FSrCh);}-ex9Mz{Fd!DB znv>3dE>(nv=ByVQaa(YOt=>hgJ?((vH4z(5yov>eAX< zz=h^J_|hJSvs4!FJV*F>Tx~j+`qD}VlaCYOhU zeu6@XiESBB{Zx)Zk#<+}`mM*tGlhdS{gZoa&4-I2S6FE>51}bf5uGU_$#YDt93E9g zhZrWE2V#9Bp~$X)PUOMWu*Z*cFX7B*g^|6RQWbAJT27|XlMX^79MA}IXnTp zb9z2ese?MmI5=RAprRElnpn&|Ih(iBXek{uCe}59V}tqvUS&;Bm=mOsZn>)-z^sSd z@XI;5nrHfU$fYg%$Z$SE7)Mg-XIF^z!MTmTv-)BvW!0>q4j$$~6gRPEMOnm)lD$mT! z=CH?3OY`6xoaY?$6=5!_KhSzgqpBgcWa4P0~0u@b=T*Pq%N8vj{f zf2MHyrx-X!xanPy^xONZ&N8?|G}^PCm$*0F^E2Uon z^XoHiBJP9bBh*vXyf)L7MKa7o;ArFu8_7$aR_bY5>be5G^#z)mts~6ruWa{5A;aJ% zY5C8w=SDv6k0y!^I+q+YMWZMI=AlbFo>p1RL!yzC-BQ}o{&+3$Sh+G{C|PpMqy!j-y8X{d`BopZ9YJ$v7i@-_RqVZG>y;L|bZKn6 z0>B=7D6}ts?BHy;KAT|CI}7TV14|?&cy8X)iW`K|G24f4X-7>3dIxru-Q>CF8at0V zn{QR!=&OSYQ@bp<4Su)`H&YY#um&?RT6u*nv$hvvqo8s0M~ zT%81s=<-we5+S5>nKbiKcX?u}2i@hg*T|Gy^l-y^DA~0k-QSBW1SPNsu=F)l zx*Lz#o+!@&_0UAP;a(}P*JvIbLUlP%(HOi(!pO92(~(Z}`Z@Npo;3L1Uyj%~eXZNhM(tmQ{zh8yzaV}~mi z)0|B#`YTI%Ur_mgQ@{N>uJ>Oedpl#&cWcR+y&~8&z0jp@a9p4@p0phsjwxZZ^*vx~ zCXH|E1^P}5eph`eeh$n3L5Gy*KyOt`UxZJz@V|gHhR~r(1;K8 zr1~ZdKp%CX?SAkLjZmo#{Zv&=H@QC2_oNiIeT0gi>YGy1{)>K8?yIxY1oL-ON%@|)giR-lxn% zMQ-)!bMW7di9dcG9QoEPT#tDTW`oFVT8t|M%rnO_AB#l@eJfW9h5kM#q zrl=gJxeCT2sz!{0Z}LlzbNt0T6nPChp=?i?PiKJanksqZ4UrcwppN# z^67?#R<)UComM| zgWart@W(r;?`&W?`SdG3K5uNu2KcN7?jOSPO%k9SJvjk;D>QaUa_MzpNnq{m~g0yA1F?@D)w05eY|aApzApGhIZhJ%K+`jYtTPL zVROH`rb&x*753H$H*o!^^tfwmo$67Wo*CvKDJm|*v#z1hY_$22Np38t$>CQEhJgvL zylG@6M9{C*IqdOk>Jo_26{vMy{;Yjdu)BrMV?oTP;)xEOuP%>Q;Z(eIY_gt4kiD{l zG#^q0bs{nkx1;kFWnDvWizkJ=7ol*w%r6LQ=p^0QgZfh~T=V{vmJ`xPXL5dZD3{qY zfO^Hs1A15fuJ}%w34LO1LTr4roxQIovFzRlaUZ<5DIAS{U+GDhP8F<(V&W+UW8y@h z5Vk@0rT#>@A$UU^Y;W$hYvtbGo$D-iGMbt&M~fPLgU1H#=THWuqZ#GPanhALd;syb`Bzy129nPeX zs!3c%nn7qCrbSiz#;M3znVg$dxfZ_0$)hVfMYN-zi1i|vNXm#uizMg${0>DHl$G8c zjg(b3fL2}L7kv2rJX2YfV^QJY-ry3PFAc;`^rV3`;lx2kY>*R*=#f6AR!Q<}6Mwbi&+Jd} z0r8h0>YlEo=r^?zKuWD@w!x} zAgLZSz0m?A4Wj6?Z2n7{rMp1QJjFaT|ZPpndo)V{W}yC5&yGn1}X3c`^wdul<=% zc+nz-R1%H>>1(l?*o1~A0swn`f4a6@6)>D+Z!J?Y)?Q?66|r;)^8MeNs^;J}dOqg4 zb8OX3_j^um)m~Y4u?npV*$HgrMmq=jPP~rR&t;I}9zt0kovDNZ8H_LhauCS;X1BI7 zV+cA@Fm-SRisgsq*ZR)7Vez`D{S!ZR>Bu}ym?E<)%YpA^PQ=X^LHt=z@PyFoS_3ru z!Tit4qG$9Z)=;g{MrHd?ANb7zztv}o3}rQEUm@avvkRdB{PXiQkaq%k8Xlt58qmBR z9YG)q8|%NnrKPm*avSNFq4cN3!8x9ox~-pRT6?pgL&?94mna#%dXaKA0LzM`B6< zEKQ;(X}++KGv8r~4v4-r9Ez3aE$gZDAKb?d#o*5rFP5hc1z+L{g@ z7(Y(v*>`+U7qT2l%O1K8zt$o6wQNCsFK9MR-^#5&zCcf!089zHyNiX>Q?;hdbEy_Q z5#ibcAL%$p%GXl>!Jvp-rZ@-?1)@y@=bjC41iYJ;ukU}HlNZs&0NxGa=#--cZ-@@8 z?wB0;g%Yxuhelbg^ky#CT_9?inWg3CiUyX!VJ#2b9ER}W)HO2mx_UgvpD+v1@a`|4 zeO8O;AqW;!8?WO42Id5S){c(cjS4~CG!9#>!bT^d({`UUFoKEVdu0)5Zpm~A7rAN` z?83gEq`%Jdj~}0It%GxVat;pH=CO#3YQ5lbGdeN=13~CejPHJw8M53I4l4U=_wSc! z*h}TvQ5eA6f_yS7Xyp2{dBe4(&qqPut%*s*bjnTkBurX$3Q{Ior$6|Q@>=u4YUj?dPi=S>)lN$8TRW~O|se{TO%uDtBM z;&*DiY^i`?oP%Jk@}G0a<(h$2&q>hvCmQw?r=v2QWhEtznD}CI+{gI|Fk$i(@TBFO zx~SeAqv?W4L9Yd8q6Ekvc-T8eODFh6uHO0^pn-&nl_1V*2bW?r9}*d`t_3auOXfXkRr&dglTG4@0DlSWQx+~|-(%7Cc`ywwBGlGC2f zud6i&#}%O29|}v1FqAE3E%wN_t-!_O#4x3sX^HtDv;JXi10P$MI71 zGE0{t*IKXao}f{_4B^wp%SDltBVaD^nYYu{5=0)<}XU60E93T}wzzf_*Jw!xV;J_-tKEI||(CbMA(d7J{YZ=2RdIoW&3hOwf z3^n$O;6=$;D7`emL=dl~-2`e*|5R4)LQuZobaHsO9T5QXS5SMo{CSjE|H#CevRt_m zwwq*TQL0|@a+NU4(*EuplaU%mi{yoTfH3qK7z zvSqU>f4D-PvwjcpV~r28f1WK6aqP~@3-Kln#{l~*W-U?lkjFnw85{^6ck% z6RUc!SeFd1_X+$m6&j&<8d)3)`jUhX+yU8nn}=wvIb++QBq<-5vFgu&`up#+RuS`z za&*K0T8Yx3#kOAPGV=d{ZB3+R_SNzd9FEX5-hdFGGL80)W@Gex-Xmjcs}pzW@PN`P zIf!?*Up90#dbo;Zu+#58o>*S2okSkrs-+zTv&AELj0Z*Dn8QCeM_5;o@9**Lb^vv6 zLJ@H+`YyWCc)EWPjNp&zL7cYm+VSd2A#qbYZe!l4J_{d=K;!CH&EKP`Ve+nF?`V6!2F!dWAH9#AV<>jNT1hXF!Y-b=;-1?LBl*H1+Wof z{gVSDrc2>bIv|OrF3R!g<5)NihzCc(K$`5oMPu8#P3rLj$eHqi$j$h9I{~^I<(Tf!DuTKi8TCD;*eN1Z^LUJ zcP^EchUUT_P%jLQ|0^kTAm-B}uC2P|FYs{$9>NX|?4zI4FF;%~u+tV7miPAk)kWX^ z!5z;@8qixIipsV%O0l=}LR4HuzQt7cD(uR;5FP%28}O*kEuWq1%DfNa=F;tny2T}%la=Pl1)pwLDeG+Llw{7H0t4kVR+_wP=OoZEY$sY?UPYl%~fvW z5C(+8f@jy#6N@*}wsz_LxcXYcJ1Z5!(j0Z<-Jg8pnW5R|_2YVpiD zX9=W)?#0g;c{~nb_PUer_QsgQqu8ChTwPm}>aUi|hX5|M@}%vaUZ_R)Cr_SrEzL-! z!G|gpar)Ia)9}SSuR(nMTC@aTwjr4(TdvjX3c(yq7A*zr`}(_N-+k6s;s5$il(xQU zi}aG~p7B#(g|8nt8NG`)LwzL=G`$?$4b5G{R~x!5(!V!3`+m9U<`_cyReyWwNx^Aa zsmk^(tFvZ7dsUfIwds!|oCvdYG>vy5obVv(iz=U^SGOg`IPjAP+;&GythvosUuH(6 zIs{oRA3J`$|8a>#dC4v(=SZ*>c=p^WJF}Yd3Z&j>WT08if{0y2((Sz!pTWvEs<}gZ z2@e2Br?}3m3V405V&MpWn@?9j|NI|mBmYjz}WYT<#b$s(jcVd5$1}&OAMh{f4p!< zGQ%}%fYd+%Ox@0}C0GEyuZ9=5{n<-IZq>XusYqDd!SV2YP>*>b%(ktk;hN~%sqh^% zNI*y`ZERE)u`>^KoUrVz6t4n-QF&RrC9fy)g;lOi)1j<1Ee{^Ax9VO*6Ct5&{nsMr zj~yHxB)n&Jwp?P~0z7pI?Pzy=`#Y`^kxD4?+9}n~k-scuf-U8}Xf*xGc|&K~go_iJ z=E#~-)V?=wQ1r)-Kg3p@$;_z|F1Pul)K@~RN5eS(AephRcAlMC+cdqn_}j$mTWu`DhDC2I`sz2z0Z=k9E+Xd5fuYTmL_n&|r4#Ioq z9N-7qT@B5>->v#rv1AHX3728^C;Nt(nuneu3Td(X^4yM-g-@NG_cZ8s`b&o&)>sGy z7=_!%a`%rsin4kPjWoulfH!Fe7zQNkRLiW{-L2XHye|1#imcii8x%M|(PG5?bH`S^>l`j*{lP67Y7qtxHHyu#!sc zcG^iq2j)!1N1y@zycIew7A@PY6pam8tJ08ncXpju3p@M)Dl-dknd#|^#mbd`D|i5} zcjl+7i;UuHW7fZx!7anoD0jRZK|1JO_&JE=ltrT{MhGz(xdA^0k zl&pK(w;cT=uQ9mkW4zXEt4m^hRr7ZK8(hwnkaFMtkb+OkNc6owTSC%hfG>9?=AzCB190+iVaRNzS%l6Hxzw9e1cRUE5z|+mQavLY6f5b;v@ZfMw3nPA# zzGEke)EbE?{nf3pyCCU56O>V43gHilz}B5V$Dn9ii^s(M-Ns)lu>3f=DEAmV6gth3?1`S1rI8U^Mh zfqyPXmw^3z#esU9?r{EH^kZP!Uw~%z?@j6-*ueFQu;qb5atQm>d3^l_8n`e5+dcmZM$fIly3+aG*MZ{VTa$ z?)EQK0Jg&AR(Y2y)Y7h+g(kl=e*YrQW9}!JV#&GXg9=^p*39IO9xmB>iC@9IpYBhH zjWM$h;){Iz_=)qKmH-rqBKwwkXnhIHbMWEgtO7ER$311{k|)3|-x~kpKTa)BfW{ zP65mpK>UD_VRHR@<;qlUmyyElXRD^NhUR+d;|!Dc$*wJ68I=WS(Ibdau!q27qRMW! z$+QZaXGHUiUpi-UD@Rqnp6o)0uK^pNFoc-jQv}X3pzwG<|C!UN&TwMDy|7aFqEQ=e zabu#@qqY#<(j@~rWV6BuU8)PFu$kFuW&2(4{-U6oNgS^g#}+3T7{Cq-j~O>3D;j*s zm5Gg!?%$5!c=iuh!NZKBsNo#}aIVXT5jd*@Rh;F4s^JzU{rx))I8X(k*`pCOHmFCH zf%yue6F``44foWq<+W<2It3X=e!kA{I6St$;8;amg)uFVD+E$c+Jfix#4Bz|x*YtW zs>XX3M3~_4y3v4l$9GRFG2vpXdv`T6b$KKfr>!K{6)DWt8rmRY8zW4-BYKjGo%j~THcXUv= za{Q?m3PyLurdbM4wK{0sp3-kk9?T7Yw6$jzs@MgJmY=|SUM8OU_Vaw+i!OSa2WbzX zmMCKz)nd{#=5^H~w9aPLU;74qCreuU#vO2$z0?15mfg6F`n2|e{irh6eqP?APVBv} zS9>L0KB4~IH+hc@25Z{S2sh;Zh_i}AZRMVCijYAH10V%Y5=Tz6oXcDod$C)*Tl2P{ zG1zUqp1WE;2`rr zM2ksN#>HvWtt*OBZ4tUO0XmDG{Y+cP5d?41UT)6QV1u4^sTl`=7ypFVh(?~Zn9PM{ zFl*;E9yI3BlR~@Vfi%r&@nP>ddA`x@d=6})Nlr3*!(A6mf*lVr9gg`9MZkK41%gxC zK~wJVo}b-x9D8c=h1Gew#1eA&q%b5zdF0v>Tf3HLU%Q)EI*@`gGKhz?SbvhBT)g}D z7)xPd%ZuIn{SA-sw3IlhNk>b|f@_a{p3-nOh+Js3>U~)s8u1jSVNZb~=&EVocA!3T z?^_AjFbq6o&WgKi|8SLUNDM@*j;amX-M)zziqQ+Vpj@Yoyd61w7UP2dV`> zF^wnVRuilF@ez8GFoVU2k*|i}Dwg12C)UoAR`ms{rCxdf>7KMD`yBoOU94v%H`TFKw{-IE-Nm}_libiCoZ^rqEpSVXHRARuZr>m$Xmu2l83a| zPq%_`e|b?O61AS8fdgb->q}BQLaINgPbu0H=n{Z1>8fzC1;^HSPr6L>@L2ktaf(LQ z8@r%*GQ>@Y+Z3=YQ@ej5u$q0>7SUMjy&v&0vwgxBkIm50C>O)6;@QU^Y;xjM1~3iD z1D@z65R*I+?e9{|{aooy#FetLCgo4B%X!})wUA&Q3LFQj5ojaZD!Cl;HYRKdu4a8LXaWwS?Edm5Ko#xPq2}iAJ`dMvlY-Ll;b~~z^{uY3#b2rAWxB*Xl#EJsHk-Ky zog)`Zj=w}=fBiH8$fmf8d3y(xVofV3ne_Hjbkp6F8-j6(HR~?m1TjFW2F7WbXhFIC zJo?D-+h|Zg_@N*yCQih+yMaj@?Btgi>_qz~jon&;zrY2s?ipLgNZIbAzd^er4I6my z^nNAZVpxhQ_a3j&=nxP`+6101dDfbDC7-t`O4=x;aRyj zi{4}`nFVdMG%E8cgDu)2?6RJHD|RwgKSW>O>4RSaSTn$M;@oY2O~P|}SKSm53#YlB z`tW}n3;8d#7pVS^Oo#rj{^k)Kf_;?RMTKJ1aY-rjb)^weq9P%-MwwS6MBF44GqM`r z9?SJAYTV%an-}!Q#g!nB(?K3rq>p*dIRWnvi1ei04?ywfu~!t&DkXgW60l_#3~dn) z<(Ay`23CG8V}C7%R0VJ)`z6wNrS2z>bdBov(b{jSNA|{+9;*_ZdtxwV_cuzY;E-W~ zq@coj5jLAK(_+8w-EJDD?3}P}M z;&~hcX)K5D{(RP&+a>h3Q_Sk{sAjup??%C3t=zIakPQJAu6LJXtDMo6-io5_-{kIe zauhtJ7Ao<|bB+I(u-pNJ<-2U&IXqZV+!hjX)3)8c{>O29x4gs_=bYojc<82oi|c5UkFbYgI)-fFhJPCC|nE#UMaQ5>;|@O z`Tcx0({DNOx{Q`M*=TvEGf3NG=aMxb&uH2Bp@CYfvpeaWMfJq?8vrDafP;K++T-56 zmyw+fXUhPwwCItWTZz&?ElzOgH@Sc7{Y;1Bz=r}Ea{z$RbmR-EC~KL3VqVLvl zjq6f@9!_f{zG2rXLW8Q+ZT)mf&*48hln#CXk;ET`jVTKkqgz(QeLu;n@;R_UH9iw6 zfNGLJh|urPzNx>tb*jR)kPfUzkdpjvUOMd8s#zKRo6l0hEEpr z%PSKQgoU~I%MXW*us9uVqYwu`xoHChikmP}??YwP)ysJYr4ns@M(ZV8KrUx&UBPhD z?g)b|=^9q*X^P_%VJi-(innD-5?)u_>h;^}ScJzkR=MN0Yn=y~&yuP7*KYnqJwHVA z=MC78!Yx*04r7lh>ymYNz{Ik=2AsIGBujn9Aa zoD|{W-olW;Iuyf$oB7JrUp8qnwKq;5b+R-`2{6@VwJLV}sXGOz^aLKQlj-+WN5`+=Mw~8k$TU@o24JwCy}79P?@r zo+Wu`dJEHoinsZV%M&qGneWuSfFb7G zT4HbR^Ho4;J5-eJGR8{&y`A_vCd)YY{)!BkU@7h`wa08b_X|mbA%oldAttU@TjkRKIr6;w)J8mraROL>P4w=ucy?dsg+YFxhWCVnZ<$+{6e>o@@m8>h}M}+rI z2OXr0GpL;VlNIp*!~*GvJecD3c_eb0hLQ)FlO+b>lKSgGr&-yGe(@_E;Oy!_X=Cs@ z<>Kv{3mL`6l^!PHmzzG_`43QX`i@lqsKVZwuW(=2e;vFr%k90XU!=9+0gX(E0oC)F@gw9?pFZXsC42gkOA4p?c62&B43^G<_ zhm$VjuWzDE6k+3l(#VyYd#l_mblguf(}M>Gc7G_aK^$J3=y~m_N@z%~i;a;ILTY;6tV9qwY@M^8*0iCqokE6ETrx7p)E% z8)Rf28a{=$<*PraDea^dMwl!M2T!qtJsydG#z|!er9~VwG_arh{7~jmDQJ#136>U= zf*D=Qbg=RQRZdaX%0*aoyWy8==@if~H_+DLb%ESKIdd17%Nd-@CN+B|;f>oKJDK^f zbGc=*42hmUBCF_KkD?K#vo+dRs5LQ3g#vd-aMJVq37PxJ^0kOo9>2^&dOy|E{}+<3 z&2Fsk8_JjobC5!ccL5|Fcc!qrUVAbS6R?6Gmp#Q;~#(%<$f(o^`~#DHf6C<mdT3L>GF^*2@r%+k-f)%e7&To&CvXbyoYyK=Ad8w+3)eqV`1vAW!0MHRAHm>>)(O#!8KD%aqGx-o?_BgXRI$q@w<< zPzcezv_7&Jv!YMVs_Y*$-*ll4eOs7UTDw3ZYP$~3(+RyycjFp0)hKafUOm{~#KBmr z;)ywI9XNbOmgf8`yIO6he4TpU@P!>2?s(h$SW-LNzhxT6L|zIbF+1s#@$K6uLLA3- zCS&z5diXhg0^lYdG(ZcGCk3*^gt?#{DKJ!l^k4QH8}y+gXAnd=(ffWKZ^}MyzaeGt zP3PeE-b}*I^Z}n7d>f8=1nd97qOqG^lsI|MJ(sNPT14n zled6|7HBUjYzbD|Dnzk^wD;qK%vgygs1p8Ug-UMm8FpC>2Gttxy5%P!u-0=4s9Zoe zy|BxQ{R?8a$l+_bT}H}r@#kpXauu*YR>l|i4NBwt7l9a5g|5#>3p3=zHRD% zfF{8o4a5NkR@DVVr7z&bQG(r@OcLLbliV`b19)q})uAzEPMj*T50VP$!O4ZxV zP&(7FTITwU2o+o!D@gftQhs{4yxMHDyaa5BLfb(Il^5;ZGDOUP^AW@Z6XSyVi{Qo`EH6r{U z6Ps=>i=vwO%dk8M!itd6t){PbE}y_Z!jxUX(kuGm0})--4# zG0)z7NuCU?=naGWZ>sXXXQR%L??^n4E1y;bbK$tsa?-R=v?ur?i>dYfn~=hx>A*98 zak*9i9d$9Zs=Vw93Eii^tnBVr76JJVB>k&cZ4eS0c?Wd$tER(k*vnShKB;7|K{@;D z`vgEYj(&)5FC~I{db2l6Nx71G4qCV3l!7AxwQpcHmVF5A zu?^(YZ{ZK1z%W+#H)yG%hp;Ik*o>xBrw?iJtpaY62OXTx#BRNNQ)hLypb^h#2ckH( zjcVAF=f|wr@Bxk~W;muUdwQpg%+}8YXxe{u&^*Y2!|Hibbs2sm`nydGMDFZm8x`ET z-*@A`3M>zl`V>IeLQ8Mlk8Ljz*#q;cHhJdLOhM`{7n&maE6a-x1Nrf|gCpUSs{?3VtL0q+|1tlFp7@MTLZpt&=hmN)_R7ByJxF0p|O-r&3f8|d8z~3 zmxl=&t5}I||4!_Za-mGdBK%8MJyvdzK2sf5>Kn=mSN5o>>)PTa+No(9@Yx;#&CFWrnqf$6XVj4KZuJTidZpndE-meY?`Wat71U zzId)`|1Ra|#G^ski7v{1kXB^d%KdT_UvX04SVb4kN*!xi9)MhT^1g)^*2t6R4Kb$C z6VN~Mz}Mp*)pT`8sz{n5f+f;vThIE9ZOu!05MD}!JkMZS310|5)sl)*;pNTn-2A** zvQBQ`O>Ug%BQOn_Mp8sO?u}J^KqJ=4sS*B1bqMVi9-kZY+_ew3x-x334L3|nh1EFs z-fQy}ukX9&4C1H}mg-bC#i#>`YFCVi&=Vb5iIzD6WB)g1J6kX{$h67 zWpwjl^1GnP7}>icV~6-{h8`yCTlS0ZG=!R0Yn!ut@}>G+1y>|DB88h30_B=F6n4Aj zg6GDwQ)-YJ;onUEQ2zTm8_h`hZAHT8Wj0-w>BHn+m&u5%fqFI2yyX zrMNQq0~40NcwK%u=`L;H)}TILo9E;;zG5#7-iXz9hU*Gjy8Hd}avPUALsIx_MQ0lH^63+h}iXn zKWtu6*_(6n6#_aZ|GL0MdD{WvKyDdL6~R^u^!lu^D%f58^86LHIn7?mg$nmk?U@i)_u>?5rYOhYfg zE8L~6$syKnPR3xpzS(LGZM>R8x(2L;9C|SyG`)8=Xlt>Bzu1coyWF)eQO&u3NiM%q zsnxj}+?6IePT-JojZgoBVb8lCqRjkgDFd!dLq7WUn-Q4qbT8_Uu3Yg?N4p|7g{kFs zzySX-nf}9M1~-M!WZ~v^|DU#6wZz$OVz_Jzl|eGIboT9B&B8O|>-@n9N?)7rtUE*AK@@khh}>4piFN zFq*OP??WtKu!-My&##%!>PT(uB*NB%$Y(*oM=`-Pbo8D&_GS`QF@R#_tRe3xZUrRYGgXh9);TXnJueu;I8B*ocEvfocZPd^;3Le_&&WR5c!W5sSh zrlB2O`R zvP(Pb&XH?txo45K?)he(3ch1I#;-hDY{3%)X=~<*^)B>RmeE>FLpX9BH&LdRrB1Em zd1-j=kC4R~0YTv?_rWnXl~cj5cPc%WkCXO*D$J3D%P>oJK@|lEXw+>bXReBhL#P(4E^>42`!#-Vv_)+RuZWE?q zo@q$JkE%!*+jHGGiwv$!`^mggLDWjg#&y=Zl}167Hj1&4Ll#2uXx&JMu7!W!vKPU9%W!~ z&Z5SWh1gUOxtO5D?KgHX>#+gX-YULghvi)t^Qr~MjpX|(Mt&|zsl`$mxs%M@4of&U z=}=53D0k`Y>sjeqO<772tzk*&@ADOQ)@dIEK|Wyr6ll&?(9CutbUbrxlwve8s3YZJ^IfZR@T{O0d@C z0p)DX+Wc8bjEXnAq@WNen^bgpW$VIR@Y1;WkDvTjs&ETTY3y7bHpr?LSl^q~FQ3N> zEXiEj2k)Z*zt8&9!hg6$_lw@>XRda|kJ!`JECUUf%z<3txq3;E`X{ERnY#-p)8co2 z#JrZaQNLt%@1pUNf4)_r-$-lEtmZ*5;6o z_l*3OF%zE?2z@6Tp4P-4K)kyKRV>knWko@9 z=gt({e@#7U*L5Cb?&^lBfE6skj6a)g~RxJBK3ScPow0#P81KpG7Q; zoJB4Z&MNx5MI;3~XeHK2WL_F#?`2Wqkcj6BXKOq4CBjaZ(9W!GLvFPZ51cM}jq2(b zPI;Eo#`vXg`stlkpQAQC<&0k*s|MPTq-yT`i0BZvT`LfG9NX*;>3cY*=&iPK_6kyN z>)bgMXHDwX2i~Fv)2PsHul^4oqbT^s!@iw7APTyt!n)GeI$6`bzrOxo%Pw&Q8*-oz zYGydM+|og_;938iD063OTU+0FA>`-Ij3AWbCn^YURrt|9FtVt6*M0)z8u)+nLP+?U zlW>fZ7)>*jZ{3TQy~5HuBgp`Qq!R1Z2a+QZjAK9BUMp;jfG3)1&I%4TH7bTQbK07D zf*;}Wl4}h*-QN|$#Vj+%njw`8-RTM|06*_!@GB@!>xmMzbS;2=0IXu)ah-4R;s4(G zrK{;{J<}^CF-MVpm7;K@-@z4!*p^@2L5Bf}&dqs_5DPjTH){E;^lu{gxqt6y4AT3# zdVV--5q0H!QX|rnfJW#R%Ac-i54aNG!xp=Tz3P%Pr+6h`f^3@vYW*xO11!@Q-f4Xy zhP>!u6aL>j4b<2)RNAzr6ivnmf-(k>k2dEP=HB?TE49nlFC~{M<_gR6h1h>JYt5Bc ztFWtS2uJ(^2jfGYle-=*M%N zhFl)K#x%6~sQp64p16HfJ@3x?!+`;R^6uH6Lp5RA*4%Ds$4R?TO7*K@!@2haG@k0} zK($s70B6dX7OZx@7S#3Emu;_}R*-PC;N&xB$E;A?a4=#ScZ~Kw zAa%trOaKOxtZKv&Akk`H@V~dpGg->gERYFJp7opz(C0IWmIYS2TC5pFoV_fyBk^d! zSTV?KV`BG}1la%maziHY0(7eZp&EaySZ`AN9`+Aq8_)y72Zrii2mC+*sTl@@Q9wimm8uj$5n`lCOGIas4g!LJ zfD#4iMS;-q69}CFlpdml-a>~YklcNO&dj=h?(e%6KhAQAdd_?HyZ5vAex7|^_jDZy zX!Hs>$7*_6V9axXS6!*%!YSVFJp_G=@U;7LLDG~t(1?YBcoo9=p&6D$zT zu5f@%`>^TNl9cu5%&l$j8mop{cbl4dw)(ZLM?Z4X@JndLQr;yu+2BLlGcdoinouw0 z5Zk0Vx~*JQnj0vSLds=zM=sSc@Kxa*vAxpo?o5=oz3Oe>Me(r{Ez$0p6nB6=!sJC& z3!m*V%e6xdVZLH-j=SrgeP(%Y2MJkhs8O}SAoG)AV=~(IHpVFeIROl{SADAP?X@Bu^<6!KY%Gm_2=9N`(}6tr&weGXjAyX6O6?vg1stksbEB$4;eTDto8t@GeNC6jzxmHo)o zSW3FiL;ap0EA8=JNoU5}MU5`b7$~9w!;qjB>i4znS6{dg1PBew7lW*wB%_|k(pD>3 z&XM!zFBxjx(|e9oEJC31(getm9E?WZoJd}LbAn*o(P7l?@%ub{#+pq()ePRb?p`J90pb#8UFP56wN=P=LO0fzEhItBIm_xtz5E#gg^MPp{EfOf zVN|8{;+LG-aXZ{cH}(;jd$8V&ke@6`UqH-lB9_393BwuUJJ+ZcS!#Y3PY>5cRV><> zGp4w);|d}XXjPQM??}ikPJB9{Xi<;~O))rw(;YY?BV3vIRofiDG&5%2aT4xl()CKu zwfu%*#LlS+=p#MHo1`zzx5r?|C$<{3r+G6*xlv30@N&?D&_wdiZ|$lT-uh z!sVMhmiu+1*YcqO!FQiSVxcKoBBy$GOGgB9FXN9nfnt5Q{t1%ryYomjobnp-cT8ol zo;V{(I@ZTx9$6G(@sPm$z^igMFCDO=cdbd~noSZhyl}fmO;nMA!1W@Q+)YbQv#983 z34G{ZaVkw$Ma#wMX6-wtd_tLtFmuvqRV&eo-ydUHDgn)~5ZAAw$Ud~Cc2sq%x#6k2 z-J_>x`b;?Mvw<6u6wCOETF?j9z09AkDgVa7(~>Mtc>uKhjn33QJk48gWcUO%0$FXR zny>_!aReWVx}XcY;b7k5ac(Ms{TqSP!)x?Dgga9r0MNNR*OaqkiORRrRV47ye+{Oq zXs2#BOQwDB=v^dYqIXWc1N3rf4I|jD4lTCsN8RSUd$Cpw>7*W>e3KKKoo8Z6B4rW_ zW3?UbIV>lA@ps3LHD*Mh4IPe3@I7n0!AKt~V6)=@=}4TKWnrg0lyo)RY{3{yU*GxB zohUaXN`JHSH10p`?o#HpATn*u#YD;)KIo*= z25zH6t%CC=j;`!DSS-J$xl&g}tdJFgUQe+#<-%npPmv?Yw*zZQYLBP~{ zzDjv+Hd#D1zRI$zZ0A%8?87eky`8XmR$Fp2{uXRv*4p&jjrlI8&osk+SuV0+Ph&`lA^4!BM#})~$DE+JblLhOvMQu-Ymo^g51{LZiF>$i2995-V>! zz1&lDMWztYBS}UfSibmSQ-$h4XnDbM|D5|&|7;A=Z9MP!f9Dxv?RkdtmD?$IB;LF+ zYP0#(HPO>-v1hqMaJBl0+-w@Yx+;~`W*dGB+TU83grAGn-vY{Twt%gy8q3ayy_!aJ zAXBloRx0Y*VyJ@+sPO*T0jl+AzkQrXf6F(eN}8)2N!~4VTM8K=*q_Oy1p=L_q~>tn0Yi!E<`P&YEJ!(v$OP zvty^+>=sLw?(XhpJ|V8v8xGDNPO2H!WntaJ>qli`?RUjjIiIR~-@a|R=EUd^@~M;v zI&1C{_G<;(U$3_LEW3#7OBq0Lcz^KEdV_zpTNU!V(Jl3n(CfSv0Fnh*<9 z1M}ynN){5juT9Q0V`^*7*oXOBy`^hIP4|_1h582u#tq?B+m9n&_()2p>)K>8rI#S* zKufZ&`)X)i7nxM^<#4KnrQ?Nc>Bz6|-b6p=a2#q^IP0V$dXJEvS=Ru9gEWV)0|ToORCr#H<z` zl4ICLv9>W|zyY-4EET^5Dv|cc6Kbt4Gx^fOQ)0Fif%0aQ0P#D%O1Ru5a(5nF705MB z?#`!&5Qn4jVKrSELYGp>e224%ieAgYe8$EJk?gGcOV>OvyUvJ;KC$E@r)Gs}G_F)v z^@WkbxmkjTc@l$<^Y{uM=E3tL*T=nhca^#W&MI}M`0X~*PbsixX4kn??ZcIE$7Ju* zldx^=PDU3mZo^|xEslU^XWcR<_Gd^9KnH{T-CfVCoI%32griq>%X=gU*}8w)5j)*C z5aLu&=18?h7q64M%a*h=duB_ox>FnFM&qDk`=n~US|`y~#9kfiPVOLy6y|*0*V3*O*6>Gh$X4Qcp zRrfLhkF_u5#PUu?7CtOqX-zUZ(??-M*7HzGONCOczA3Mkj%;8>j6tZg`V$>D1Esl< z1Mp(n#zkA&uvO2;RPMPizVNYGjQ6;*+jQ>2Zi|)Qg1cE>!9C0(LFSmQ+{~Pz_0$JL zYJ;f_4^G%75#F~;`194MTY|PNz*vtTJo&bm{T$yAhul%TK*`xJ8^6`$3 z^w*`|jdRm#YD*3K?yh*}eVtjcSyxZZ$|zV)T%mS~m+>h%(Y4HrMn)6U?s`-ISE zGPe$?;&5`~aAY#GuDH!{Eq_dPx=`>mEt}|5?<+U-m}I@0rEBv^6djPavL-7zrM@px zTv;emeEo=|`tn)*OodmSt0Y5_D~@0!kr4Ti9kFTy5w}{flzt%jAVWZRy`e0K?1-gR zcpa-K;w0tE^LUqU`!3w(Xx^{7(sNQO_vA+1web(2#4VTl2pC3*=;^OBlaIÐYy9 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 diff --git a/src/assets/splash/iphonexr_splash.png b/src/assets/splash/iphonexr_splash.png index 0f911eb2e889de75b9eb81da45f898655ff10708..b6072df329193a72cbbbe9cfb5e79cdb1bf89d9d 100755 GIT binary patch literal 23870 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 literal 31989 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 literal 36913 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 literal 46402 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 SD;qYy`%zQ>Vv)wJpZ*t}Dx53; literal 44271 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%0DZi^(apr^k9r(m?S;7o%S+D2_vw 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

    jd&T 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%0AxtwZ@ua=@?&`eM^d793gs1e*XfSopdrngsOB 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 G!2bZ^0q9zsBQPNzvp?r@B6*)_s7@x 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 diff --git a/src/touchicon72.png b/src/touchicon72.png index 101143aa2d825015dc11800301a16f5afda19b74..dfefc075f2c49b04b52270af0353eb3a653c3ae8 100644 GIT binary patch delta 3514 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 delta 3522 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 From 61efaa2fa4f9ca745b75b75c047c3864d44c5270 Mon Sep 17 00:00:00 2001 From: gnehs Date: Tue, 22 Sep 2020 02:17:06 +0000 Subject: [PATCH 345/582] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 44 +++++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 54d8593590..0b953aa8dd 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -469,7 +469,7 @@ "HeaderLoginFailure": "登入失敗", "HeaderMedia": "媒體", "HeaderMetadataSettings": "中繼資料設定", - "HeaderMoreLikeThis": "更多類似的", + "HeaderMoreLikeThis": "類似影片", "HeaderMusicQuality": "音質", "HeaderMyDevice": "我的裝置", "HeaderMyMedia": "我的媒體", @@ -590,7 +590,7 @@ "LabelAuthProvider": "認證提供者:", "LabelAutomaticallyRefreshInternetMetadataEvery": "從網路自動抓取中繼資料:", "LabelBindToLocalNetworkAddress": "綁定本地網路地址:", - "LabelBindToLocalNetworkAddressHelp": "(選用)覆蓋 HTTP 伺服器綁定的本地 IP 位址。如果留空,伺服器將會監聽所有可用的地址。改變此欄位需重啟 Jellyfin 伺服器。", + "LabelBindToLocalNetworkAddressHelp": "(選用)覆蓋 HTTP 伺服器綁定的本地 IP 位址。留空則將監聽所有可用的位址。更改此欄位需重啟伺服器。", "LabelBirthDate": "出生日期:", "LabelBirthYear": "出生年:", "LabelBlastMessageInterval": "活動信號的時間間隔", @@ -721,7 +721,7 @@ "DashboardOperatingSystem": "作業系統:{0}", "LabelVideoCodec": "影片編碼:", "LabelYear": "年:", - "LatestFromLibrary": "最新 {0}", + "LatestFromLibrary": "最新的{0}", "Logo": "標誌", "ManageLibrary": "管理媒體庫", "MarkPlayed": "標記為已播放", @@ -1159,7 +1159,7 @@ "LabelKodiMetadataSaveImagePathsHelp": "若如果您的圖片檔案名稱不符合 Kodi 規範,建議啟用。", "LabelKodiMetadataUser": "儲存這些使用者的觀看資料到 NFO 檔案中:", "LabelKodiMetadataUserHelp": "儲存觀看資料到 NFO 檔案中以便其他應用程式使用。", - "LabelMetadataReadersHelp": "優先排序您的中繼資料屬性來源,首個找到的文件將被讀取。", + "LabelMetadataReadersHelp": "優先排序您的中繼資料屬性來源,將會讀取首個找到的檔案。", "LabelMetadataSavers": "中繼資料儲存方式:", "LabelModelDescription": "型號描述", "LabelModelName": "型號名稱", @@ -1365,8 +1365,38 @@ "LabelIconMaxResHelp": "透過 upnp:icon 屬性使用的圖示最高解析度。", "LabelAlbumArtMaxResHelp": "透過 upnp:albumArtURI 屬性使用的專輯封面最高解析度。", "Other": "其它", - "EnableQuickConnect": "在此服務器上啟用快速連接", - "ButtonUseQuickConnect": "使用快速連接", + "EnableQuickConnect": "在此伺服器上啟用 Quick Connect", + "ButtonUseQuickConnect": "使用 Quick Connect", "ButtonActivate": "啟用", - "Authorize": "授權" + "Authorize": "授權", + "QuickConnectDescription": "要使用 Quick Connect 登入,請選擇您登入的裝置上的「Quick Connect」按鈕,然後輸入下面顯示的代號。", + "QuickConnectDeactivated": "在登入請求獲得批准之前無法使用 Quick Connect", + "LabelOpenclDevice": "OpenCL 裝置:", + "LabelColorTransfer": "色彩轉換:", + "LabelColorSpace": "色域:", + "LabelVideoRange": "動態範圍:", + "MediaInfoColorTransfer": "色彩轉換", + "MediaInfoColorSpace": "色域", + "MediaInfoVideoRange": "動態範圍", + "Bwdif": "BWDIF", + "UseDoubleRateDeinterlacing": "去交錯時將影格數量翻倍", + "ThumbCard": "縮圖卡片", + "SpecialFeatures": "特殊功能", + "QuickConnectNotActive": "Quick Connect 尚未於該伺服器上啟用", + "QuickConnectNotAvailable": "聯繫伺服器管理員以啟用 Quick Connect", + "QuickConnectInvalidCode": "Quick Connect 代號無效", + "KnownProxiesHelp": "連接到 Jellyfin 介面時使用的已知 Proxy IP 位址之逗號分隔列表。這是正確使用 X-Forwarded-For 標頭所需的。儲存後需要重新啟動。", + "LabelMaxMuxingQueueSize": "最大混合器佇列大小:", + "VideoAudio": "影片音訊", + "Video": "影片", + "QuickConnectAuthorizeFail": "未知的 Quick Connect 代號", + "QuickConnectAuthorizeSuccess": "需要認證", + "QuickConnectAuthorizeCode": "輸入代號 {0} 來登入", + "QuickConnectActivationSuccessful": "成功啟用", + "QuickConnect": "Quick Connect", + "PosterCard": "海報卡片", + "PlaybackRate": "播放速度", + "LabelQuickConnectCode": "Quick Connect 代號:", + "LabelKnownProxies": "已知 Proxy:", + "LabelCurrentStatus": "目前狀態:" } From ecad2e4bda6427bc15bb1a0115b5a2b11801d6c9 Mon Sep 17 00:00:00 2001 From: Ian Walton Date: Tue, 22 Sep 2020 07:34:46 -0400 Subject: [PATCH 346/582] Fix PR issues. --- src/components/playback/playerSelectionMenu.js | 8 +++----- src/scripts/autocast.js | 6 ++---- src/scripts/libraryMenu.js | 6 ------ 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/components/playback/playerSelectionMenu.js b/src/components/playback/playerSelectionMenu.js index dcf36dd9b4..0afa56faf4 100644 --- a/src/components/playback/playerSelectionMenu.js +++ b/src/components/playback/playerSelectionMenu.js @@ -220,18 +220,16 @@ function showActivePlayerMenuInternal(dialogHelper, playerInfo) { html += ''; } - html += '

    '; if (autocast.supported()) { - html += '
    '; - html += '
    '; html += ''; diff --git a/src/scripts/autocast.js b/src/scripts/autocast.js index 4d191a62da..84e07b32cd 100644 --- a/src/scripts/autocast.js +++ b/src/scripts/autocast.js @@ -11,7 +11,7 @@ export function enable(enabled) { if (enabled) { const currentPlayerInfo = playbackManager.getPlayerInfo(); - if (currentPlayerInfo && currentPlayerInfo.id && currentPlayerInfo.id) { + if (currentPlayerInfo && currentPlayerInfo.id) { localStorage.setItem('autocastPlayerId', currentPlayerInfo.id); } } else { @@ -29,8 +29,6 @@ export function isEnabled() { } function onOpen() { - if (!supported()) return; - const playerId = localStorage.getItem('autocastPlayerId'); playbackManager.getTargets().then(function (targets) { @@ -44,6 +42,6 @@ function onOpen() { } const apiClient = window.connectionManager.currentApiClient(); -if (apiClient) { +if (apiClient && supported()) { events.on(apiClient, 'websocketopen', onOpen); } diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 7a332a853c..680143ccf1 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -911,12 +911,6 @@ import 'flexStyles'; } } - function ensureHeader() { - return new Promise(function (resolve) { - window.connectionManager.user(getCurrentApiClient()).then(updateUserInHeader).then(resolve); - }); - } - let currentPageType; pageClassOn('pagebeforeshow', 'page', function (e) { if (!this.classList.contains('withTabs')) { From cd78c7bf9795136a79d22d95af4093b9c1368ef0 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Tue, 22 Sep 2020 14:46:24 +0000 Subject: [PATCH 347/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 86 ++++++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 41 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 28d1a6c3c4..749629eb83 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -1,12 +1,12 @@ { "Add": "Thêm", "All": "Tất cả", - "MessageBrowsePluginCatalog": "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 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", "ButtonRemove": "Gỡ bỏ", "ButtonSelectDirectory": "Lựa chọn trực tiếp", - "ButtonSignOut": "Sign out", + "ButtonSignOut": "Đăng xuất", "Delete": "Xóa", "DeleteImage": "Xóa hình ảnh", "DeleteImageConfirmation": "Bạn có chắc muốn xóa hình ảnh này?", @@ -68,11 +68,11 @@ "Sunday": "Chủ Nhật", "TabCatalog": "Danh mục", "TabLatest": "Mới nhất", - "TabMyPlugins": "Các plugin của tôi", + "TabMyPlugins": "Plugin Của Tôi", "TabNetworks": "Mạng", "TabProfiles": "Hồ sơ", "TabServer": "Máy chủ", - "TabUpcoming": "Sắp diễn ra", + "TabUpcoming": "Sắp Công Chiếu", "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}?", @@ -121,7 +121,7 @@ "Backdrops": "Phông nền", "Backdrop": "Phông nền", "Auto": "Tự động", - "AuthProviderHelp": "Chọn nhà cung cấp xác thực được dùng để xác thực mật khẩu người dùng này.", + "AuthProviderHelp": "Chọn cách xác thực dùng để xác thực mật khẩu người dùng này.", "Audio": "Âm thanh", "AspectRatio": "Tỷ lệ khung hình", "AskAdminToCreateLibrary": "Yêu cầu quản trị viên tạo thư viện.", @@ -147,7 +147,7 @@ "AllComplexFormats": "Tất cả các định dạng phức tạp (ASS, SSA, VOBSUB, PGS, SUB, IDX, ...)", "AllChannels": "Tất cả các kênh", "Alerts": "Cảnh Báo", - "Albums": "Bộ Sưu Tập", + "Albums": "Albums", "Aired": "Đã phát sóng", "AirDate": "Ngày phát sóng", "AdditionalNotificationServices": "Duyệt qua danh mục plugin để cài đặt các dịch vụ thông báo bổ sung.", @@ -208,13 +208,13 @@ "Banner": "Ảnh bìa", "Art": "Nghệ thuật", "Artist": "Nghệ Sĩ", - "AllowFfmpegThrottlingHelp": "Tạm dừng quá trình chuyển mã hoặc chuyển đổi định dạng để tiết kiệm tài nguyên máy chủ khi việc này đã đủ để phát so với vị trí hiện tại. Điều này hữu hiệu khi không tua nhanh thường xuyên lúc nghe nhạc hoặc xem phim. Hãy tắt tính năng này nếu có hiện tượng giật lag khi nghe nhạc hoặc xem phim.", + "AllowFfmpegThrottlingHelp": "Tạm dừng quá trình chuyển mã hoặc chuyển đổi định dạng để tiết kiệm tài nguyên máy chủ khi việc này đã đủ để phát so với vị trí hiện tại. Điều này hữu hiệu khi không tua nhanh thường xuyên lúc nghe nhạc hoặc xem phim. Tắt tính năng này nếu bạn gặp sự cố khi phát lại.", "AllowFfmpegThrottling": "Điều tiết sự chuyển mã", "AlbumArtist": "Nghệ sĩ Album", "Album": "Album", "DisplayMissingEpisodesWithinSeasonsHelp": "Thiết lập này cũng phải được kích hoạt trong thiết lập máy chủ dành cho thư viện phim bộ.", "DisplayMissingEpisodesWithinSeasons": "Hiển thị những tập phim bị thiếu trong mỗi phần", - "DisplayInOtherHomeScreenSections": "Những phần hiển thị trên trang chính như là nội dung mới nhất và nội dung tiếp theo", + "DisplayInOtherHomeScreenSections": "Hiển thị các phần của màn hình trang chủ như là phương tiện gần đây nhất và xem tiếp", "DisplayInMyMedia": "Hiển thị trên trang chính", "Display": "Hiển thị", "Disconnect": "Ngắt kết nối", @@ -252,11 +252,11 @@ "DownloadsValue": "{0} đã tải xuống", "EnableColorCodedBackgrounds": "Màu nền theo loại kênh", "HeaderDateIssued": "Ngày Phát Hành", - "HeaderContinueWatching": "Tiếp Tục Xem Tiếp", + "HeaderContinueWatching": "Xem Tiếp", "HeaderContinueListening": "Tiếp Tục Nghe", "HeaderCodecProfileHelp": "Bộ giải mã chỉ ra những kiểu mã hoá nhất định mà một thiết bị có thể phát. Nếu một nội dung không thể phát, nó sẽ được chuyển mã, thậm chí nếu kiểu mã hoá đó được thiết lập phát trực tiếp.", - "HeaderContainerProfileHelp": "Bộ định dạng chỉ ra những định dạng nhất định mà một thiết bị có thể phát. Nếu nội dung có định dạng không thể phát, nội dung sẽ được chuyển đổi định dạng, kể cả khi định dạng đó được thiết lập phát trực tiếp.", - "HeaderContainerProfile": "Bộ Định Dạng", + "HeaderContainerProfileHelp": "Hồ sơ định dạng chỉ ra những định dạng nhất định mà một thiết bị có thể phát. Nếu nội dung có định dạng không thể phát, nội dung sẽ được chuyển đổi định dạng, kể cả khi định dạng đó được thiết lập phát trực tiếp.", + "HeaderContainerProfile": "Hồ Sơ Định Dạng", "HeaderConnectionFailure": "Kế Nối Thất Bại", "HeaderConnectToServer": "Kết Nối Đến Máy Chủ", "HeaderConfirmRevokeApiKey": "Thu Hồi Quyền Truy Cập API Key", @@ -264,7 +264,7 @@ "HeaderConfirmPluginInstallation": "Xác Nhận Cài Đặt Plugin", "HeaderConfigureRemoteAccess": "Thiết Lập Truy Cập Từ Xa", "HeaderCodecProfile": "Bộ Giải Mã", - "HeaderChapterImages": "Hình Ảnh Phân Đoạn", + "HeaderChapterImages": "Hình Ảnh Phân Cảnh", "HeaderChannelAccess": "Quyền Truy Cập Kênh", "HeaderCastAndCrew": "Diễn Viên & Ê-kíp", "HeaderCancelSeries": "Huỷ Series", @@ -283,7 +283,7 @@ "HeaderAlbumArtists": "Bộ Sưu Tập Nghệ sĩ", "HeaderAdmin": "Quản Trị", "HeaderAdditionalParts": "Phần Bổ Sung", - "HeaderAddUpdateImage": "Thêm/Thay Đổi Hình Ảnh", + "HeaderAddUpdateImage": "Thêm / Đổi Hình Ảnh", "HeaderAddToPlaylist": "Thêm vào Danh Sách Phát", "HeaderAddToCollection": "Thêm vào Bộ Sưu Tập", "HeaderActivity": "Hoạt Động", @@ -332,8 +332,8 @@ "ErrorAddingListingsToSchedulesDirect": "Có lỗi xảy ra khi thêm danh sách này vào tài khoản Schedules Direct của bạn. Schedules Direct chỉ cho phép một số lượng danh sách nhất định mỗi tài khoản. Bạn có thể cần phải đăng nhập vào trang web của Schedules Direct và xoá những danh sách khác trước khi có thể thêm danh sách mới.", "Episodes": "Tập", "Episode": "Tập", - "EndsAtValue": "Kết thúc tại {0}", - "Ended": "Đã kết thúc", + "EndsAtValue": "Kết thúc lúc {0}", + "Ended": "Đã Kết Thúc", "EnableThemeVideosHelp": "Phát nền những video chủ đề khi lướt qua thư viện nội dung.", "EnableThemeSongsHelp": "Phát những bài hát chủ đề khi lướt qua thư viện nội dung.", "EnableStreamLoopingHelp": "Cho phép tính năng này nếu live streams chỉ dài một vài giây và cần được lặp lại liên tục. Bật tính năng này khi không cần thiết có thể gây ra nhiều vấn đề khác.", @@ -392,7 +392,7 @@ "HeaderInstall": "Cài Đặt", "HeaderImageSettings": "Thiết Lập Hình Ảnh", "HeaderImageOptions": "Tuỳ Chọn Hình Ảnh", - "HeaderIdentifyItemHelp": "Hãy nhập một hoặc nhiều điều kiện tìm kiếm. Xoá điều kiện để tăng số lượng kết quả tìm kiếm.", + "HeaderIdentifyItemHelp": "Hãy nhập một hoặc nhiều tiêu chí tìm kiếm. Xoá tiêu chí để tăng số lượng kết quả tìm kiếm.", "HeaderIdentificationHeader": "Thông Tin Nhận Biết Trong Phần Đầu", "HeaderIdentificationCriteriaHelp": "Nhập vào ít nhật một thông tin nhận biết.", "HeaderIdentification": "Thông Tin Nhận Biết", @@ -406,7 +406,7 @@ "HeaderEnabledFieldsHelp": "Bỏ chọn một mục để khoá lựa chọn đó và không để nó thay đổi.", "HeaderEnabledFields": "Những Mục Được Kích Hoạt", "HeaderEditImages": "Chỉnh Sửa Hình Ảnh", - "HeaderEasyPinCode": "Mã PIN Đơn Giản", + "HeaderEasyPinCode": "Mã PIN Tiện Lợi", "HeaderDownloadSync": "Tải Xuống Và Đồng Bộ", "HeaderDirectPlayProfileHelp": "Thêm thiết lập phát trực tiếp để chỉ ra những định dạng mà thiết bị có thể phát trực tiếp mà không cần chuyển mã.", "HeaderDirectPlayProfile": "Thiết Lập Phát Trực Tiếp", @@ -486,7 +486,7 @@ "LabelBindToLocalNetworkAddressHelp": "Không bắt buộc. Ghi đè địa chỉ IP cục bộ để kết hợp với máy chủ HTTP. Nếu bỏ trống, máy chủ sẽ cài đặt vào toàn bộ những địa chỉ nội bộ có sẵn. Nếu thay đổi tuỳ chọn này, yêu cầu khởi động lại máy chủ Jellyfin để có tác dụng.", "LabelBindToLocalNetworkAddress": "Liên kết với địa chỉ mạng cục bộ:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Tự động cập nhật dữ liệu mô tả từ Internet:", - "LabelAuthProvider": "Nhà Cung Cấp Xác Thực:", + "LabelAuthProvider": "Cách Xác Thực:", "LabelAudioSampleRate": "Sample rate âm thanh:", "LabelAudioCodec": "Bộ giải mã âm thanh:", "LabelAudioChannels": "Các kênh âm thanh:", @@ -520,14 +520,14 @@ "ItemCount": "{0} mục", "InstantMix": "Trộn Lẫn Nhanh", "InstallingPackage": "Đang cài đặt {0} (phiên bản {1})", - "ImportMissingEpisodesHelp": "Thông tin về các tập bị thiếu sẽ được nhập vào cơ sở dữ liệu của bạn và hiển thị trong các phần và loạt phim. Điều này có thể làm quá trình quét thư viện lâu hơn đáng kể.", + "ImportMissingEpisodesHelp": "Thông tin về các tập phim bị thiếu sẽ được nhập vào cơ sở dữ liệu của bạn và hiển thị trong các mùa và loạt phim bộ. Điều này có thể làm quá trình quét thư viện lâu hơn đáng kể.", "ImportFavoriteChannelsHelp": "Chỉ các kênh được đánh dấu là yêu thích trên thiết bị dò kênh mới được nhập.", "Images": "Hình Ảnh", "Identify": "Nhận Dạng", "HttpsRequiresCert": "Để bật kết nối bảo mật, bạn cần phải cung cấp một Chứng Chỉ SSL đáng tin cậy, ví dụ như \"Let's Encrypt\". Hãy cung cấp Chứng Chỉ SSL hoặc là tắt tính năng kết nối bảo mật.", "Horizontal": "Nằm Ngang", "Home": "Trang Chủ", - "HideWatchedContentFromLatestMedia": "Ẩn những nội dung đã xem khỏi phần nội dung mới nhất", + "HideWatchedContentFromLatestMedia": "Ẩn nội dung đã xem khỏi phương tiện mới nhất", "Hide": "Ẩn", "Help": "Trợ Giúp", "HeaderYears": "Năm", @@ -550,11 +550,11 @@ "LabelEnableAutomaticPortMap": "Kích hoạt tính năng tự động kết nối các port", "LabelEmbedAlbumArtDidlHelp": "Một vài thiết bị ưu tiên phương pháp này để tải bìa album. Một số thiết bị khác có thể không phát được nếu tuỳ chọn này được kích hoạt.", "LabelEmbedAlbumArtDidl": "Bìa album trong Didl", - "LabelEasyPinCode": "Mã PIN đơn giản:", + "LabelEasyPinCode": "Mã PIN tiện lợi:", "LabelDynamicExternalId": "{0} Id:", "LabelDropShadow": "Đổ bóng:", "LabelDroppedFrames": "Những khung hình bị loại bỏ:", - "LabelDropImageHere": "Kéo thả hình ảnh vào đây, hoặc click để lựa chọn hình ảnh.", + "LabelDropImageHere": "Kéo thả hình ảnh vào đây, hoặc bấm vào đây để lựa chọn hình ảnh.", "LabelDownloadLanguages": "Ngôn ngữ tải xuống:", "LabelDownMixAudioScaleHelp": "Tăng cường âm lượng khi trộn âm thanh. Giá trị bằng 1 sẽ giữ nguyên âm lượng gốc.", "LabelDownMixAudioScale": "Tăng cường âm lượng khi trộn âm thanh:", @@ -603,8 +603,8 @@ "HeaderRemoteAccessSettings": "Cài Đặt Truy Cập Từ Xa", "HeaderHttpsSettings": "Cài Đặt HTTPS", "HeaderDVR": "DVR", - "LabelExtractChaptersDuringLibraryScanHelp": "Trích xuất hình ảnh của video được nhập vào trong lúc quét thư viện. Nếu không thì hình này này sẽ được trích xuất thông qua những tác vụ định kì, giúp cho quá trình quét thư viện diễn ra nhanh hơn.", - "LabelExtractChaptersDuringLibraryScan": "Trích xuất hình ảnh từng chương khi quét thư viện", + "LabelExtractChaptersDuringLibraryScanHelp": "Tạo hình ảnh phân cảnh khi video được nhập trong quá trình quét thư viện. Nếu không thì hình này này sẽ được trích xuất thông qua những tác vụ định kì, giúp cho quá trình quét thư viện diễn ra nhanh hơn.", + "LabelExtractChaptersDuringLibraryScan": "Trích xuất hình ảnh phân cảnh khi quét thư viện", "LabelBaseUrlHelp": "Thêm một thư mục con tùy chỉnh vào đường dẫn máy chủ. Ví dụ: http://example.com/<baseurl>", "LabelLoginDisclaimerHelp": "Một tin nhắn sẽ hiển thị ở phía cuối của trang đăng nhập.", "LabelLoginDisclaimer": "Hiển thị khi đăng nhập:", @@ -711,7 +711,7 @@ "Movies": "Phim", "Photos": "Ảnh", "Playlists": "Danh sách phát", - "Shows": "Các Chương Trình", + "Shows": "Chương Trình TV", "Songs": "Các Bài Hát", "Sync": "Đồng Bộ", "ValueSpecialEpisodeName": "Đặc Biệt - {0}", @@ -734,9 +734,9 @@ "RememberMe": "Ghi nhớ Tôi", "ReleaseDate": "Ngày phát hành", "RefreshQueued": "Làm mới đã xếp hàng đợi.", - "RefreshMetadata": "Làm mới thông tin chi tiết", + "RefreshMetadata": "Làm mới dữ liệu mô tả", "RecordingScheduled": "Ghi theo lịch trình.", - "RefreshDialogHelp": "Thông tin chi tiết được làm mới trên cài đặt và dịch vụ internet được bật trong trang tổng quan.", + "RefreshDialogHelp": "Dữ liệu mô tả được làm mới dựa trên cài đặt và dịch vụ internet được bật trong trang tổng quan.", "Refresh": "Làm mới", "Record": "Ghi lại", "RecommendationStarring": "Diễn Viên Chính {0}", @@ -815,7 +815,7 @@ "EnableFasterAnimationsHelp": "Sử dụng hoạt ảnh và chuyển tiếp nhanh hơn", "EnableFasterAnimations": "Hoạt ảnh nhanh hơn", "LabelScreensaver": "Bảo vệ màn hình:", - "LabelRuntimeMinutes": "Thời gian chạy:", + "LabelRuntimeMinutes": "Thời lượng:", "LabelRequireHttpsHelp": "Nếu được chọn, máy chủ sẽ tự động chuyển hướng tất cả các yêu cầu qua HTTP sang HTTPS. Điều này không ảnh hưởng nếu máy chủ không nghe trên HTTPS.", "LabelRequireHttps": "Yêu cầu HTTPS", "LabelRemoteClientBitrateLimitHelp": "Giới hạn tốc độ bit trên mỗi luồng cho tất cả các thiết bị ngoài mạng. Nó hữu ích để ngăn các thiết bị yêu cầu tốc độ bit cao hơn mức kết nối internet của bạn có thể xử lý. Điều này có thể dẫn đến việc tăng tải CPU trên máy chủ của bạn để chuyển mã video nhanh chóng xuống tốc độ bit thấp hơn.", @@ -835,8 +835,8 @@ "LabelProtocolInfo": "Thông tin giao thức:", "LabelProtocol": "Giao thức:", "LabelProfileVideoCodecs": "Bộ giải mã video:", - "LabelProfileContainersHelp": "Phân cách bằng dấu phẩy. Điều này có thể được để trống để áp dụng cho tất cả các vùng chứa.", - "LabelProfileContainer": "Chứa đựng:", + "LabelProfileContainersHelp": "Phân cách bằng dấu phẩy. Để trống để áp dụng cho tất cả các định dạng.", + "LabelProfileContainer": "Định dạng:", "LabelProfileCodecsHelp": "Phân cách bằng dấu phẩy. Điều này có thể được để trống để áp dụng cho tất cả các bộ giải mã.", "LabelProfileCodecs": "Bộ giải mã:", "LabelProfileAudioCodecs": "Bộ giải mã âm thanh:", @@ -860,7 +860,7 @@ "LabelParentalRating": "Đánh giá của phụ huynh:", "LabelParentNumber": "Số chính:", "LabelOverview": "Tổng quát:", - "LabelOriginalTitle": "Tiêu đề ban đầu:", + "LabelOriginalTitle": "Tiêu đề gốc:", "LabelOriginalAspectRatio": "Tỷ lệ khung hình gốc:", "LabelOptionalNetworkPathHelp": "Nếu thư mục này được chia sẻ trong mạng nhà của bạn, việc cung cấp đường dẫn chia sẻ mạng có thể cho phép ứng dụng khách trên các thiết bị khác truy cập trực tiếp vào các tệp phương tiện. Ví dụ: {0} hoặc {1}.", "LabelOptionalNetworkPath": "Thư mục mạng được chia sẻ:", @@ -1018,7 +1018,7 @@ "LabelSonyAggregationFlagsHelp": "Xác định nội dung của phần tử aggregationFlags trong không gian tên urn: schemas-sonycom: av.", "LabelServerHost": "Máy chủ:", "OptionSaveMetadataAsHiddenHelp": "Thay đổi điều này sẽ áp dụng cho dữ liệu mô tả mới được lưu về sau. Các tệp dữ liệu mô tả hiện có sẽ được cập nhật vào lần tiếp theo chúng được máy chủ lưu.", - "OptionSaveMetadataAsHidden": "Lưu dữ liệu môt tả và hình ảnh dưới dạng tệp ẩn", + "OptionSaveMetadataAsHidden": "Lưu dữ liệu mô tả và hình ảnh dưới dạng tệp ẩn", "OptionRequirePerfectSubtitleMatchHelp": "Yêu cầu phù hợp nhất sẽ lọc phụ đề để chỉ bao gồm những phụ đề đã được kiểm tra và xác minh với tệp video chính xác của bạn. Bỏ chọn điều này sẽ làm tăng khả năng phụ đề được tải xuống, nhưng sẽ làm tăng khả năng văn bản phụ đề bị điền sai hoặc không chính xác.", "OptionPlainStorageFoldersHelp": "Tất cả các thư mục được biểu diễn trong DIDL dưới dạng \"object.container.storageFolder\" thay vì một loại cụ thể hơn, chẳng hạn như \"object.container.woman.musicArtist\".", "OptionPlainStorageFolders": "Hiển thị tất cả các thư mục dưới dạng thư mục lưu trữ đơn giản", @@ -1033,7 +1033,7 @@ "OptionIgnoreTranscodeByteRangeRequests": "Bỏ qua các yêu cầu phạm vi byte chuyển mã", "OptionHlsSegmentedSubtitles": "Phụ đề được phân đoạn HLS", "OptionHideUserFromLoginHelp": "Hữu ích cho tài khoản quản trị viên cá nhân hoặc ẩn. Người dùng sẽ cần đăng nhập thủ công bằng cách nhập tên người dùng và mật khẩu của họ.", - "OptionExtractChapterImage": "Bật trích xuất hình ảnh mỗi cảnh quay", + "OptionExtractChapterImage": "Bật trích xuất hình ảnh mỗi phân cảnh", "OptionExternallyDownloaded": "Tải xuống bên ngoài", "OptionEveryday": "Mỗi ngày", "OptionEstimateContentLength": "Ước tính độ dài nội dung khi chuyển mã", @@ -1141,7 +1141,7 @@ "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Các vị trí phương tiện sau sẽ bị xóa khỏi thư viện của bạn:", "MessageReenableUser": "Xem bên dưới để kích hoạt lại", "MessagePluginInstallDisclaimer": "Các plugin do các thành viên cộng đồng xây dựng là một cách tuyệt vời để nâng cao trải nghiệm của bạn với các tính năng và lợi ích bổ sung. Trước khi cài đặt, hãy lưu ý về những ảnh hưởng mà chúng có thể có trên máy chủ của bạn, chẳng hạn như quét thư viện lâu hơn, xử lý nền bổ sung và giảm độ ổn định của hệ thống.", - "MessagePluginConfigurationRequiresLocalAccess": "Để định cấu hình plugin này, vui lòng đăng nhập trực tiếp vào máy chủ cục bộ của bạn.", + "MessagePluginConfigurationRequiresLocalAccess": "Để cấu hình plugin này, vui lòng đăng nhập trực tiếp vào máy chủ cục bộ của bạn.", "MessagePleaseWait": "Vui lòng đợi. Việc này có thể phải mất một ít thời gian.", "MessagePleaseEnsureInternetMetadata": "Hãy đảm bảo rằng việc tải xuống dữ liệu mô tả trên internet đã được bật.", "LabelSeriesRecordingPath": "Đường dẫn Ghi lại Phim Bộ:", @@ -1194,7 +1194,7 @@ "SearchForSubtitles": "Tìm kiếm phụ đề", "SearchForMissingMetadata": "Tìm kiếm dữ liệu mô tả bị thiếu", "SearchForCollectionInternetMetadata": "Tìm kiếm ảnh bìa phim và dữ liệu mô tả trên Internet", - "Search": "Tìm kiếm", + "Search": "Tìm Kiếm", "Screenshots": "Ảnh chụp màn hình", "Screenshot": "Ảnh chụp màn hình", "Schedule": "Lên lịch", @@ -1203,7 +1203,7 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Lưu phụ đề kế bên tệp video để quản lý chúng được dễ dàng hơn.", "SaveSubtitlesIntoMediaFolders": "Lưu phụ đề vào thư mục phương tiện", "SaveChanges": "Lưu thay đổi", - "Runtime": "Thời gian chạy", + "Runtime": "Thời lượng", "Rewind": "Tua lại", "ResumeAt": "Tiếp tục từ {0}", "Restart": "Khởi động lại", @@ -1255,15 +1255,15 @@ "PlayNext": "Phát kế tiếp", "PlayFromBeginning": "Phát từ đầu", "PlayCount": "Số lần phát", - "PlaybackRate": "Tốc độ phát lại", - "PlaybackData": "Dữ liệu phát lại", + "PlaybackRate": "Tốc độ phát", + "PlaybackData": "Chi tiết dữ liệu luồng phát", "PlayAllFromHere": "Phát tất cả từ đây", "Play": "Phát", "PlaceFavoriteChannelsAtBeginning": "Đặt các kênh yêu thích ở phần đầu", "TabNetworking": "Kết Nối Mạng", "WizardCompleted": "Đó là tất cả những gì chúng ta cần bây giờ. Jellyfin đã bắt đầu thu thập thông tin về thư viện phương tiện của bạn. Kiểm tra một số ứng dụng của chúng tôi, sau đó nhấp vào Hoàn thành để xem Trang tổng quan.", "TabDashboard": "Trang tổng quan", - "LabelScheduledTaskLastRan": "Lần cuối chạy {0}, mất{1}.", + "LabelScheduledTaskLastRan": "Lần cuối chạy {0}, mất {1}.", "UseDoubleRateDeinterlacingHelp": "Cài đặt này sử dụng giá trị tỉ lệ khi khử xen kẽ, thường được gọi là khử xen kẽ bob, tăng gấp đôi tốc độ khung hình của video để cung cấp chuyển động đầy đủ như những gì bạn sẽ thấy khi xem video xen kẽ trên TV.", "UseDoubleRateDeinterlacing": "Tăng gấp đôi tốc độ khung hình khi khử xen kẽ", "TvLibraryHelp": "Xem lại {0} hướng dẫn đặt tên TV {1}.", @@ -1345,7 +1345,7 @@ "MediaInfoColorTransfer": "Chuyển màu", "MediaInfoColorSpace": "Không gian màu", "MediaInfoVideoRange": "Phạm vi video", - "ButtonCast": "Diễn viên", + "ButtonCast": "Truyền Trực Tiếp", "EnableBlurHash": "Bật làm mờ trình giữ chỗ cho hình ảnh", "OnApplicationStartup": "Khi khởi động ứng dụng", "EveryXHours": "Mỗi {0} giờ", @@ -1394,5 +1394,9 @@ "Up": "Lên", "Unrated": "Chưa được xếp hạng", "Unmute": "Bỏ tắt tiếng", - "Uniform": "Cùng một kiểu" + "Uniform": "Cùng một kiểu", + "ValueContainer": "Định dạng: {0}", + "TabContainers": "Định dạng", + "OptionEmbedSubtitles": "Nhúng trong định dạng", + "MediaInfoContainer": "Định dạng" } From 8e3f336d7f8b926f6fb6fcb39c7fe95d40d5e539 Mon Sep 17 00:00:00 2001 From: Olegario Date: Tue, 22 Sep 2020 16:49:07 +0000 Subject: [PATCH 348/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index f760af180e..e41fe91e1b 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1408,5 +1408,8 @@ "LabelMaxMuxingQueueSize": "Tamaño máximo de la cola de entremezclado:", "LabelTonemappingParamHelp": "Ajuste el algoritmo de mapeo de Tono. El valor recomendado y predeterminados es NaN. Generalmente déjelo en blanco.", "LabelTonemappingParam": "Parámetros del mapeo de Tono:", - "LabelTonemappingPeak": "Pico del mapeo de Tono:" + "LabelTonemappingPeak": "Pico del mapeo de Tono:", + "LabelTonemappingDesat": "Mapeo de tonos desaturado:", + "UseDoubleRateDeinterlacingHelp": "Esta configuración utiliza la velocidad de campo al desentrelazar, a menudo denominado desentrelazado bob, que duplica los fotogramas del video para proporcionar un movimiento contínuo, como lo vería al ver un video entrelazado en un televisor.", + "PosterCard": "Tarjeta de presentación" } From 978b0d3821420b0d61d3f16ef84a7c06c3c616d1 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Tue, 22 Sep 2020 16:26:52 +0000 Subject: [PATCH 349/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 749629eb83..9747d77ebc 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -112,7 +112,7 @@ "BurnSubtitlesHelp": "Xác định xem máy chủ có nên ghi phụ đề khi chuyển đổi video hay không. Tránh thực hiện việc này sẽ cải thiện hiệu suất máy chủ đáng kể. Chọn Tự động để ghi các phụ đề có định dạng dựa trên hình ảnh (VOBSUB, PGS, SUB, IDX, ...) và một vài phụ đề ASS/SSA nhất định.", "Browse": "Duyệt", "BoxRear": "Hộp (mặt sau)", - "Books": "Các Quyển Sách", + "Books": "Sách", "BookLibraryHelp": "Âm thanh và sách văn bản được hỗ trợ. Xem lại {0} hướng dẫn đặt tên sách {1}.", "Blacklist": "Danh sách đen", "BirthPlaceValue": "Nơi sinh: {0}", From c7bdc2ca6ffacefde07ba095daacc4401bfec8b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Wed, 23 Sep 2020 07:30:04 +0000 Subject: [PATCH 350/582] 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 332457bb07..412f38ce6b 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1417,5 +1417,6 @@ "EnableQuickConnect": "Povolit rychlé připojení k tomuto serveru", "ButtonUseQuickConnect": "Použít rychlé připojení", "ButtonActivate": "Aktivovat", - "Authorize": "Autorizovat" + "Authorize": "Autorizovat", + "EnableAutoCast": "Nastavit jako výchozí" } From c218e6886564bd73a28f61e385f90db7f55aa1c6 Mon Sep 17 00:00:00 2001 From: GiJaLo Date: Wed, 23 Sep 2020 10:14:42 +0000 Subject: [PATCH 351/582] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 10e96aada2..4369f26f56 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -100,7 +100,7 @@ "ColorTransfer": "Kleuroverdracht", "CommunityRating": "Community-beoordeling", "Composer": "Componist", - "ConfigureDateAdded": "Configureer hoe datum toegevoegd wordt bepaald in het Jellyfin Server dashboard onder de instellingen van de documentbibliotheek", + "ConfigureDateAdded": "Configureer hoe de datum van toevoeging wordt bepaald in het dashboard onder de bibliotheekinstellingen", "ConfirmDeleteImage": "Afbeelding verwijderen?", "ConfirmDeleteItem": "Verwijderen van dit item zal het verwijderen uit zowel het bestandssysteem als de Media Bibliotheek. Weet u zeker dat u wilt doorgaan?", "ConfirmDeleteItems": "Het verwijderen van deze items verwijdert ze van het bestandssysteem en uit uw bibliotheek. Weet u zeker dat u verder wilt gaan?", @@ -413,7 +413,7 @@ "LabelAppName": "Applicatie Naam", "LabelAppNameExample": "Voorbeeld: Sickbeard, Sonarr", "LabelArtists": "Artiest:", - "LabelArtistsHelp": "Scheidt artiesten met een ;", + "LabelArtistsHelp": "Scheid meerdere artiesten met een puntkomma.", "LabelAudioLanguagePreference": "Voorkeurs audiotaal:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Vernieuw metagegevens automatisch van het internet:", "LabelBindToLocalNetworkAddress": "Binden aan het lokale netwerk adres:", @@ -1331,7 +1331,7 @@ "ClearQueue": "Leeg wachtrij", "StopPlayback": "Stop afspelen", "ButtonPlayer": "Speler", - "EnableBlurHashHelp": "Afbeeldingen die nog laden worden getoond als een wazige placeholder", + "EnableBlurHashHelp": "Afbeeldingen die nog worden geladen, worden weergegeven met een unieke tijdelijke aanduiding.", "EnableBlurHash": "Schakel wazige placeholders voor plaatjes in", "Writers": "Schrijvers", "ViewAlbumArtist": "Bekijk album artiest", @@ -1387,5 +1387,36 @@ "LabelCurrentStatus": "Huidige status:", "KnownProxiesHelp": "Een door komma gescheiden lijst van IP adresen van bekende proxies. Die gebruikt worden bij het verbinden met je Jellyfin instantie. Dit is nodig om goed gebruik te maken van X-Forwarded-For headers. Reboot nodig na opslaan.", "EnableQuickConnect": "Schakel Quick Connect in op deze server", - "ButtonUseQuickConnect": "Gebruik Quick Connect" + "ButtonUseQuickConnect": "Gebruik Quick Connect", + "LabelMaxMuxingQueueSizeHelp": "Maximaal aantal pakketten dat kan worden gebufferd terwijl wordt gewacht tot alle streams zijn geïnitialiseerd. Probeer het te verhogen als u nog steeds de fout \"Te veel pakketten gebufferd voor uitvoerstroom\" tegenkomt in ffmpeg-logboeken. De aanbevolen waarde is 2048.", + "LabelMaxMuxingQueueSize": "Maximale grootte van de wachtrij:", + "LabelColorPrimaries": "Primaire kleur:", + "MediaInfoColorPrimaries": "Primaire kleur", + "LabelTonemappingParamHelp": "Stem het toonmapping-algoritme af. De aanbevolen en standaardwaarden zijn NaN. Laat het in het algemeen leeg.", + "LabelTonemappingParam": "Tonemapping-parameter:", + "LabelTonemappingPeakHelp": "Overbrug signaal/nominaal/referentiepiek met deze waarde. Handig wanneer de ingebouwde piekinformatie in de metadata van de display niet betrouwbaar is of wanneer tonemapping van een lager bereik naar een hoger bereik. De aanbevolen en standaardwaarden zijn 0.", + "LabelTonemappingPeak": "Tonemapping-piek:", + "LabelTonemappingThresholdHelp": "De parameters van het tonemapping-algoritme worden voor elke scène nauwkeurig afgesteld. En een drempel wordt gebruikt om te detecteren of de scène is veranderd of niet. Als de afstand tussen de huidige gemiddelde helderheid van het frame en het huidige lopende gemiddelde een drempelwaarde overschrijdt, zouden we het scènegemiddelde en de piekhelderheid opnieuw berekenen. De aanbevolen en standaardwaarden zijn 0,8 en 0,2.", + "LabelTonemappingThreshold": "Tonemapping drempel:", + "LabelTonemappingDesatHelp": "Pas desaturatie toe voor highlights die dit helderheidsniveau overschrijden. Hoe hoger de parameter, hoe meer kleurinformatie behouden blijft. Deze instelling helpt om onnatuurlijk uitgeblazen kleuren voor superhooglichten te voorkomen door (vloeiend) in wit over te gaan. Hierdoor voelen afbeeldingen natuurlijker aan, wat ten koste gaat van informatie over kleuren die buiten het bereik vallen. De aanbevolen en standaardwaarden zijn 0 en 0,5.", + "LabelTonemappingDesat": "Tonemapping-desat:", + "TonemappingRangeHelp": "Selecteer het uitvoerkleurbereik. Auto is hetzelfde als het invoerbereik.", + "LabelTonemappingRange": "Tonemapping-bereik:", + "TonemappingAlgorithmHelp": "Tone mapping kan worden verfijnd. Als u niet bekend bent met deze opties, behoudt u gewoon de standaardwaarde. De aanbevolen waarde is Reinhard.", + "LabelTonemappingAlgorithm": "Selecteer het te gebruiken Tone mapping-algoritme:", + "AllowTonemappingHelp": "Tone mapping kan het dynamische bereik van een video transformeren van HDR naar SDR met behoud van beelddetails en kleuren, wat zeer belangrijke informatie is voor het weergeven van de originele scène. Werkt momenteel alleen bij het transcoderen van video's met ingesloten HDR10- of HLG-metadata. Als het afspelen niet soepel verloopt of mislukt, overweeg dan om de bijbehorende hardwaredecoder uit te schakelen.", + "EnableTonemapping": "Schakel Tone mapping in", + "LabelOpenclDeviceHelp": "Dit is het OpenCL-apparaat dat wordt gebruikt voor tonemapping. De linkerkant van het punt is het platformnummer en de rechterkant is het apparaatnummer op het platform. De standaardwaarde is 0,0. Het ffmpeg-toepassingsbestand met de OpenCL-hardwareversnellingsmethode is vereist.", + "LabelOpenclDevice": "OpenCL-apparaat:", + "LabelColorTransfer": "Kleuroverdracht:", + "LabelColorSpace": "Kleurbereik:", + "LabelVideoRange": "Videobereik:", + "MediaInfoColorTransfer": "Kleuroverdracht", + "MediaInfoColorSpace": "Kleurbereik", + "MediaInfoVideoRange": "Videobereik", + "QuickConnect": "Quickconnect", + "LabelQuickConnectCode": "Quickconnect code:", + "EnableAutoCast": "Stel in als standaard", + "ButtonActivate": "Activeer", + "Authorize": "Geef toestemming" } From 6d30b95738182add1837631eb782d74856bd7bf8 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Wed, 23 Sep 2020 12:28:23 +0000 Subject: [PATCH 352/582] 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 ed3dfceab3..49f1057789 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1432,5 +1432,6 @@ "EnableQuickConnect": "இந்த சேவையகத்தில் விரைவான இணைப்பை இயக்கவும்", "ButtonUseQuickConnect": "விரைவு இணைப்பைப் பயன்படுத்தவும்", "ButtonActivate": "செயல்படுத்து", - "Authorize": "அதிகாரமளி" + "Authorize": "அதிகாரமளி", + "EnableAutoCast": "இயல்புநிலைக்கு அமை" } From b2b09a72cf08969439b562d10fa757b43bae6cfd Mon Sep 17 00:00:00 2001 From: Juan Sanchez Date: Wed, 23 Sep 2020 18:47:55 +0000 Subject: [PATCH 353/582] Translated using Weblate (Spanish (Mexico)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_MX/ --- src/strings/es-mx.json | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 1d0a81df4e..057bc51998 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -22,7 +22,7 @@ "AllowMediaConversionHelp": "Permitir o denegar acceso a la función de convertir medios.", "AllowOnTheFlySubtitleExtraction": "Permitir la extracción de subtítulos sobre la marcha", "AllowOnTheFlySubtitleExtractionHelp": "Los subtítulos incrustados pueden extraerse de los videos y entregarse a los clientes en texto plano para ayudar a evitar la transcodificación de video. En algunos sistemas, esto puede tardar mucho tiempo y provocar que la reproducción de video se detenga durante el proceso de extracción. Deshabilite esta opción para que los subtítulos incrustados se graben con transcodificación de video cuando no estén soportados de forma nativa por el dispositivo cliente.", - "AllowRemoteAccess": "Permitir conexiones remotas a este servidor Jellyfin.", + "AllowRemoteAccess": "Permitir conexiones remotas a este servidor.", "AllowRemoteAccessHelp": "Si no se marca, se bloquearán todas las conexiones remotas.", "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", @@ -106,7 +106,7 @@ "ColorTransfer": "Transferencia de color", "CommunityRating": "Calificación de la comunidad", "Composer": "Compositor", - "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.", "ConfirmDeleteImage": "¿Eliminar imagen?", "ConfirmDeleteItem": "Eliminar este elemento lo eliminará tanto del sistema como de tu biblioteca de medios. ¿Estás seguro de querer continuar?", "ConfirmDeleteItems": "Eliminar estos elementos los eliminará tanto del sistema como de tu biblioteca de medios. ¿Estás seguro de querer continuar?", @@ -137,8 +137,8 @@ "DetectingDevices": "Detectando dispositivos", "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í.", "DirectPlaying": "Reproducción directa", - "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.", - "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 en tiempo real antes de transmitirlo al dispositivo.", + "DirectStreamHelp2": "Transmitir directamente un archivo usa muy poco poder de procesamiento con una pérdida mínima en la calidad de video.", "DirectStreaming": "Transmisión directa", "Directors": "Directores", "Disc": "DIsco", @@ -179,10 +179,10 @@ "EndsAtValue": "Termina a las {0}", "Episodes": "Episodios", "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.", - "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 el servidor Jellyfin tiene acceso a ese destino.", "ErrorAddingTunerDevice": "Hubo un error al agregar el dispositivo sintonizador. Por favor, asegúrate de que esté disponible 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.", - "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 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.", "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.", @@ -231,7 +231,7 @@ "HeaderAllowMediaDeletionFrom": "Permitir eliminación de medios de", "HeaderApiKey": "Clave API", "HeaderApiKeys": "Claves API", - "HeaderApiKeysHelp": "Las aplicaciones externas deben tener una clave API para poder comunicarse con el servidor Jellyfin. Las claves se emiten al iniciar sesión con una cuenta Jellyfin, o al otorgar manualmente una clave a la aplicación.", + "HeaderApiKeysHelp": "Las aplicaciones externas deben tener una clave API para poder comunicarse con el servidor. Las claves se emiten al iniciar sesión con una cuenta de usuario normal, o al otorgar manualmente una clave a la aplicación.", "HeaderAppearsOn": "Aparece en", "HeaderAudioBooks": "Audiolibros", "HeaderAudioSettings": "Configuración de audio", @@ -291,7 +291,7 @@ "HeaderInstantMix": "Mix instantáneo", "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.", + "HeaderKodiMetadataHelp": "Para habilitar o deshabilitar los metadatos NFO, edita una biblioteca y ubica la sección grabadores de metadatos.", "HeaderLatestEpisodes": "Últimos episodios", "HeaderLatestMedia": "Últimos medios", "HeaderLatestMovies": "Últimas películas", @@ -332,7 +332,7 @@ "HeaderPluginInstallation": "Instalación de complemento", "HeaderPreferredMetadataLanguage": "Idioma preferido para los metadatos", "HeaderProfileInformation": "Información del perfil", - "HeaderProfileServerSettingsHelp": "Estos valores controlan como el servidor Jellyfin se presentará al dispositivo.", + "HeaderProfileServerSettingsHelp": "Estos valores controlan como el servidor se presentará al dispositivo.", "HeaderRecentlyPlayed": "Reproducido recientemente", "HeaderRecordingOptions": "Opciones de grabación", "HeaderRecordingPostProcessing": "Post procesado de las grabaciones", @@ -398,8 +398,8 @@ "HttpsRequiresCert": "Para habilitar las conexiones seguras, necesitarás proporcionar un certificado SSL de confianza, como el de Let's Encrypt. Por favor, proporciona un certificado o desactiva las conexiones seguras.", "Identify": "Identificar", "Images": "Imágenes", - "ImportFavoriteChannelsHelp": "Si se habilita, solo los canales marcados como favoritos en el dispositivo sintonizador serán importados.", - "ImportMissingEpisodesHelp": "Si se habilita, la información sobre los episodios faltantes se importará a la base de datos de Jellyfin y se mostrarán dentro de las temporadas y series. Esto puede causar escaneos de biblioteca significativamente más largos.", + "ImportFavoriteChannelsHelp": "Solo los canales marcados como favoritos en el dispositivo sintonizador serán importados.", + "ImportMissingEpisodesHelp": "La información sobre los episodios faltantes se importará a la base de datos y se mostrarán dentro de las temporadas y series. Esto puede causar escaneos de biblioteca significativamente más largos.", "InstallingPackage": "Instalando {0} (versión {1})", "InstantMix": "Mix instantáneo", "ItemCount": "{0} elementos", @@ -427,7 +427,7 @@ "LabelAppName": "Nombre de la aplicación", "LabelAppNameExample": "Ejemplo: Sickbeard, Sonarr", "LabelArtists": "Artistas:", - "LabelArtistsHelp": "Separar múltiples empleando ;", + "LabelArtistsHelp": "Separa artistas múltiples empleando punto y coma (;).", "LabelAudioLanguagePreference": "Idioma preferido de audio:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Actualizar automáticamente los metadatos desde Internet:", "LabelBindToLocalNetworkAddress": "Vincular a la dirección de red local:", @@ -1153,7 +1153,7 @@ "ButtonInfo": "Info", "ButtonOk": "OK", "ButtonTrailer": "Trailer", - "AuthProviderHelp": "Selecciona un 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 confirmar la contraseña de este usuario.", "Director": "Director", "Extras": "Extras", "General": "General", @@ -1269,7 +1269,7 @@ "Album": "Álbum", "Yadif": "YADIF", "LabelDeinterlaceMethod": "Método de desentrelazado:", - "DeinterlaceMethodHelp": "Seleccione el método de desentrelazado que se usará al transcodificar contenido entrelazado.", + "DeinterlaceMethodHelp": "Seleccione el método de desentrelazado que se usará al transcodificar contenido entrelazado. Cuando se habilite hardware con soporte de aceleración por hardware, se utilizará este.", "Filter": "Filtro", "New": "Nuevo", "LabelLibraryPageSizeHelp": "Establece el número de elementos a mostrar en una página de biblioteca. Establece en 0 para deshabilitar el paginado.", @@ -1343,5 +1343,15 @@ "ClearQueue": "Limpiar cola", "StopPlayback": "Detener reproducción", "Writers": "Escritores", - "ViewAlbumArtist": "Ver el artista del album" + "ViewAlbumArtist": "Ver el artista del album", + "LabelAlbumArtMaxResHelp": "Máxima resolución del arte del álbum expuesto via con la propiedad upnp:albumArtURI.", + "KnownProxiesHelp": "Lista de direcciones de IP separadas por comas de todos los proxies conocidos que se utilizan para tu instancia de Jellyfin. Esto es necesario para utilizar correctamente los encabezados X-Forwarded-For. Requiere reiniciar despues de grabar.", + "Image": "Imagen", + "Other": "Otros", + "EnableQuickConnect": "Habilitar conexión rápida en este servidor", + "EnableAutoCast": "Configurar por defecto", + "Data": "Datos", + "ButtonUseQuickConnect": "Usar conexión rápida.", + "ButtonActivate": "Activar", + "Authorize": "Autorizar" } From 09220510e6053ddc1627405ff401627affde8b15 Mon Sep 17 00:00:00 2001 From: Juan Sanchez Date: Wed, 23 Sep 2020 19:01:11 +0000 Subject: [PATCH 354/582] Translated using Weblate (Spanish (Mexico)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_MX/ --- src/strings/es-mx.json | 139 ++++++++++++++++++++++++++++++----------- 1 file changed, 102 insertions(+), 37 deletions(-) diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 057bc51998..8fc8a0abd9 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -154,7 +154,7 @@ "Download": "Descargar", "DownloadsValue": "{0} descargas", "DrmChannelsNotImported": "Los canales con DRM no serán importados.", - "DropShadow": "Sombra paralela", + "DropShadow": "Sombra inferior", "EasyPasswordHelp": "Tu código PIN fácil se utiliza para el acceso sin conexión en los clientes soportados y también puede utilizarse para acceder fácilmente cuando se está en la misma red.", "Edit": "Editar", "EditImages": "Editar imágenes", @@ -431,10 +431,10 @@ "LabelAudioLanguagePreference": "Idioma preferido de audio:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Actualizar automáticamente los metadatos desde Internet:", "LabelBindToLocalNetworkAddress": "Vincular a la dirección de red local:", - "LabelBindToLocalNetworkAddressHelp": "Opcional. Sobrescribe la dirección IP local a la que se vincula el servidor http. Si se deja vacío, el servidor se vinculará a todas las direcciones disponibles. Cambiar este valor requiere reiniciar el servidor Jellyfin.", + "LabelBindToLocalNetworkAddressHelp": "Ignora 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 reiniciar el servidor.", "LabelBirthDate": "Fecha de nacimiento:", "LabelBirthYear": "Año de nacimiento:", - "LabelBlastMessageInterval": "Intervalo de mensajes de vida (segundos)", + "LabelBlastMessageInterval": "Intervalo de mensajes de vida.", "LabelBlastMessageIntervalHelp": "Determina la duración en segundos del intervalo entre mensajes de vida.", "LabelBlockContentWithTags": "Bloquear elementos con las etiquetas:", "LabelBurnSubtitles": "Quemar subtítulos:", @@ -454,7 +454,7 @@ "LabelCustomCertificatePath": "Ruta del certificado SSL personalizado:", "LabelCustomCertificatePathHelp": "Ruta a un archivo PKCS #12 que contiene un certificado y una clave privada para habilitar el soporte TLS en un dominio personalizado.", "LabelCustomCss": "CSS personalizado:", - "LabelCustomCssHelp": "Aplica tu propio estilo personalizado a la interfaz web.", + "LabelCustomCssHelp": "Aplica tus propio estilos personalizados a la interfaz web.", "LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre personalizado para mostrar o déjalo vacío para usar el nombre reportado por el dispositivo.", "LabelCustomRating": "Calificación personalizada:", "LabelDateAdded": "Fecha de adición:", @@ -487,8 +487,8 @@ "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.", "LabelEnableBlastAliveMessages": "Bombardeo de mensajes de vida", "LabelEnableBlastAliveMessagesHelp": "Habilita esto si el servidor no es detectado de manera confiable por otros dispositivos UPnP en tu red.", - "LabelEnableDlnaClientDiscoveryInterval": "Intervalo de descubrimiento de clientes (segundos)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duración en segundos entre búsquedas SSDP realizadas por Jellyfin.", + "LabelEnableDlnaClientDiscoveryInterval": "Intervalo de descubrimiento de clientes.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duración en segundos entre búsquedas SSDP.", "LabelEnableDlnaDebugLogging": "Habilitar el registro de depuración de DLNA", "LabelEnableDlnaDebugLoggingHelp": "Crea grandes archivos de registro y solo se debe usar cuando se requiera para solucionar problemas.", "LabelEnableDlnaPlayTo": "Habilitar Reproducir En mediante DLNA", @@ -497,7 +497,7 @@ "LabelEnableDlnaServerHelp": "Permite a dispositivos UPnP en tu red explorar y reproducir contenido.", "LabelEnableHardwareDecodingFor": "Habilitar decodificación por hardware para:", "LabelEnableRealtimeMonitor": "Activar monitoreo en tiempo real", - "LabelEnableRealtimeMonitorHelp": "Los cambios en los archivos serán procesados inmediatamente, en los sistemas de archivo soportados.", + "LabelEnableRealtimeMonitorHelp": "Los cambios en los archivos serán procesados inmediatamente en los sistemas de archivo soportados.", "LabelEnableSingleImageInDidlLimit": "Limitar a una sola imagen incrustada", "LabelEnableSingleImageInDidlLimitHelp": "Algunos dispositivos no se renderizarán correctamente si se incrustan varias imágenes en DIDL.", "LabelEndDate": "Fecha de fin:", @@ -513,7 +513,7 @@ "LabelForgotPasswordUsernameHelp": "Introduce tu nombre de usuario, si lo recuerdas.", "LabelFormat": "Formato:", "LabelFriendlyName": "Nombre amistoso:", - "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 de host del servidor.", "LabelGroupMoviesIntoCollections": "Agrupar películas en colecciones", "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.", "LabelH264Crf": "CRF de codificación H264:", @@ -523,7 +523,7 @@ "LabelHomeNetworkQuality": "Calidad en red local:", "LabelHomeScreenSectionValue": "Sección {0} de la pantalla de inicio:", "LabelHttpsPort": "Número de puerto local HTTPS:", - "LabelHttpsPortHelp": "El número de puerto TCP al que el servidor HTTPS de Jellyfin debería enlazar.", + "LabelHttpsPortHelp": "El número de puerto TCP al del servidor HTTPS.", "LabelIconMaxHeight": "Altura máxima del ícono:", "LabelIconMaxWidth": "Ancho máximo del ícono:", "LabelIdentificationFieldHelp": "Una subcadena indiferente a las mayúsculas y minúsculas o una expresión regular (regex).", @@ -549,7 +549,7 @@ "LabelLanguage": "Idioma:", "LabelLineup": "Programación:", "LabelLocalHttpServerPortNumber": "Número de puerto local HTTP:", - "LabelLocalHttpServerPortNumberHelp": "El número de puerto TCP al que el servidor HTTP de Jellyfin debería enlazar.", + "LabelLocalHttpServerPortNumberHelp": "El número de puerto TCP del servidor HTTP.", "LabelLockItemToPreventChanges": "Bloquear este elemento para evitar cambios futuros", "LabelLoginDisclaimer": "Aviso legal:", "LabelLoginDisclaimerHelp": "Un mensaje que se mostrará en la parte inferior de la página de inicio de sesión.", @@ -591,7 +591,7 @@ "LabelMovieCategories": "Categorías de películas:", "LabelMoviePrefix": "Prefijo de la película:", "LabelMoviePrefixHelp": "Si un prefijo es aplicado al título de las películas, introdúcelo aquí para que el servidor pueda manejarlo correctamente.", - "LabelMovieRecordingPath": "Ruta para las grabaciones de películas (opcional):", + "LabelMovieRecordingPath": "Ruta para las grabaciones de películas:", "LabelMusicStreamingTranscodingBitrate": "Velocidad de bits de transcodificación de música:", "LabelMusicStreamingTranscodingBitrateHelp": "Especifica la velocidad de bits máxima al transmitir música.", "LabelName": "Nombre:", @@ -603,8 +603,8 @@ "LabelNumber": "Número:", "LabelNumberOfGuideDays": "Número de días de datos de la programación a descargar:", "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.", - "LabelOptionalNetworkPath": "(Opcional) Carpeta de red compartida:", - "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}.", + "LabelOptionalNetworkPath": "Carpeta de red compartida:", + "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}.", "LabelOriginalAspectRatio": "Relación de aspecto original:", "LabelOriginalTitle": "Título original:", "LabelOverview": "Resumen:", @@ -644,7 +644,7 @@ "LabelReleaseDate": "Fecha de estreno:", "LabelRemoteClientBitrateLimit": "Limite de velocidad de bits para la transmisión por Internet (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Un límite opcional de velocidad de bits por transmisión para todos los dispositivos fuera de la red. Esto es útil para evitar que los dispositivos soliciten una tasa de bits más alta de la que puede manejar tu conexión a Internet. Esto puede provocar un aumento de la carga de la CPU en el servidor para transcodificar los videos sobre la marcha a una velocidad de bits inferior.", - "LabelRuntimeMinutes": "Duración (minutos):", + "LabelRuntimeMinutes": "Duración:", "LabelSaveLocalMetadata": "Guardar las ilustraciones en las carpetas de los medios", "LabelSaveLocalMetadataHelp": "Guardar ilustraciones en las carpetas de los medios los colocará en un lugar donde se pueden editar fácilmente.", "LabelScheduledTaskLastRan": "Última ejecución {0}, tomando {1}.", @@ -656,7 +656,7 @@ "LabelSelectVersionToInstall": "Seleccionar versión a instalar:", "LabelSendNotificationToUsers": "Enviar la notificación a:", "LabelSerialNumber": "Número de serie", - "LabelSeriesRecordingPath": "Ruta para las grabaciones de series (opcional):", + "LabelSeriesRecordingPath": "Ruta para las grabaciones de series:", "LabelServerHost": "Servidor:", "LabelServerHostHelp": "192.168.1.100:8096 o https://miservidor.com", "LabelSimultaneousConnectionLimit": "Límite de transmisiones simultáneas:", @@ -772,13 +772,13 @@ "MessageConfirmProfileDeletion": "¿Estás seguro de querer eliminar este perfil?", "MessageConfirmRecordingCancellation": "¿Cancelar grabación?", "MessageConfirmRemoveMediaLocation": "¿Estás seguro de querer remover esta ubicación?", - "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 con el servidor Jellyfin será terminada abruptamente.", + "MessageConfirmRestart": "¿Estás seguro de que deseas reiniciar Jellyfin?", + "MessageConfirmRevokeApiKey": "¿Estás seguro de querer revocar esta clave API? La conexión de la aplicación con el servidor será terminada abruptamente.", "MessageConfirmShutdown": "¿Estás seguro de que deseas apagar el servidor?", "MessageContactAdminToResetPassword": "Por favor, contacta a tu administrador para restablecer tu contraseña.", "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.", + "MessageDirectoryPickerBSDInstruction": "Para BSD, quizás necesites configurar el almacenamiento dentro de tu «FreeNAS Jail» de manera que permita a Jellyfin acceder a tus medios.", "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.", @@ -800,7 +800,7 @@ "MessagePleaseEnsureInternetMetadata": "Por favor, asegúrate de que la descarga de metadatos de Internet está habilitada.", "MessagePleaseWait": "Por favor, espera. Esto podría tomar un minuto.", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento por favor, inicia sesión en tu servidor local directamente.", - "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.", "MessageReenableUser": "Ver abajo para volver a habilitar", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Las siguientes ubicaciones de medios se removerán de tu biblioteca:", "MessageUnableToConnectToServer": "No podemos conectarnos al servidor seleccionado en este momento. Por favor, asegúrate de que está funcionando e inténtalo de nuevo.", @@ -852,7 +852,7 @@ "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.", "OptionAllowManageLiveTv": "Permitir gestión de grabación de TV en vivo", "OptionAllowMediaPlayback": "Permitir reproducción de medios", - "OptionAllowMediaPlaybackTranscodingHelp": "Restringir el acceso a la transcodificación podría causar fallas en la reproducción en las aplicaciones Jellyfin debido a los 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 los formatos de medios no soportados.", "OptionAllowRemoteControlOthers": "Permitir control remoto de otros usuarios", "OptionAllowRemoteSharedDevices": "Permitir control remoto de dispositivos compartidos", "OptionAllowRemoteSharedDevicesHelp": "Los dispositivos DLNA se considerarán compartidos hasta que un usuario comience a controlarlos.", @@ -861,7 +861,7 @@ "OptionAllowVideoPlaybackRemuxing": "Permitir reproducción de video que requiera conversión sin recodificar", "OptionAllowVideoPlaybackTranscoding": "Permitir la reproducción de video que requiera de transcodificación", "OptionAutomaticallyGroupSeries": "Fusionar automáticamente series esparcidas a través de múltiples carpetas", - "OptionAutomaticallyGroupSeriesHelp": "Si se habilita, las series que se reparten a través de múltiples carpetas dentro de esta biblioteca serán fusionadas en una sola serie.", + "OptionAutomaticallyGroupSeriesHelp": "Las series que se reparten a través de múltiples carpetas dentro de esta biblioteca serán fusionadas en una sola serie.", "OptionCommunityRating": "Calificación de la comunidad", "OptionCriticRating": "Calificación de los críticos", "OptionCustomUsers": "Personalizado", @@ -871,12 +871,12 @@ "OptionDateAddedImportTime": "Usar la fecha de escaneo en la biblioteca", "OptionDatePlayed": "Fecha de reproducción", "OptionDisableUser": "Desactivar este usuario", - "OptionDisableUserHelp": "Si se desactiva, el servidor no aceptará conexiones de este usuario. Las conexiones existentes serán finalizadas abruptamente.", + "OptionDisableUserHelp": "El servidor no aceptará conexiones de este usuario. Las conexiones existentes serán finalizadas abruptamente.", "OptionDislikes": "No me gusta", "OptionDisplayFolderView": "Mostrar una vista de carpetas para mostrar las carpetas simples de los medios", "OptionDisplayFolderViewHelp": "Muestra las carpetas junto con sus otras bibliotecas de medios. Esto puede ser útil si deseas tener una vista simple de carpeta.", "OptionDownloadImagesInAdvance": "Descargar las imágenes con antelación", - "OptionDownloadImagesInAdvanceHelp": "Por defecto, la mayoría de las imágenes solo son descargadas cuando son solicitadas por una aplicación Jellyfin. Habilita esta opción para descargar todas las imágenes por adelantado, a medida que se agreguen nuevos medios. Esto podría causar escaneos de bibliotecas significativamente más largos.", + "OptionDownloadImagesInAdvanceHelp": "Por defecto, la mayoría de las imágenes solo son descargadas cuando son solicitadas por un cliente. Habilita esta opción para descargar todas las imágenes por adelantado, a medida que se agreguen nuevos medios. Esto podría causar escaneos de bibliotecas significativamente más largos.", "OptionDvd": "DVD", "OptionEmbedSubtitles": "Incrustar dentro del contenedor", "OptionEnableAccessFromAllDevices": "Habilitar acceso desde todos los dispositivos", @@ -898,7 +898,7 @@ "OptionHideUserFromLoginHelp": "Útil para cuentas privadas o de administrador ocultas. El usuario tendrá que iniciar sesión manualmente introduciendo su nombre de usuario y contraseña.", "OptionHlsSegmentedSubtitles": "Subtítulos segmentados HLS", "OptionIgnoreTranscodeByteRangeRequests": "Ignorar solicitudes de transcodificación de rango de bytes", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "Si se habilita, estas solicitudes serán honradas pero se ignorará el encabezado de rango de bytes.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Estas solicitudes serán honradas pero se ignorará el encabezado de rango de bytes.", "OptionImdbRating": "Calificación de IMDb", "OptionLikes": "Me gusta", "OptionMax": "Máximo", @@ -907,9 +907,9 @@ "OptionOnInterval": "En un intervalo", "OptionParentalRating": "Clasificación parental", "OptionPlainStorageFolders": "Mostrar todas las carpetas como carpetas de almacenamiento simples", - "OptionPlainStorageFoldersHelp": "Si se habilita, 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».", + "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».", "OptionPlainVideoItems": "Mostrar todos los videos como elementos de video simples", - "OptionPlainVideoItemsHelp": "Si se habilita, 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».", + "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».", "OptionPlayCount": "Contador de reproducciones", "OptionPremiereDate": "Fecha de estreno", "OptionProtocolHls": "Transmisión en vivo por HTTP", @@ -921,7 +921,7 @@ "OptionResElement": "Elemento res", "OptionResumable": "Reanudable", "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.", + "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.", "OptionSpecialEpisode": "Especiales", "OptionSubstring": "Subcadena", "OptionTrackName": "Nombre de la pista", @@ -959,9 +959,9 @@ "PleaseAddAtLeastOneFolder": "Por favor, agrega al menos una carpeta a esta biblioteca dando clic al botón Agregar.", "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.", "PleaseEnterNameOrId": "Por favor, introduce un nombre o ID externo.", - "PleaseRestartServerName": "Por favor, reinicia el servidor Jellyfin - {0}.", + "PleaseRestartServerName": "Por favor, reinicia el servidor {0}.", "PleaseSelectTwoItems": "Por favor, selecciona al menos dos elementos.", - "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.", "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", @@ -986,7 +986,7 @@ "RecordingScheduled": "Grabación programada.", "Recordings": "Grabaciones", "Refresh": "Actualizar", - "RefreshDialogHelp": "Los metadatos son actualizados basándose en las configuraciones y servicios de Internet que estén activados en el panel de control de tu servidor Jellyfin.", + "RefreshDialogHelp": "Los metadatos son actualizados basándose en las configuraciones y servicios de Internet que estén activados en el panel de control del servidor.", "RefreshMetadata": "Actualizar metadatos", "RefreshQueued": "Actualización puesta en la cola.", "ReleaseDate": "Fecha de estreno", @@ -1023,10 +1023,10 @@ "SeriesRecordingScheduled": "Grabación de series programadas.", "SeriesSettings": "Configuración de la serie", "SeriesYearToPresent": "{0} - Actualidad", - "ServerNameIsRestarting": "El servidor Jellyfin - {0} se está reiniciando.", - "ServerNameIsShuttingDown": "El servidor Jellyfin - {0} se está apagando.", - "ServerRestartNeededAfterPluginInstall": "El servidor Jellyfin necesitará reiniciarse después de instalar un complemento.", - "ServerUpdateNeeded": "Este servidor Jellyfin necesita ser actualizado. Para descargar la última versión, por favor, visita {0}", + "ServerNameIsRestarting": "El servidor {0} se está reiniciando.", + "ServerNameIsShuttingDown": "El servidor {0} se está apagando.", + "ServerRestartNeededAfterPluginInstall": "Jellyfin necesitará reiniciarse después de instalar un complemento.", + "ServerUpdateNeeded": "Este servidor necesita ser actualizado. Para descargar la última versión, por favor, visita {0}", "Settings": "Configuración", "SettingsSaved": "Configuración guardada.", "SettingsWarning": "Cambiar estos valores podría causar inestabilidad o fallas de conexión. Si experimentas cualquier problema, recomendamos volver a los valores por defecto.", @@ -1241,7 +1241,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.", "Season": "Temporada", "PreferEmbeddedEpisodeInfosOverFileNames": "Preferir información del episodio incrustada a los nombres de archivo", @@ -1299,7 +1299,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.", @@ -1353,5 +1353,70 @@ "Data": "Datos", "ButtonUseQuickConnect": "Usar conexión rápida.", "ButtonActivate": "Activar", - "Authorize": "Autorizar" + "Authorize": "Autorizar", + "LabelMaxMuxingQueueSizeHelp": "Número máximo de paquetes que se pueden almacenar en búfer mientras se espera que se inicialicen todos los flujos. Intente aumentarlo si todavía encuentra el error \"Demasiados paquetes almacenados en búfer para el flujo de salida\" en los registros de ffmpeg. El valor recomendado es 2048.", + "LabelMaxMuxingQueueSize": "Tamaño máximo de la cola de muxing:", + "Preview": "Previsualización", + "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:", + "LabelTonemappingParamHelp": "Configuración del algoritmo de mapeo de tonos. Los valores recomendados y predeterminados son NaN. Generalmente déjelo en blanco.", + "LabelTonemappingParam": "Parámetros de mapeo de tonos:", + "LabelTonemappingPeakHelp": "Anule la señal/nominal/pico de referencia, con este valor. Útil cuando la información de picos incorporada en los metadatos de la pantalla no es confiable o cuando el mapeo de tonos de un rango más bajo a un rango más alto. El valor recomendado y predeterminado es 0.", + "LabelTonemappingPeak": "Pico de mapeo de tonos:", + "LabelTonemappingThresholdHelp": "Los parámetros del algoritmo de mapeo de tonos se ajustan con precisión para cada escena. Y se usa un umbral para detectar si la escena ha cambiado o no. Si la distancia entre el brillo promedio del cuadro actual y el promedio actual excede un valor de umbral, volveríamos a calcular el brillo promedio y pico de la escena. Los valores recomendados y predeterminados son 0.8 y 0.2.", + "LabelTonemappingThreshold": "Umbral de mapeo de tonos:", + "LabelTonemappingDesatHelp": "Aplique desaturación para reflejos que superen este nivel de brillo. Cuanto mayor sea el parámetro, más información de color se conservará. Esta configuración ayuda a evitar colores apagados de forma no natural para las altas luces, convirtiéndose (suavemente) en blanco. Esto hace que las imágenes se sientan más naturales, a costa de reducir la información sobre colores fuera de rango. Los valores recomendados y predeterminados son 0 y 0.5.", + "LabelTonemappingDesat": "Desaturación del mapa de tonos:", + "TonemappingRangeHelp": "Seleccione la gama de colores de salida. Auto es el mismo que el rango de entrada.", + "LabelTonemappingRange": "Rango de mapeo de tonos:", + "TonemappingAlgorithmHelp": "El mapeo de tonos se puede ajustar con precisión. Si no está familiarizado con estas opciones, mantenga las predeterminadas. El valor recomendado es Reinhard.", + "LabelTonemappingAlgorithm": "Selecciona el algoritmo de mapeo de tonos:", + "AllowTonemappingHelp": "El mapeo de tonos puede transformar el rango dinámico de un video de HDR a SDR mientras mantiene los detalles y colores de la imagen, que son información muy importante para representar la escena original. Actualmente solo funciona cuando se transcodifican videos con metadatos HDR10 o HLG integrados. Si la reproducción no es fluida o falla, considere apagar el decodificador de hardware.", + "EnableTonemapping": "Habilitar mapeo de tonos", + "LabelOpenclDeviceHelp": "Este es el dispositivo OpenCL que se utiliza para el mapeo de tonos. El lado izquierdo del punto es el número de plataforma y el lado derecho es el número de dispositivo en la plataforma. El valor predeterminado es 0.0. Se requiere el archivo de aplicación ffmpeg que contiene el método de aceleración de hardware OpenCL.", + "LabelOpenclDevice": "Dispositivo OpenCL:", + "LabelColorPrimaries": "Colores primarios:", + "LabelColorTransfer": "Transferencia de color:", + "LabelColorSpace": "Espacio de color:", + "LabelVideoRange": "Rango del video:", + "MediaInfoColorPrimaries": "Colores primarios", + "MediaInfoColorTransfer": "Transferencia de color", + "MediaInfoColorSpace": "Espacio de color", + "MediaInfoVideoRange": "Rango del video", + "Bwdif": "BWDIF", + "VideoAudio": "Audio del video", + "Video": "Video", + "UseDoubleRateDeinterlacingHelp": "Esta configuración utiliza la velocidad de campo al desentrelazar, a menudo denominado desentrelazado bob, que duplica la velocidad de fotogramas del video para proporcionar un movimiento completo como lo que vería al ver un video entrelazado en un televisor.", + "UseDoubleRateDeinterlacing": "Duplicar la velocidad de fotogramas al desentrelazar", + "ThumbCard": "Tarjeta miniatura", + "Subtitle": "Subtítulo", + "SpecialFeatures": "Características especiales", + "SelectServer": "Seleccionar servidor", + "Restart": "Reiniciar", + "ResetPassword": "Reinicializar contraseña", + "QuickConnectNotActive": "La conexión rápida no está habilitada en este servidor.", + "QuickConnectNotAvailable": "Pídele al administrador que habilite la conexión rápida.", + "QuickConnectInvalidCode": "Código de conexión rápida inválido.", + "QuickConnectDescription": "Para entrar con conexión rápida, selecciona el botón de Conexión rápida en el dispositivo desde donde intentas entrar e introduce el código que se muestra debajo.", + "QuickConnectDeactivated": "La conexión rápida fue desactivada antes de que la petición pudiera ser aprobada", + "QuickConnectAuthorizeFail": "Código de conexión rápida desconocido", + "QuickConnectAuthorizeSuccess": "Petición autorizada", + "QuickConnectAuthorizeCode": "Introduce el codigo {0} para entrar.", + "QuickConnectActivationSuccessful": "Activada exitosamente", + "QuickConnect": "Conexión rápida", + "Profile": "Perfil", + "PreviousTrack": "Regresar al previo", + "MessageGetInstalledPluginsError": "Ocurrió un error al tratar de obtener la lista de los complementos instalados.", + "MessagePluginInstallError": "Ocurrió un error al instalar el complemento.", + "PosterCard": "Tarjeta póster", + "Poster": "Póster", + "PlaybackRate": "Tasa de reproducción.", + "Photo": "Foto", + "NextTrack": "Saltar al siguiente", + "MusicVideos": "Videos musicales", + "LabelQuickConnectCode": "Código de conexión rápida:", + "LabelUnstable": "Inestable", + "LabelKnownProxies": "Proxies conocidos:", + "LabelIconMaxResHelp": "Resolución máxima de los íconos expuestos por medio de la propiedad upnp:icon.", + "LabelCurrentStatus": "Estatus actual:" } From 9deae848eb6df4c4e0cb247ff9eb42684f2854ca Mon Sep 17 00:00:00 2001 From: Tim Meier Date: Thu, 24 Sep 2020 05:56:42 +0000 Subject: [PATCH 355/582] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 44 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/src/strings/de.json b/src/strings/de.json index d6104fba72..d7b1eb697f 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1270,7 +1270,7 @@ "Yadif": "YADIF", "LabelLibraryPageSizeHelp": "Setzt die Anzahl der auf einer Seite angezeigten Objekte. Setze auf 0, um alle Elemente auf einer Seite anzuzeigen.", "LabelLibraryPageSize": "Bibliothek Seiten Größe:", - "DeinterlaceMethodHelp": "Wähle die Deinterlacing-Methode zum Transkodieren von Inhalten im Zeilensprungverfahren (Interlace). Sofern bei unterstützten Geräten Deinterlacing durch Hardwarebeschleunigung aktiviert ist, wird der Hardware-Deinterlacer anstelle dieser Einstellung verwendet.", + "DeinterlaceMethodHelp": "Wähle die Deinterlacing-Methode zum Transkodieren von Inhalten im Zeilensprungverfahren (Interlace). Sofern bei unterstützten Geräten Deinterlacing durch Hardwarebeschleunigung aktiviert ist, wird der Hardware-Deinterlacer anstelle dieser Einstellung verwendet.", "LabelDeinterlaceMethod": "Deinterlacing-Methode:", "UnsupportedPlayback": "Jellyfin kann keine DRM-geschützten Inhalte entschlüsseln, aber es wird versucht, alle Inhalte unabhängig davon zu entschlüsseln, einschließlich geschützter Titel. Einige Dateien können aufgrund der Verschlüsselung oder anderer nicht unterstützter Funktionen, wie z.B. interaktive Titel, komplett schwarz erscheinen.", "Filter": "Filter", @@ -1377,10 +1377,46 @@ "LabelColorSpace": "Farbraum:", "MediaInfoColorSpace": "Farbraum", "VideoAudio": "Videoton", - "AllowTonemappingHelp": "Tone Mapping kann die Dynamic Range eines Videos von HDR zu SDR umwandeln und dabei Bilddetails und Farben beibehalten. Dies funktioniert zur Zeit nur mit dem NVENC HEVC-Decoder beim Transkodieren von HDR10 oder HLG-Videos.", + "AllowTonemappingHelp": "Tone Mapping kann die Dynamic Range eines Videos von HDR zu SDR umwandeln und dabei Bilddetails und Farben beibehalten. Dies funktioniert zur Zeit beim Transkodieren von eingebettetem HDR10 oder HLG-Metadaten. Falls die Wiedergabe nicht flüssig oder fehlerhaft ist, ist es empfehlenswert den zuständigen Hardware-Dekodierer zu deaktivieren.", "TonemappingRangeHelp": "Wählen Sie den Ausgabefarbbereich aus. Auto ist derselbe wie der Eingabebereich.", - "TonemappingAlgorithmHelp": "Das Tonemapping kann fein abgestimmt werden. Wenn Sie mit diesen Optionen nicht vertraut sind, behalten Sie einfach den Standardwert bei.
    Der empfohlene Wert ist Reinhard.", + "TonemappingAlgorithmHelp": "Das Tonemapping kann fein abgestimmt werden. Wenn Sie mit diesen Optionen nicht vertraut sind, behalten Sie einfach den Standardwert bei. Der empfohlene Wert ist Reinhard.", "LabelTonemappingAlgorithm": "Wählen Sie den zu verwendenden Tonemapping-Algorithmus aus:", "LabelKnownProxies": "Bekannte Proxys:", - "KnownProxiesHelp": "Kommagetrennte Liste von IP-Adressen bekannter Proxys, die bei der Verbindung mit Ihrer Jellyfin-Instanz verwendet werden. Dies ist erforderlich, um die X-Forwarded-For-Header korrekt verwenden zu können. Erfordert nach dem Speichern einen Neustart." + "KnownProxiesHelp": "Kommagetrennte Liste von IP-Adressen bekannter Proxys, die bei der Verbindung mit Ihrer Jellyfin-Instanz verwendet werden. Dies ist erforderlich, um die X-Forwarded-For-Header korrekt verwenden zu können. Erfordert nach dem Speichern einen Neustart.", + "LabelMaxMuxingQueueSizeHelp": "Maximale Anzahl von Paketen, die gepuffert werden können, während auf die Initialisierung aller Streams gewartet wird. Versuchen Sie, sie zu erhöhen, wenn Sie in den ffmpeg-Protokollen immer noch auf den Fehler \"Zu viele Pakete für den Ausgabestrom gepuffert\" stoßen. Der empfohlene Wert ist 2048.", + "LabelMaxMuxingQueueSize": "Maximale Größe der Muxing-Warteschlange:", + "LabelTonemappingParamHelp": "Stimmen Sie den Tonemapping-Algorithmus ab. Die empfohlenen und Standardwerte sind NaN. Lassen Sie ihn im Allgemeinen leer.", + "LabelTonemappingParam": "Tonemapping-Parameter:", + "LabelTonemappingPeakHelp": "Überschreiben Sie Signal/Nennwert/Referenzspitze mit diesem Wert. Nützlich, wenn die eingebettete Spitzenwertinformation in den Metadaten der Anzeige nicht zuverlässig ist oder wenn die Tonzuordnung von einem niedrigeren zu einem höheren Bereich erfolgt. Die empfohlenen und Standardwerte sind 0.", + "LabelTonemappingPeak": "Tonemapping-Spitze:", + "LabelTonemappingThresholdHelp": "Die Parameter des Tonemapping-Algorithmus werden für jede Szene fein abgestimmt. Und ein Schwellenwert wird verwendet, um zu erkennen, ob sich die Szene geändert hat oder nicht. Wenn der Abstand zwischen der durchschnittlichen Helligkeit des aktuellen Frames und dem aktuellen laufenden Durchschnitt einen Schwellenwert überschreitet, würden wir den Szenendurchschnitt und die Spitzenhelligkeit neu berechnen. Die empfohlenen und Standardwerte sind 0,8 und 0,2.", + "LabelTonemappingThreshold": "Tonemapping-Schwelle:", + "LabelTonemappingDesatHelp": "Wendet die Entsättigung für Lichter an, die diesen Helligkeitsgrad überschreiten. Je höher der Parameter, desto mehr Farbinformationen bleiben erhalten. Diese Einstellung hilft dabei, unnatürlich ausgeblasene Farben für Super-Highlights zu vermeiden, indem sie sich stattdessen (sanft) in Weiß verwandeln. Dadurch fühlen sich Bilder natürlicher an, auf Kosten der Reduzierung von Informationen über Farben außerhalb des Farbbereichs. Die empfohlenen und voreingestellten Werte sind 0 und 0,5.", + "LabelTonemappingDesat": "Tonemapping-Entsättigung:", + "LabelTonemappingRange": "Tonemapping-Bereich:", + "LabelColorPrimaries": "Hauptfarben:", + "LabelColorTransfer": "Farbübertragung:", + "LabelVideoRange": "Video-Bereich:", + "MediaInfoColorPrimaries": "Hauptfarben", + "MediaInfoColorTransfer": "Farbübertragung", + "MediaInfoVideoRange": "Video-Bereich", + "ThumbCard": "Miniaturansichtkarte", + "QuickConnectNotActive": "Schnellverbindung ist auf diesem Server nicht aktiv", + "QuickConnectNotAvailable": "Frag deinen Server-Administrator dass er Schnellverbindung erlaubt", + "QuickConnectInvalidCode": "Falscher Schnellverbindungs-Code", + "QuickConnectDescription": "Um mit Schnellverbindung einzuloggen wählst du den Schnellverbindungs-Knopf auf dem gewünschten Gerät aus und gib den unten angezeigten Code ein.", + "QuickConnectDeactivated": "Schnellverbindung war deaktiviert bevor der Login verifiziert werden konnte", + "QuickConnectAuthorizeFail": "Unbekannter Schnellverbindungs-Code", + "QuickConnectAuthorizeSuccess": "Anfrage autorisiert", + "QuickConnectAuthorizeCode": "Gib zum Login den Code {0} ein", + "QuickConnectActivationSuccessful": "Erfolgreich aktiviert", + "EnableQuickConnect": "Schnellverbindung auf diesem Server aktivieren", + "QuickConnect": "Schnellverbindung", + "PosterCard": "Posterkarte", + "LabelQuickConnectCode": "Schnellverbindungs-Code:", + "LabelCurrentStatus": "Aktueller Status:", + "EnableAutoCast": "Als Standard setzen", + "ButtonUseQuickConnect": "Schnellverbindung nutzen", + "ButtonActivate": "Aktivieren", + "Authorize": "Autorisieren" } From 2ad36cbde8378e266c670007729c0b20fc648c77 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Thu, 24 Sep 2020 05:01:03 +0000 Subject: [PATCH 356/582] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 1bccbf1721..30bbef6a28 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1367,5 +1367,10 @@ "MusicVideos": "Zenei videóklippek", "Image": "Kép", "Other": "További", - "Data": "Adat" + "Data": "Adat", + "EnableQuickConnect": "Gyors kapcsolódás engedélyezése a szerveren", + "EnableAutoCast": "Beállítás alapértelmezettként", + "ButtonUseQuickConnect": "Gyors kapcsolódás használata", + "ButtonActivate": "Aktiválás", + "Authorize": "Felhatalmaz" } From 517b538bb31a5e1b4c28126079cc3950f065a745 Mon Sep 17 00:00:00 2001 From: Darkwolf Date: Thu, 24 Sep 2020 05:38:22 +0000 Subject: [PATCH 357/582] Translated using Weblate (Pirate) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pr/ --- src/strings/pr.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/pr.json b/src/strings/pr.json index 88cee84f94..2066256656 100644 --- a/src/strings/pr.json +++ b/src/strings/pr.json @@ -17,7 +17,7 @@ "AccessRestrictedTryAgainLater": "Ye arn't appearin' on the list o' the livin'!", "ButtonSyncPlay": "SyncPlay", "AddedOnValue": "Upended {0}", - "AddToCollection": "Add to ye collection", + "AddToCollection": "Add t' ye collection", "AdditionalNotificationServices": "Browse th' plugin scroll t' invoke additional bell-ringing.", "AddToPlaylist": "Add t' ye playlist", "AddToPlayQueue": "Add t' ye play queue", @@ -35,5 +35,6 @@ "ValueSongCount": "{0} shantees", "Yes": "Ay", "PathNotFound": "That Be Uncharted Waters Friend.", - "LastSeen": "Ship Last Sighted {0}" + "LastSeen": "Ship Last Sighted {0}", + "Aired": "Sailed" } From 64d46967248a01042aef01110b06693c55c08e50 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Thu, 24 Sep 2020 10:34:19 +0000 Subject: [PATCH 358/582] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 51 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/src/strings/id.json b/src/strings/id.json index 3c64e4603b..df1d6d40f6 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -745,5 +745,54 @@ "LabelCurrentStatus": "Status saat ini:", "EnableQuickConnect": "Aktifkan sambung-cepat pada server ini", "ButtonActivate": "Aktifasi", - "Authorize": "Izinkan" + "Authorize": "Izinkan", + "LabelScheduledTaskLastRan": "Terakhir berlari {0}, mengambil {1}.", + "LabelRuntimeMinutes": "Durasi :", + "LabelRequireHttps": "Memerlukan HTTPS", + "LabelRemoteClientBitrateLimit": "Batas kecepatan bit streaming internet (Mbps) :", + "LabelReleaseDate": "Tanggal rilis :", + "LabelRefreshMode": "Mode penyegaran :", + "LabelRecord": "Merekam :", + "LabelReasonForTranscoding": "Alasan transcoding :", + "LabelQuickConnectCode": "Kode koneksi cepat:", + "LabelPublicHttpsPortHelp": "Nomor port publik yang harus dipetakan ke port HTTPS lokal.", + "LabelPublicHttpsPort": "Nomor port HTTPS publik :", + "LabelPublicHttpPortHelp": "Nomor porta publik yang harus dipetakan ke port HTTP lokal.", + "LabelPublicHttpPort": "Nomor port HTTP publik :", + "LabelProtocolInfoHelp": "Nilai yang akan digunakan saat menanggapi permintaan GetProtocolInfo dari perangkat.", + "LabelProfileCodecs": "Codec :", + "LabelProfileAudioCodecs": "Codec audio :", + "LabelPostProcessorArguments": "Argumen baris perintah pasca-prosesor :", + "LabelPleaseRestart": "Perubahan akan berlaku setelah memuat ulang klien web secara manual.", + "LabelPlayerDimensions": "Dimensi pemain :", + "LabelPlayer": "Pemain :", + "LabelPlayDefaultAudioTrack": "Putar trek audio default apa pun bahasanya", + "LabelPersonRoleHelp": "Contoh : Supir truk es krim", + "LabelPersonRole": "Peran :", + "LabelPasswordResetProvider": "Penyedia Reset Kata Sandi :", + "LabelParentalRating": "Peringkat orang tua :", + "LabelParentNumber": "Nomor induk :", + "LabelOriginalAspectRatio": "Rasio aspek asli :", + "LabelNumberOfGuideDaysHelp": "Mengunduh lebih banyak data panduan senilai hari memberikan kemampuan untuk menjadwalkan lebih awal dan melihat lebih banyak cantuman, tetapi juga akan membutuhkan waktu lebih lama untuk mengunduh. Otomatis akan memilih berdasarkan jumlah saluran.", + "LabelNumberOfGuideDays": "Jumlah hari data panduan untuk diunduh :", + "LabelMusicStreamingTranscodingBitrate": "Bitrate transcoding musik :", + "LabelMoviePrefix": "Awalan film :", + "LabelMonitorUsers": "Pantau aktivitas dari :", + "LabelModelUrl": "Model URL", + "LabelMinScreenshotDownloadWidth": "Lebar unduhan tangkapan layar minimum :", + "LabelMinResumePercentageHelp": "Judul dianggap tidak dimainkan jika dihentikan sebelum waktu ini.", + "LabelMinResumePercentage": "Persentase minimum melanjutkan :", + "LabelMinResumeDurationHelp": "Durasi video terpendek dalam hitungan detik yang akan menyimpan lokasi pemutaran dan memungkinkan Anda melanjutkan.", + "LabelMinResumeDuration": "Durasi minimum melanjutkan :", + "LabelMinBackdropDownloadWidth": "Lebar unduhan tampilan latar minimum :", + "LabelMethod": "Metode :", + "LabelMetadataSaversHelp": "Pilih format file yang akan digunakan saat menyimpan metadata Anda.", + "LabelMetadataSavers": "Penghemat metadata :", + "LabelMetadataReadersHelp": "Beri peringkat sumber metadata lokal pilihan Anda dalam urutan prioritas. File pertama yang ditemukan akan dibaca.", + "LabelMetadataReaders": "Pembaca metadata :", + "LabelMetadataDownloadersHelp": "Aktifkan dan beri peringkat pengunduh metadata pilihan Anda dalam urutan prioritas. Pengunduh dengan prioritas lebih rendah hanya akan digunakan untuk mengisi informasi yang hilang.", + "LabelMaxStreamingBitrateHelp": "Tentukan bitrate maksimum saat streaming.", + "LabelMaxScreenshotsPerItem": "Jumlah tangkapan layar maksimum per item :", + "EnableAutoCast": "Ditetapkan sebagai default", + "ButtonUseQuickConnect": "Gunakan Koneksi Cepat" } From a22b0801d1b1a7bad662faa0d3091e20631d72dc Mon Sep 17 00:00:00 2001 From: bittersweet shimmer Date: Thu, 24 Sep 2020 16:39:47 +0000 Subject: [PATCH 359/582] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index 860d369d32..04fa279c6e 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1372,5 +1372,9 @@ "Photo": "Zdjęcie", "LabelIconMaxResHelp": "Maksymalna rozdzielczość ikon udostępnianych przez upnp:icon.", "LabelAlbumArtMaxResHelp": "Maksymalna rozdzielczość okładki albumu udostępnianej przez upnp:albumArtURI.", - "Other": "Inne" + "Other": "Inne", + "QuickConnectActivationSuccessful": "Aktywowano pomyślnie", + "LabelCurrentStatus": "Bieżący status:", + "EnableAutoCast": "Ustaw jako Domyślny", + "ButtonActivate": "Aktywuj" } From 1d938a08f34b5bc37cf69ee9e6abb215b0957e1c Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Fri, 25 Sep 2020 01:34:07 +0000 Subject: [PATCH 360/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 9747d77ebc..b928a4fa39 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -1147,7 +1147,7 @@ "LabelSeriesRecordingPath": "Đường dẫn Ghi lại Phim Bộ:", "PinCodeResetConfirmation": "Bạn có chắc chắn muốn đặt lại mã pin không?", "PinCodeResetComplete": "Mã pin đã được đặt lại.", - "PictureInPicture": "Ảnh trong ảnh", + "PictureInPicture": "Trình phát thu nhỏ", "Photo": "Hình Ảnh", "Person": "Người", "PerfectMatch": "Trùng khớp hoàn hảo", @@ -1355,7 +1355,7 @@ "WeeklyAt": "{0}s tại {1}", "DailyAt": "Hàng ngày lúc {0}", "LastSeen": "Xem lần cuối {0}", - "PersonRole": "với tư cách là {0}", + "PersonRole": "Vai diễn {0}", "ListPaging": "{0}-{1} của {2}", "WriteAccessRequired": "Jellyfin yêu cầu quyền ghi vào thư mục này. Hãy đảm bảo quyền ghi và thử lại.", "PathNotFound": "Không thể tìm thấy đường dẫn. Vui lòng đảm bảo đường dẫn hợp lệ và thử lại.", From f0b651508815077b7fc5befae14bae63d8c1a30f Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Fri, 25 Sep 2020 02:03:01 +0000 Subject: [PATCH 361/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index b928a4fa39..6309960f6c 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -314,7 +314,7 @@ "Features": "Mục đặc trưng", "Favorites": "Yêu Thích", "Favorite": "Yêu thích", - "FastForward": "Tua nhanh", + "FastForward": "Tua Nhanh Hơn", "FFmpegSavePathNotFound": "Máy chủ không thể tìm thấy chương trình FFmpeg trong đường dẫn bạn đã nhập. FFprobe thì cũng cần thiết và phải nằm trong cùng thư mục bên trên. Những phần mềm này thường được tổng hợp cùng nhau trong một lượt tải. Hãy thử lại sau khi kiểm tra đường dẫn.", "Extras": "Đặc biệt", "ExtractChapterImagesHelp": "Trích xuất hình ảnh từ những phân đoạn chính sẽ cho phép thiết bị phát hiển thị bảng lựa chọn cảnh thông qua những hình ảnh đó. Quá trình đó có thể chậm, cần nhiều tài nguyên máy chủ, và có thể cần một vài gigabytes trống. Điều này sẽ được thực hiện khi video được tìm thấy, và cũng như trong tác vụ hàng đêm. Thời gian thực hiện tác vụ này có thể điều chỉnh trong phần cài đặt tác vụ thường xuyên. Không nên thực hiện quá trình này trong giờ sử dụng cao điểm.", @@ -717,7 +717,7 @@ "ValueSpecialEpisodeName": "Đặc Biệt - {0}", "Filter": "Bộ lọc", "New": "Mới", - "Shuffle": "Xáo trộn", + "Shuffle": "Phát ngẫu nhiên", "Share": "Chia sẻ", "ShowAdvancedSettings": "Hiển thị cài đặt nâng cao", "ShowIndicatorsFor": "Hiển thị các chỉ số cho:", @@ -1102,7 +1102,7 @@ "Never": "Không Bao Giờ", "Name": "Tên", "MySubtitles": "Phụ Đề Của Tôi", - "Mute": "Tắt Âm Thanh", + "Mute": "Tắt Tiếng", "MusicVideos": "Video Âm Nhạc", "MusicVideo": "Video Âm Nhạc", "MusicLibraryHelp": "Xem lại {0} hướng dẫn đặt tên nhạc {1}.", @@ -1204,7 +1204,7 @@ "SaveSubtitlesIntoMediaFolders": "Lưu phụ đề vào thư mục phương tiện", "SaveChanges": "Lưu thay đổi", "Runtime": "Thời lượng", - "Rewind": "Tua lại", + "Rewind": "Tua Chậm Lại", "ResumeAt": "Tiếp tục từ {0}", "Restart": "Khởi động lại", "ResetPassword": "Đặt lại mật khẩu", @@ -1393,7 +1393,7 @@ "Upload": "Tải lên", "Up": "Lên", "Unrated": "Chưa được xếp hạng", - "Unmute": "Bỏ tắt tiếng", + "Unmute": "Bật Tiếng", "Uniform": "Cùng một kiểu", "ValueContainer": "Định dạng: {0}", "TabContainers": "Định dạng", From 4c34d405d143b884bd2897b3ac6f845eff335b76 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Fri, 25 Sep 2020 02:21:53 +0000 Subject: [PATCH 362/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 6309960f6c..c491664693 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -17,7 +17,7 @@ "HeaderCustomDlnaProfiles": "Hồ sơ khách hàng", "HeaderFeatureAccess": "Truy cập tính năng", "HeaderFrequentlyPlayed": "Phát thường xuyên", - "HeaderLatestEpisodes": "Các tập phim mới nhất", + "HeaderLatestEpisodes": "Tập phim mới nhất", "HeaderLatestMovies": "Phim mới nhất", "HeaderRecentlyPlayed": "Phát gần đây", "HeaderStatus": "Trạng thái", @@ -73,7 +73,7 @@ "TabProfiles": "Hồ sơ", "TabServer": "Máy chủ", "TabUpcoming": "Sắp Công Chiếu", - "TellUsAboutYourself": "Nói cho chúng tôi biết đôi điều về Bạn", + "TellUsAboutYourself": "Cho chúng tôi biết thông tin 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}?", "HeaderUninstallPlugin": "Gỡ bỏ Plugin", @@ -208,7 +208,7 @@ "Banner": "Ảnh bìa", "Art": "Nghệ thuật", "Artist": "Nghệ Sĩ", - "AllowFfmpegThrottlingHelp": "Tạm dừng quá trình chuyển mã hoặc chuyển đổi định dạng để tiết kiệm tài nguyên máy chủ khi việc này đã đủ để phát so với vị trí hiện tại. Điều này hữu hiệu khi không tua nhanh thường xuyên lúc nghe nhạc hoặc xem phim. Tắt tính năng này nếu bạn gặp sự cố khi phát lại.", + "AllowFfmpegThrottlingHelp": "Tạm dừng quá trình chuyển mã hoặc chuyển đổi định dạng để tiết kiệm tài nguyên máy chủ khi việc này đã đủ để phát so với vị trí hiện tại. Nó hữu ích khi xem mà không cần tua. Tắt nó đi nếu trình phát gặp sự cố.", "AllowFfmpegThrottling": "Điều tiết sự chuyển mã", "AlbumArtist": "Nghệ sĩ Album", "Album": "Album", @@ -330,7 +330,7 @@ "ErrorAddingTunerDevice": "Đã xảy ra lỗi khi thêm thiết bị dò. Hãy đảm bảo rằng nó có thể truy cập được và thử lại.", "ErrorAddingMediaPathToVirtualFolder": "Có lỗi xảy ra khi thêm đường dẫn phương tiện này. Vui lòng đảm bảo đường dẫn chính xác và Jellyfin được phép truy cập vào vị trí đó.", "ErrorAddingListingsToSchedulesDirect": "Có lỗi xảy ra khi thêm danh sách này vào tài khoản Schedules Direct của bạn. Schedules Direct chỉ cho phép một số lượng danh sách nhất định mỗi tài khoản. Bạn có thể cần phải đăng nhập vào trang web của Schedules Direct và xoá những danh sách khác trước khi có thể thêm danh sách mới.", - "Episodes": "Tập", + "Episodes": "Tập Phim", "Episode": "Tập", "EndsAtValue": "Kết thúc lúc {0}", "Ended": "Đã Kết Thúc", @@ -340,7 +340,7 @@ "EnableStreamLooping": "Tự động phát lại live streams", "EnablePhotosHelp": "Hình ảnh sẽ được nhận diện và hiển thị bên cạnh những nội dung media.", "EnablePhotos": "Hiển thị hình ảnh", - "EnableNextVideoInfoOverlayHelp": "Khi ở phần cuối video, hiển thị thông tin về video tiếp theo trong danh sách phát hiện tại.", + "EnableNextVideoInfoOverlayHelp": "Lúc cuối video, hiển thị thông tin video sắp phát tiếp theo trong danh sách phát hiện tại.", "EnableNextVideoInfoOverlay": "Hiển thị thông tin video tiếp theo ở phần cuối video", "EnableHardwareEncoding": "Sử dụng phần cứng để hỗ trợ chuyển mã", "EnableExternalVideoPlayersHelp": "Phần mềm phát video từ thiết bị sẽ được hiển thị khi bắt đầu phát video.", @@ -363,7 +363,7 @@ "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}", - "HeaderNextEpisodePlayingInValue": "Tập Tiếp Theo Sẽ Được Chạy trong {0}", + "HeaderNextEpisodePlayingInValue": "Tập Tiếp Theo Đang Phát ở {0}", "HeaderNewDevices": "Thiết Bị Mới", "HeaderNewApiKey": "Mã API Mới", "HeaderNavigation": "Điều Hướng", @@ -520,7 +520,7 @@ "ItemCount": "{0} mục", "InstantMix": "Trộn Lẫn Nhanh", "InstallingPackage": "Đang cài đặt {0} (phiên bản {1})", - "ImportMissingEpisodesHelp": "Thông tin về các tập phim bị thiếu sẽ được nhập vào cơ sở dữ liệu của bạn và hiển thị trong các mùa và loạt phim bộ. Điều này có thể làm quá trình quét thư viện lâu hơn đáng kể.", + "ImportMissingEpisodesHelp": "Thông tin các tập phim bị thiếu sẽ được nhập vào cơ sở dữ liệu của bạn và hiển thị trong các phần và loạt phim bộ. Điều này có thể làm quá trình quét thư viện lâu hơn đáng kể.", "ImportFavoriteChannelsHelp": "Chỉ các kênh được đánh dấu là yêu thích trên thiết bị dò kênh mới được nhập.", "Images": "Hình Ảnh", "Identify": "Nhận Dạng", From 4c8da2fe0c027facf4eb94cb8592edc2ccff3c4f Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Fri, 25 Sep 2020 03:04:37 +0000 Subject: [PATCH 363/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 70 +++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index c491664693..7f2199279d 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -140,14 +140,14 @@ "AllowOnTheFlySubtitleExtraction": "Cho phép trích xuất phụ đề trực tiếp", "AllowMediaConversionHelp": "Cấp hoặc từ chối truy cập vào tính năng chuyển đổi media.", "AllowMediaConversion": "Cho phép chuyển đổi media", - "AllowHWTranscodingHelp": "Cho phép bộ chỉnh chuyển mã stream khi đang chơi. Điều này có thể giúp giảm tải của máy chủ khi chuyển mã.", + "AllowHWTranscodingHelp": "Cho phép bộ dò chuyển mã phát trực tiếp. Nó có thể giúp giảm tải của máy chủ khi chuyển mã.", "AllLibraries": "Tất cả các thư viện", "AllLanguages": "Tất cả các ngôn ngữ", "AllEpisodes": "Tất cả các tập phim", "AllComplexFormats": "Tất cả các định dạng phức tạp (ASS, SSA, VOBSUB, PGS, SUB, IDX, ...)", "AllChannels": "Tất cả các kênh", "Alerts": "Cảnh Báo", - "Albums": "Albums", + "Albums": "", "Aired": "Đã phát sóng", "AirDate": "Ngày phát sóng", "AdditionalNotificationServices": "Duyệt qua danh mục plugin để cài đặt các dịch vụ thông báo bổ sung.", @@ -223,7 +223,7 @@ "Director": "Đạo Diễn", "DirectStreaming": "Phát trực tuyến", "DirectStreamHelp2": "Phát trực tiếp sử dụng ít sức mạnh xử lý với chất lượng video bị giảm thiểu chút ít.", - "DirectStreamHelp1": "Nội dung này tương thích với thiết bị về độ phân giải và dạng mã hoá (H.264, AC3, v.v.), nhưng lại không tương tích định dạng (mkv, avi, wmv, v.v.). Video sẽ được đóng gói lại nhanh chóng trước khi được gửi đến thiết bị.", + "DirectStreamHelp1": "Nội dung này tương thích với thiết bị về độ phân giải và loại mã hoá (H.264, AC3, v.v.), nhưng lại không tương thích định dạng (mkv, avi, wmv, v.v.). Video sẽ được đóng gói nhanh chóng trước khi được gửi đến phát trên thiết bị.", "DirectPlaying": "Phát trực tiếp", "DeviceAccessHelp": "Thiết lập này chỉ áp dụng cho những thiết bị có thể định danh và sẽ không chặn được truy cập từ trình duyệt. Chọn lọc thiết bị người dùng sẽ chặn người dùng này truy cập từ những thiết bị mới cho đến khi được duyệt.", "DetectingDevices": "Đang tìm kiếm thiết bị", @@ -254,12 +254,12 @@ "HeaderDateIssued": "Ngày Phát Hành", "HeaderContinueWatching": "Xem Tiếp", "HeaderContinueListening": "Tiếp Tục Nghe", - "HeaderCodecProfileHelp": "Bộ giải mã chỉ ra những kiểu mã hoá nhất định mà một thiết bị có thể phát. Nếu một nội dung không thể phát, nó sẽ được chuyển mã, thậm chí nếu kiểu mã hoá đó được thiết lập phát trực tiếp.", + "HeaderCodecProfileHelp": "Hồ sơ mã hóa chỉ ra những kiểu mã hoá nhất định mà một thiết bị có thể phát. Nếu một nội dung không thể phát, nó sẽ được chuyển mã, thậm chí nếu kiểu mã hoá đó được thiết lập phát trực tiếp.", "HeaderContainerProfileHelp": "Hồ sơ định dạng chỉ ra những định dạng nhất định mà một thiết bị có thể phát. Nếu nội dung có định dạng không thể phát, nội dung sẽ được chuyển đổi định dạng, kể cả khi định dạng đó được thiết lập phát trực tiếp.", "HeaderContainerProfile": "Hồ Sơ Định Dạng", "HeaderConnectionFailure": "Kế Nối Thất Bại", "HeaderConnectToServer": "Kết Nối Đến Máy Chủ", - "HeaderConfirmRevokeApiKey": "Thu Hồi Quyền Truy Cập API Key", + "HeaderConfirmRevokeApiKey": "Thu hồi khóa API", "HeaderConfirmProfileDeletion": "Xác Nhận Xoá Hồ Sơ", "HeaderConfirmPluginInstallation": "Xác Nhận Cài Đặt Plugin", "HeaderConfigureRemoteAccess": "Thiết Lập Truy Cập Từ Xa", @@ -276,8 +276,8 @@ "HeaderAppearsOn": "Xuất Bản Vào", "HeaderApp": "Ứng dụng", "HeaderApiKeysHelp": "Ứng dụng bên ngoài cần có \"khóa API\" để giao tiếp với máy chủ Jellyfin. Khóa được cấp theo cách đăng nhập bằng tài khoản người dùng thông thường hoặc cấp khóa cho ứng dụng theo cách thủ công.", - "HeaderApiKeys": "API Keys", - "HeaderApiKey": "API Key", + "HeaderApiKeys": "Khóa API", + "HeaderApiKey": "Khóa API", "HeaderAllowMediaDeletionFrom": "Cho Phép Xoá Nội Dung", "HeaderAlert": "Thông Báo", "HeaderAlbumArtists": "Bộ Sưu Tập Nghệ sĩ", @@ -315,7 +315,7 @@ "Favorites": "Yêu Thích", "Favorite": "Yêu thích", "FastForward": "Tua Nhanh Hơn", - "FFmpegSavePathNotFound": "Máy chủ không thể tìm thấy chương trình FFmpeg trong đường dẫn bạn đã nhập. FFprobe thì cũng cần thiết và phải nằm trong cùng thư mục bên trên. Những phần mềm này thường được tổng hợp cùng nhau trong một lượt tải. Hãy thử lại sau khi kiểm tra đường dẫn.", + "FFmpegSavePathNotFound": "Không tìm thấy FFmpeg bằng đường dẫn bạn đã nhập. FFprobe cũng được yêu cầu và phải cùng thư mục. Cả hai thường được để chung trong cùng một gói tải xuống. Hãy kiểm tra đường dẫn và thử lại.", "Extras": "Đặc biệt", "ExtractChapterImagesHelp": "Trích xuất hình ảnh từ những phân đoạn chính sẽ cho phép thiết bị phát hiển thị bảng lựa chọn cảnh thông qua những hình ảnh đó. Quá trình đó có thể chậm, cần nhiều tài nguyên máy chủ, và có thể cần một vài gigabytes trống. Điều này sẽ được thực hiện khi video được tìm thấy, và cũng như trong tác vụ hàng đêm. Thời gian thực hiện tác vụ này có thể điều chỉnh trong phần cài đặt tác vụ thường xuyên. Không nên thực hiện quá trình này trong giờ sử dụng cao điểm.", "ExtraLarge": "Rất Lớn", @@ -365,7 +365,7 @@ "HeaderNextVideoPlayingInValue": "Video Tiếp Theo Sẽ Phát trong {0}", "HeaderNextEpisodePlayingInValue": "Tập Tiếp Theo Đang Phát ở {0}", "HeaderNewDevices": "Thiết Bị Mới", - "HeaderNewApiKey": "Mã API Mới", + "HeaderNewApiKey": "Khóa API Mới", "HeaderNavigation": "Điều Hướng", "HeaderMyMediaSmall": "Nội Dung Của Tôi (cỡ nhỏ)", "HeaderMyMedia": "Nội Dung Của Tôi", @@ -431,7 +431,7 @@ "HeaderSelectServerCachePathHelp": "Hãy chọn đường dẫn để lưu tập tin ghi tạm cho máy chủ. Máy chủ phải có quyền ghi trên thư mục đó.", "HeaderSelectServerCachePath": "Chọn Đường Dẫn Ghi Tạm Cho Máy Chủ", "HeaderSelectPath": "Chọn Đường Dẫn", - "HeaderSelectMetadataPathHelp": "Duyệt qua hoặc nhập đường dẫn bạn muốn sử dụng cho các mô tả dữ liệu. Máy chủ phải có quyền ghi trên thư mục đó.", + "HeaderSelectMetadataPathHelp": "Duyệt hoặc nhập đường dẫn sử dụng cho mô tả dữ liệu. Thư mục này phải ghi được.", "HeaderSelectMetadataPath": "Chọn Đường Dẫn Thông Tin Bổ Trợ", "HeaderSelectCertificatePath": "Chọn Đường Dẫn Đến Chứng Chỉ", "HeaderSecondsValue": "{0} Giây", @@ -483,7 +483,7 @@ "LabelBitrate": "Bitrate:", "LabelBirthYear": "Năm sinh:", "LabelBirthDate": "Ngày sinh:", - "LabelBindToLocalNetworkAddressHelp": "Không bắt buộc. Ghi đè địa chỉ IP cục bộ để kết hợp với máy chủ HTTP. Nếu bỏ trống, máy chủ sẽ cài đặt vào toàn bộ những địa chỉ nội bộ có sẵn. Nếu thay đổi tuỳ chọn này, yêu cầu khởi động lại máy chủ Jellyfin để có tác dụng.", + "LabelBindToLocalNetworkAddressHelp": "Ghi đè địa chỉ IP cục bộ cho máy chủ HTTP. Nếu bỏ trống, máy chủ sẽ kết hợp tất cả địa chỉ có sẵn. Thay đổi giá trị này buộc phải khởi động lại.", "LabelBindToLocalNetworkAddress": "Liên kết với địa chỉ mạng cục bộ:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Tự động cập nhật dữ liệu mô tả từ Internet:", "LabelAuthProvider": "Cách Xác Thực:", @@ -573,11 +573,11 @@ "LabelDefaultScreen": "Màn hình mặc định:", "LabelDeathDate": "Ngày mất:", "LabelDateTimeLocale": "Ngày giờ địa phương:", - "LabelDateAddedBehaviorHelp": "Nếu có sẵn giá trị mô tả dữ liệu, nó sẽ luôn được sử dụng trước một trong các tùy chọn này.", + "LabelDateAddedBehaviorHelp": "Nếu có giá trị dữ liệu mô tả, nó sẽ luôn được sử dụng trước một trong các tùy chọn này.", "LabelDateAddedBehavior": "Ngày thêm hành vi cho nội dung mới:", "LabelDateAdded": "Ngày thêm vào:", "LabelCustomRating": "Đánh giá tuỳ chọn:", - "ApiKeysCaption": "Danh sách các mã API đang hoạt động", + "ApiKeysCaption": "Danh sách các Khóa API hiện được bật", "LabelBaseUrl": "URL cơ bản:", "LabelEveryXMinutes": "Mỗi:", "LabelEpisodeNumber": "Tập số:", @@ -586,7 +586,7 @@ "LabelEnableSingleImageInDidlLimit": "Giới hạn chỉ một hình ảnh nhúng", "LabelEnableRealtimeMonitorHelp": "Các thay đổi đối với tệp sẽ được xử lý ngay lập tức trên các hệ thống tệp được hỗ trợ.", "LabelEnableRealtimeMonitor": "Bật tính năng theo dõi thời gian thực", - "LabelEnableHttpsHelp": "Cho phép máy chủ nghe trên cổng HTTPS đã định cấu hình. Chứng chỉ hợp lệ cũng phải được định cấu hình để điều này có hiệu lực.", + "LabelEnableHttpsHelp": "Cho phép máy chủ nghe trên cổng HTTPS đã cấu hình. Chứng chỉ hợp lệ cũng phải được định cấu hình để điều này có hiệu lực.", "LabelEnableHttps": "Bật HTTPS", "LabelEnableHardwareDecodingFor": "Bật tính năng giãi mã phần cứng cho:", "LabelEnableDlnaServerHelp": "Cho phép các thiết bị UPnP trong mạng của bản để duyệt và phát nội dung.", @@ -595,7 +595,7 @@ "LabelEnableDlnaDebugLoggingHelp": "Tạo những tập tin gỡ lỗi lớn và chỉ nên được sử dụng khi cần thiết để xử lý sự cố.", "LabelEnableDlnaDebugLogging": "Bật tính năng gỡ lỗi DLNA", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Xác định thời gian tính bằng giây giữa các lần tìm kiếm SSDP thực hiện bởi Jellyfin.", - "LabelEnableDlnaClientDiscoveryInterval": "Thời gian tìm kiếm thiết bị phát (giây)", + "LabelEnableDlnaClientDiscoveryInterval": "Thời gian dò tìm thiết bị phát (giây)", "LabelEnableBlastAliveMessagesHelp": "Bật cái này nếu máy chủ không được các thiết bị UPnP khác trên mạng của bạn tìm ra một cách đáng tin cậy.", "LabelEnableBlastAliveMessages": "Phát tin nhắn trực tiếp", "LabelEnableAutomaticPortMapHelp": "Tự động chuyển tiếp các cổng công cộng trên bộ định tuyến của bạn tới các cổng cục bộ trên máy chủ của bạn qua UPnP. Điều này có thể không hoạt động với một số bộ định tuyến hoặc cấu hình mạng. Thay đổi sẽ được áp dụng sau khi khởi động lại máy chủ.", @@ -681,7 +681,7 @@ "LabelMinResumeDuration": "Thời lượng phát tiếp tục tối thiểu:", "LabelMinBackdropDownloadWidth": "Chiều rộng tối thiểu của phông nền tải xuống:", "LabelMethod": "Phương pháp:", - "LabelMetadataSaversHelp": "Chọn định dạng tập tin để sử dụng khi lưu mô tả chi tiết của bạn.", + "LabelMetadataSaversHelp": "Chọn định dạng tập tin dùng để lưu dữ liệu mô tả của bạn.", "LabelMetadataSavers": "Lưu Dữ liệu Mô Tả Dưới Dạng:", "LabelMetadataReadersHelp": "Sắp xếp thứ tự ưu tiên những dữ liệu mô tả cục bộ. Tập tin đầu tiên được tìm thấy sẽ được đọc.", "LabelMetadataReaders": "Trình đọc dữ liệu mô tả:", @@ -770,7 +770,7 @@ "MessageImageFileTypeAllowed": "Chỉ các tệp JPEG và PNG được hỗ trợ.", "LabelKnownProxies": "Các Proxy đã biết:", "LabelIconMaxResHelp": "Độ phân giải tối đa của các biểu tượng được hiển thị thông qua thuộc tính upnp:icon .", - "KnownProxiesHelp": "Danh sách địa chỉ IP của các proxy đã biết được sử dụng khi kết nối với phiên bản Jellyfin của bạn được phân tách bằng dấu phẩy. Đây là bắt buộc để sử dụng đúng các tiêu đề X-Forwarded-For. Yêu cầu khởi động lại sau khi lưu.", + "KnownProxiesHelp": "Phân tách bằng dấu phẩy danh sách địa chỉ IP của các proxy đã biết được sử dụng khi kết nối với Jellyfin. Đây là bắt buộc để sử dụng đúng các tiêu đề X-Forwarded-For. Yêu cầu khởi động lại sau khi lưu.", "Image": "Hình Ảnh", "LabelSyncPlayLeaveGroup": "Rời khỏi nhóm", "LabelSyncPlayNewGroupDescription": "Tạo một nhóm mới", @@ -799,8 +799,8 @@ "LabelSkipIfGraphicalSubsPresent": "Bỏ qua nếu video đã có phụ đề được nhúng", "LabelSkipIfAudioTrackPresentHelp": "Bỏ chọn mục này để đảm bảo tất cả video đều có phụ đề, bất kể ngôn ngữ âm thanh.", "LabelSkipIfAudioTrackPresent": "Bỏ qua nếu bản âm thanh mặc định khớp với ngôn ngữ tải xuống", - "LabelSkipForwardLength": "Bỏ qua độ dài phía trước:", - "LabelSkipBackLength": "Bỏ qua độ dài phía sau:", + "LabelSkipForwardLength": "Bỏ qua đoạn trước:", + "LabelSkipBackLength": "Bỏ qua đoạn sau:", "LabelSize": "Kích cỡ:", "LabelSimultaneousConnectionLimit": "Giới hạn luồng đồng thời:", "LabelServerName": "Tên máy chủ:", @@ -827,9 +827,9 @@ "LabelRecord": "Ghi lại:", "LabelReasonForTranscoding": "Lý do chuyển mã:", "LabelQuickConnectCode": "Mã số kết nối nhanh:", - "LabelPublicHttpsPortHelp": "Số cổng công cộng sẽ được ánh xạ tới cổng HTTPS cục bộ.", + "LabelPublicHttpsPortHelp": "Số cổng công khai sẽ được ánh xạ tới cổng HTTPS cục bộ.", "LabelPublicHttpsPort": "Số cổng HTTPS công khai:", - "LabelPublicHttpPortHelp": "Số cổng công khai sẽ được ánh xạ tới cổng HTTP cục bộ.", + "LabelPublicHttpPortHelp": "Số cổng công khai sẽ được ánh xa tới cổng HTTP cục bộ.", "LabelPublicHttpPort": "Số cổng HTTP công khai:", "LabelProtocolInfoHelp": "Giá trị sẽ được sử dụng khi phản hồi các yêu cầu GetProtocolInfo từ thiết bị.", "LabelProtocolInfo": "Thông tin giao thức:", @@ -842,11 +842,11 @@ "LabelProfileAudioCodecs": "Bộ giải mã âm thanh:", "LabelPreferredSubtitleLanguage": "Ngôn ngữ phụ đề ưu tiên:", "LabelPreferredDisplayLanguage": "Ngôn ngữ hiển thị ưa thích:", - "LabelPostProcessorArgumentsHelp": "Sử dụng {path} làm đường dẫn đến tệp ghi.", - "LabelPostProcessorArguments": "Đối số dòng lệnh của bộ xử lý sau:", - "LabelPostProcessor": "Ứng dụng sau xử lý:", - "LabelPleaseRestart": "Các thay đổi sẽ có hiệu lực sau khi tải lại ứng dụng khách web theo cách thủ công.", - "LabelPlayMethod": "Phương pháp chơi:", + "LabelPostProcessorArgumentsHelp": "Dùng {path} làm đường dẫn đến tệp ghi.", + "LabelPostProcessorArguments": "Đối số dòng lệnh xử lý hậu kỳ:", + "LabelPostProcessor": "Ứng dụng xử lý hậu kỳ:", + "LabelPleaseRestart": "Thay đổi sẽ có hiệu lực sau khi bấm tải lại trang web thủ công.", + "LabelPlayMethod": "Cách Phát:", "LabelPlaylist": "Danh sách phát:", "LabelPlayerDimensions": "Kích thước trình phát:", "LabelPlayer": "Trình phát:", @@ -856,9 +856,9 @@ "LabelPersonRole": "Vai trò:", "LabelPath": "Đường dẫn:", "LabelPasswordRecoveryPinCode": "Mã PIN:", - "LabelPasswordResetProvider": "Nhà cung cấp Đặt lại Mật khẩu:", - "LabelParentalRating": "Đánh giá của phụ huynh:", - "LabelParentNumber": "Số chính:", + "LabelPasswordResetProvider": "Cách Đặt lại Mật khẩu:", + "LabelParentalRating": "Đánh giá phụ huynh:", + "LabelParentNumber": "Số Phụ Huynh:", "LabelOverview": "Tổng quát:", "LabelOriginalTitle": "Tiêu đề gốc:", "LabelOriginalAspectRatio": "Tỷ lệ khung hình gốc:", @@ -1015,7 +1015,7 @@ "LabelSyncPlayAccessJoinGroups": "Cho phép người dùng tham gia nhóm", "LabelSyncPlayAccessCreateAndJoinGroups": "Cho phép người dùng tạo và tham gia nhóm", "LabelSyncPlayLeaveGroupDescription": "Tắt SyncPlay", - "LabelSonyAggregationFlagsHelp": "Xác định nội dung của phần tử aggregationFlags trong không gian tên urn: schemas-sonycom: av.", + "LabelSonyAggregationFlagsHelp": "Xác định nội dung của phần tử aggregationFlags trong không gian tên urn:schemas-sonycom:av.", "LabelServerHost": "Máy chủ:", "OptionSaveMetadataAsHiddenHelp": "Thay đổi điều này sẽ áp dụng cho dữ liệu mô tả mới được lưu về sau. Các tệp dữ liệu mô tả hiện có sẽ được cập nhật vào lần tiếp theo chúng được máy chủ lưu.", "OptionSaveMetadataAsHidden": "Lưu dữ liệu mô tả và hình ảnh dưới dạng tệp ẩn", @@ -1289,7 +1289,7 @@ "TagsValue": "Thẻ: {0}", "Tags": "Thẻ", "TabStreaming": "Luồng", - "TabScheduledTasks": "Công việc đã lên lịch", + "TabScheduledTasks": "Tác vụ đã lên lịch", "TabResponses": "Phản hồi", "TabParentalControl": "Kiểm soát của cha mẹ", "TabOther": "Khác", @@ -1334,7 +1334,7 @@ "LabelTonemappingDesat": "Khử bão hòa tông màu:", "LabelTonemappingDesatHelp": "Áp dụng khử bão hòa cho các vùng sáng vượt quá mức độ sáng này. Thông số này càng cao thì thông tin màu càng được bảo toàn. Cài đặt này giúp ngăn các màu bị lóa không tự nhiên để tạo ra những vùng siêu nổi bật, bằng cách (trơn tru) chuyển thành màu trắng. Điều này làm cho hình ảnh cảm thấy tự nhiên hơn, với chi phí là giảm thông tin về các màu nằm ngoài phạm vi. Các giá trị được đề xuất và mặc định là 0 và 0,5.", "LabelTonemappingRange": "Phạm vi ánh xạ tông màu:", - "AllowTonemappingHelp": "Ánh xạ tông màu có thể chuyển đổi dải động của video từ HDR sang SDR trong khi vẫn duy trì chi tiết và màu sắc của hình ảnh, đây là những thông tin rất quan trọng để thể hiện cảnh gốc. Hiện chỉ hoạt động khi chuyển mã video với siêu dữ liệu HDR10 hoặc HLG được nhúng. Nếu quá trình phát lại không mượt mà hoặc không thành công, vui lòng xem xét việc tắt bộ giải mã phần cứng tương ứng.", + "AllowTonemappingHelp": "Ánh xạ tông màu có thể biến đổi dải động của video từ HDR sang SDR trong khi vẫn duy trì chi tiết và màu sắc của hình ảnh, đây là những thông tin rất quan trọng để thể hiện cảnh gốc. Hiện chỉ hoạt động khi chuyển mã video với siêu dữ liệu HDR10 hoặc HLG được nhúng. Nếu quá trình phát lại không mượt mà hoặc không thành công, vui lòng xem xét việc tắt bộ giải mã phần cứng tương ứng.", "EnableTonemapping": "Bật Ánh xạ tông màu", "LabelOpenclDevice": "Thiết bị OpenCL:", "LabelColorPrimaries": "Màu cơ bản:", @@ -1394,9 +1394,11 @@ "Up": "Lên", "Unrated": "Chưa được xếp hạng", "Unmute": "Bật Tiếng", - "Uniform": "Cùng một kiểu", + "Uniform": "Đồng dạng", "ValueContainer": "Định dạng: {0}", "TabContainers": "Định dạng", "OptionEmbedSubtitles": "Nhúng trong định dạng", - "MediaInfoContainer": "Định dạng" + "MediaInfoContainer": "Định dạng", + "Raised": "Nâng lên", + "EnableAutoCast": "Đặt làm mặc định" } From f0441b0cafc9cfb4927b76fbc75804b118bc8235 Mon Sep 17 00:00:00 2001 From: cvium Date: Fri, 25 Sep 2020 12:52:36 +0200 Subject: [PATCH 364/582] Fix PIN request and reset route --- package.json | 2 +- src/controllers/session/forgotPassword/index.js | 1 + src/scripts/routes.js | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index a38cf6c843..d2072a85a9 100644 --- a/package.json +++ b/package.json @@ -214,7 +214,7 @@ "src/components/castSenderApi.js", "src/controllers/session/addServer/index.js", "src/controllers/session/forgotPassword/index.js", - "src/controllers/session/redeemPassword/index.js", + "src/controllers/session/resetPassword/index.js", "src/controllers/session/login/index.js", "src/controllers/session/selectServer/index.js", "src/controllers/dashboard/apikeys.js", diff --git a/src/controllers/session/forgotPassword/index.js b/src/controllers/session/forgotPassword/index.js index 0f2464e2d8..5b92e255da 100644 --- a/src/controllers/session/forgotPassword/index.js +++ b/src/controllers/session/forgotPassword/index.js @@ -41,6 +41,7 @@ import globalize from 'globalize'; type: 'POST', url: ApiClient.getUrl('Users/ForgotPassword'), dataType: 'json', + contentType: 'application/json', data: JSON.stringify({ EnteredUsername: view.querySelector('#txtName').value }) diff --git a/src/scripts/routes.js b/src/scripts/routes.js index d2d8e91886..8e2440b140 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -62,11 +62,11 @@ import 'detailtablecss'; defineRoute({ alias: '/forgotpasswordpin.html', - path: '/controllers/session/redeemPassword/index.html', + path: '/controllers/session/resetPassword/index.html', autoFocus: false, anonymous: true, startup: true, - controller: 'session/redeemPassword/index' + controller: 'session/resetPassword/index' }); defineRoute({ From a6dbe11d6fa97eabcfdd26bb0688db2df376f6d3 Mon Sep 17 00:00:00 2001 From: radiusgreenhill Date: Fri, 25 Sep 2020 10:35:02 +0000 Subject: [PATCH 365/582] Translated using Weblate (Thai) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/th/ --- src/strings/th.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/th.json b/src/strings/th.json index 8eff59cd82..65315b4aba 100644 --- a/src/strings/th.json +++ b/src/strings/th.json @@ -4,5 +4,11 @@ "Add": "เพิ่ม", "Actor": "นักแสดง", "AccessRestrictedTryAgainLater": "ขณะนี้การเข้าถึงถูกจำกัด โปรดลองอีกครั้งในภายหลัง", - "Absolute": "แน่นอน" + "Absolute": "แน่นอน", + "RemoveFromPlaylist": "ลบออกจากเพลย์ลิสต์", + "Playlists": "เพลย์ลิสต์", + "LabelPlaylist": "เพลย์ลิสต์:", + "HeaderAddToPlaylist": "เพิ่มไปยังเพลย์ลิสต์", + "ButtonTogglePlaylist": "เพลย์ลิสต์", + "AddToPlaylist": "เพิ่มไปยังเพลย์ลิสต์" } From 4f7021a69afbd5ed26918b8250943709d8dc9166 Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Fri, 25 Sep 2020 19:04:34 +0000 Subject: [PATCH 366/582] 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 | 146 ++++++++++++++++++++++++----------------- 1 file changed, 87 insertions(+), 59 deletions(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 5f303b1ce2..dad00f9439 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -170,8 +170,8 @@ "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.", "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.", + "DirectStreamHelp1": "El medio es compatible con el dispositivo en cuanto a resolución y tipo de medio (H.264, AC3, etc.), pero en un contenedor de archivos incompatible (mkv, avi, wmv, etc.). El video se volverá a empaquetar sobre la marcha antes de enviarse al dispositivo.", + "DirectStreamHelp2": "La transmisión directa utiliza muy poca potencia de procesamiento con una mínima pérdida de calidad de video.", "DirectStreaming": "Transmisión directa", "Director": "Director", "Directors": "Directores", @@ -215,10 +215,10 @@ "EndsAtValue": "Termina en {0}", "Episodes": "Capítulos", "ErrorAddingListingsToSchedulesDirect": "Ocurrió un error al añadir el alineamiento a tu cuenta de Schedules Direct. Schedules Direct solo permite una cantidad limitada de alineamientos por cuenta. Quizás necesites ingresar al sitio de Schedules Direct y eliminar otros alineamientos de tu cuenta antes de continuar.", - "ErrorAddingMediaPathToVirtualFolder": "Ocurrió un error al agregar la ruta de medios. Por favor, asegurate que la ruta es válida y que el proceso que sirve Jellyfin tiene acceso a esa ubicación.", + "ErrorAddingMediaPathToVirtualFolder": "Hubo un error al agregar la ruta del medio. Asegúrese de que la ruta sea válida y que Jellyfin tenga acceso a esa ubicación.", "ErrorAddingTunerDevice": "Ocurrió un error al añadir el dispositivo sintonizador. Por favor asegurate que está disponible e intenta de nuevo.", "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.", + "ErrorDeletingItem": "Se produjo un error al eliminar el elemento del servidor. Verifique que Jellyfin tenga acceso de escritura a la carpeta multimedia e intente nuevamente.", "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.", "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.", @@ -263,7 +263,7 @@ "HeaderAudioBooks": "Audiolibros", "HeaderAppearsOn": "Aparece en", "HeaderApp": "Aplicación", - "HeaderApiKeysHelp": "Se requiere que las aplicaciones externas tengan una clave de API para comunicarse con el servidor Jellyfin. Las claves se emiten iniciando sesión con una cuenta Jellyfin, u otorgando manualmente una clave a la aplicación.", + "HeaderApiKeysHelp": "Las aplicaciones externas deben tener una clave de API para comunicarse con el servidor. Las claves se emiten iniciando sesión con una cuenta de usuario normal o otorgando manualmente una clave a la aplicación.", "HeaderApiKeys": "Claves de API", "HeaderApiKey": "Contraseña API", "HeaderAllowMediaDeletionFrom": "Permitir el borrado de medios desde", @@ -307,7 +307,7 @@ "HeaderCastAndCrew": "Reparto", "HeaderCancelSeries": "Cancelar serie", "H264CrfHelp": "El Factor de velocidad constante (CRF) es la configuración de calidad predeterminada 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 correctos están entre 18 y 28. El valor predeterminado para x264 es 23, por lo que puede usar esto como punto de partida.", - "DeinterlaceMethodHelp": "Seleccione el método de desentrelazado que se usará al transcodificar contenido entrelazado.", + "DeinterlaceMethodHelp": "Seleccione el método de desentrelazado que se utilizará cuando el software transcodifique contenido entrelazado. Cuando la aceleración de hardware que admite el desentrelazado de hardware está habilitada, se utilizará el desentrelazador de hardware en lugar de esta configuración.", "HeaderExternalIds": "IDs externos:", "HeaderError": "Error", "HeaderEnabledFields": "Campos habilitados", @@ -384,7 +384,7 @@ "ItemCount": "{0} artículos", "InstantMix": "Mezcla instantánea", "InstallingPackage": "Instalando {0} (versión {1})", - "ImportFavoriteChannelsHelp": "Si está habilitado, solo se importarán los canales que estén marcados como favoritos en el dispositivo sintonizador.", + "ImportFavoriteChannelsHelp": "Solo se importarán los canales que estén marcados como favoritos en el dispositivo sintonizador.", "Images": "Imágenes", "Identify": "Identificar", "HttpsRequiresCert": "Para habilitar conexiones seguras, deberá proporcionar un certificado SSL confiable, como Let's Encrypt. Proporcione un certificado o desactive las conexiones seguras.", @@ -431,12 +431,12 @@ "HeaderSeriesStatus": "Estado de la serie", "HeaderSeriesOptions": "Opciones de serie", "HeaderSendMessage": "Enviar mensaje", - "HeaderSelectTranscodingPathHelp": "Examine o ingrese la ruta a utilizar para transcodificar archivos temporales. La carpeta debe ser grabable.", + "HeaderSelectTranscodingPathHelp": "Busque o ingrese la ruta para usar para transcodificar archivos. La carpeta debe poder escribirse.", "HeaderSelectTranscodingPath": "Seleccionar ruta temporal de transcodificación", "HeaderSelectServerCachePathHelp": "Examine o ingrese la ruta a utilizar para los archivos de caché del servidor. La carpeta debe ser grabable.", "HeaderSelectServerCachePath": "Seleccionar ruta de caché del servidor", "HeaderSelectPath": "Seleccionar ruta", - "HeaderSelectMetadataPathHelp": "Examine o ingrese la ruta en la que desea almacenar metadatos. La carpeta debe ser grabable.", + "HeaderSelectMetadataPathHelp": "Busque o ingrese la ruta que le gustaría usar para los metadatos. La carpeta debe poder escribirse.", "HeaderSelectMetadataPath": "Seleccionar ruta de metadatos", "HeaderSelectCertificatePath": "Seleccionar ruta del certificado", "HeaderSecondsValue": "{0} segundos", @@ -452,7 +452,7 @@ "HeaderRecordingPostProcessing": "Grabación posterior al procesamiento", "HeaderRecordingOptions": "Opciones de grabación", "HeaderRecentlyPlayed": "Recientemente reproducido", - "HeaderProfileServerSettingsHelp": "Estos valores controlan cómo el servidor Jellyfin se presentará al dispositivo.", + "HeaderProfileServerSettingsHelp": "Estos valores controlan cómo se presentará el servidor a los clientes.", "HeaderProfileInformation": "Información del perfil", "HeaderPreferredMetadataLanguage": "Lenguaje de metadatos preferido", "HeaderPluginInstallation": "Instalación de complementos", @@ -476,11 +476,11 @@ "HeaderDVR": "DVR", "LabelBlockContentWithTags": "Bloquear elementos con etiquetas:", "LabelBlastMessageIntervalHelp": "Determina la duración en segundos entre los mensajes explosivos vivos.", - "LabelBlastMessageInterval": "Intervalo de mensaje vivo (segundos)", + "LabelBlastMessageInterval": "Intervalo de mensajes en vivo", "LabelBitrate": "Tasa de bits:", "LabelBirthYear": "Año de nacimiento:", "LabelBirthDate": "Fecha de nacimiento:", - "LabelBindToLocalNetworkAddressHelp": "Opcional. Anule la dirección IP local para vincular el servidor http. Si se deja vacío, el servidor se vinculará a todas las direcciones disponibles. Cambiar este valor requiere reiniciar el servidor Jellyfin.", + "LabelBindToLocalNetworkAddressHelp": "Reemplace 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 reiniciar.", "LabelBindToLocalNetworkAddress": "Enlace a la dirección de red local:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Actualizar automáticamente los metadatos desde internet:", "LabelAuthProvider": "Proveedor de autenticación:", @@ -503,7 +503,7 @@ "LabelCache": "Caché:", "LabelBurnSubtitles": "Grabar subtítulos:", "LabelAudioBitDepth": "Profundidad de bits de audio:", - "LabelArtistsHelp": "Separar usando múltiples ;", + "LabelArtistsHelp": "Separe varios artistas con un punto y coma.", "LabelInNetworkSignInWithEasyPassword": "Habilitar el inicio de sesión en la red con mi código PIN fácil", "LabelImportOnlyFavoriteChannels": "Restringir a canales marcados como favoritos", "LabelImageType": "Tipo de imagen:", @@ -511,7 +511,7 @@ "LabelIdentificationFieldHelp": "Una subcadena que no distingue entre mayúsculas y minúsculas o expresión regular.", "LabelIconMaxWidth": "Ancho máximo del ícono:", "LabelIconMaxHeight": "Altura máxima del ícono:", - "LabelHttpsPortHelp": "El número de puerto TCP al que debe unirse el servidor HTTPS de Jellyfin.", + "LabelHttpsPortHelp": "El número de puerto TCP para el servidor HTTPS.", "LabelHttpsPort": "Número de puerto HTTPS local:", "LabelHomeScreenSectionValue": "Sección de la pantalla de inicio {0}:", "LabelHomeNetworkQuality": "Calidad de la red doméstica:", @@ -519,9 +519,9 @@ "LabelHardwareAccelerationType": "Aceleración por hardware:", "LabelEncoderPreset": "Preajuste de codificación H264 y H265:", "LabelH264Crf": "H264 que codifica CRF:", - "LabelGroupMoviesIntoCollectionsHelp": "Al mostrar listas de películas, las películas que pertenecen a una colección se mostrarán como un elemento agrupado.", + "LabelGroupMoviesIntoCollectionsHelp": "Al mostrar listas de películas, las películas de una colección se mostrarán como un elemento agrupado.", "LabelGroupMoviesIntoCollections": "Agrupar películas en colecciones", - "LabelServerNameHelp": "Este nombre se usará para identificar el servidor y será el nombre predeterminado de la computadora del servidor.", + "LabelServerNameHelp": "Este nombre se utilizará para identificar el servidor y será el nombre de host del servidor por defecto.", "LabelFriendlyName": "Nombre amigable:", "LabelFormat": "Formato:", "LabelForgotPasswordUsernameHelp": "Ingrese su nombre de usuario, si lo recuerda.", @@ -531,7 +531,7 @@ "LabelFailed": "Fallido", "LabelExtractChaptersDuringLibraryScanHelp": "Genere imágenes de capítulos cuando se importen videos durante el escaneo de la biblioteca. De lo contrario, se extraerán durante la tarea programada de las imágenes de los capítulos, lo que permitirá que el análisis de la biblioteca regular se complete más rápido.", "LabelExtractChaptersDuringLibraryScan": "Extraer imágenes de capítulos durante el escaneo de la biblioteca", - "LabelBaseUrlHelp": "Agrega un subdirectorio personalizado a la URL del servidor. Por ejemplo: http://ejemplo.com/<baseurl>", + "LabelBaseUrlHelp": "Agregue un subdirectorio personalizado a la URL del servidor. Por ejemplo: http://example.com/ ", "LabelBaseUrl": "URL base:", "LabelEveryXMinutes": "Cada:", "LabelEvent": "Evento:", @@ -539,19 +539,19 @@ "LabelEndDate": "Fecha final:", "LabelEnableSingleImageInDidlLimitHelp": "Algunos dispositivos no se procesarán correctamente si se incrustan varias imágenes en Didl.", "LabelEnableSingleImageInDidlLimit": "Limitar a una sola imagen incrustada", - "LabelEnableRealtimeMonitorHelp": "Los cambios en los archivos se procesarán de inmediato, en los sistemas de archivos compatibles.", + "LabelEnableRealtimeMonitorHelp": "Escuche en el puerto HTTPS configurado. También se debe proporcionar un certificado válido para que esto surta efecto.", "LabelEnableRealtimeMonitor": "Habilitar 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": "Escuche en el puerto HTTPS configurado. También se debe proporcionar un certificado válido para que esto surta efecto.", "LabelEnableHttps": "Habilitar HTTPS", "LabelEnableHardwareDecodingFor": "Habilite la decodificación por hardware para:", "LabelEnableDlnaServerHelp": "Permite a los dispositivos UPnP en su red navegar y reproducir contenido.", "LabelEnableDlnaServer": "Habilitar servidor DLNA", - "LabelEnableDlnaPlayToHelp": "Detecta dispositivos dentro de tu red y ofrece la posibilidad de controlarlos de forma remota.", + "LabelEnableDlnaPlayToHelp": "Detecte dispositivos dentro de su red y ofrezca la capacidad de controlarlos de forma remota.", "LabelEnableDlnaPlayTo": "Habilitar DLNA para reproducir", "LabelEnableDlnaDebugLoggingHelp": "Cree archivos de registro grandes y solo se deben usar según sea necesario para fines de resolución de problemas.", "LabelEnableDlnaDebugLogging": "Habilitar el registro de depuración DLNA", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duración en segundos entre las búsquedas SSDP realizadas por Jellyfin.", - "LabelEnableDlnaClientDiscoveryInterval": "Intervalo de descubrimiento del cliente (segundos)", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duración en segundos entre búsquedas SSDP.", + "LabelEnableDlnaClientDiscoveryInterval": "Intervalo de descubrimiento de clientes", "LabelEnableBlastAliveMessagesHelp": "Habilítelo si el servidor no es detectado confiablemente por otros dispositivos UPnP en su red.", "LabelEnableBlastAliveMessages": "Explosión de mensajes vivos", "LabelEnableAutomaticPortMapHelp": "Reenvíe automáticamente los puertos públicos de su enrutador a los puertos locales de su servidor a través de UPnP. Es posible que esto no funcione con algunos modelos de enrutadores o configuraciones de red. Los cambios no se aplicarán hasta después de reiniciar el servidor.", @@ -581,12 +581,12 @@ "LabelDefaultScreen": "Pantalla predeterminada:", "LabelDay": "Día:", "LabelDateTimeLocale": "Fecha hora local:", - "LabelDateAddedBehaviorHelp": "Si un valor de metadatos está presente, siempre se usará antes de cualquiera de estas opciones.", + "LabelDateAddedBehaviorHelp": "Si hay un valor de metadatos, siempre se usará antes de cualquiera de estas opciones.", "LabelDateAddedBehavior": "Comportamiento de fecha agregada para contenido nuevo:", "LabelDateAdded": "Fecha agregada:", "LabelCustomRating": "Calificación personalizada:", "LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre personalizado para mostrar o déjelo vacío para usar el nombre informado por el dispositivo.", - "LabelCustomCssHelp": "Aplique su propio estilo personalizado a la interfaz web.", + "LabelCustomCssHelp": "Aplique sus propios estilos personalizados en la interfaz web.", "LabelCustomCss": "CSS personalizado:", "LabelCustomCertificatePathHelp": "Ruta a un archivo PKCS #12 que contiene un certificado y una clave privada para habilitar el soporte TLS en un dominio personalizado.", "LabelCustomCertificatePath": "Ruta del certificado SSL personalizado:", @@ -598,11 +598,11 @@ "LabelAppNameExample": "Ejemplo: Sickbeard, Sonarr", "LabelAlbumArtMaxWidth": "Ancho máximo de la carátula del álbum:", "LabelAlbumArtMaxHeight": "Altura máxima de la carátula del álbum:", - "ImportMissingEpisodesHelp": "Si está habilitado, la información sobre capítulos faltantes se importará a su base de datos Jellyfin y se mostrará dentro de temporadas y series. Esto puede causar escaneos de bibliotecas significativamente más largos.", + "ImportMissingEpisodesHelp": "La información sobre episodios perdidos se importará a su base de datos y se mostrará dentro de las temporadas y series. Esto puede provocar exploraciones de bibliotecas significativamente más largas.", "HeaderSyncPlayEnabled": "SyncPlay habilitado", "HeaderSyncPlaySelectGroup": "Unirse a un grupo", "HeaderResponseProfileHelp": "Los perfiles de respuesta proporcionan una forma de personalizar la información enviada al dispositivo cuando se reproducen ciertos tipos de medios.", - "HeaderKodiMetadataHelp": "Para habilitar o deshabilitar metadatos NFO, edite una biblioteca en la configuración de la biblioteca Jellyfin y localice la sección de ahorradores de metadatos.", + "HeaderKodiMetadataHelp": "Para habilitar o deshabilitar metadatos NFO, edite una biblioteca y busque la sección de protectores de metadatos.", "EnableDetailsBannerHelp": "Muestra una imagen de la pancarta en la parte superior de la página de detalles del elemento.", "EnableDetailsBanner": "Detalles de la pancarta", "EnableDecodingColorDepth10Vp9": "Habilitar la decodificación por hardware de VP9 de 10-Bit", @@ -647,7 +647,7 @@ "LabelServerName": "Nombre del servidor:", "LabelServerHostHelp": "192.168.1.100:8096 o https://miservidor.com", "LabelServerHost": "Host:", - "LabelSeriesRecordingPath": "Ruta de grabación de la serie (opcional):", + "LabelSeriesRecordingPath": "Ruta de grabación de las series:", "LabelSerialNumber": "Número de serie", "LabelSendNotificationToUsers": "Enviar la notificación a:", "LabelSelectVersionToInstall": "Seleccione la versión para instalar:", @@ -661,7 +661,7 @@ "LabelScheduledTaskLastRan": "Última ejecución {0}, tomando {1}.", "LabelSaveLocalMetadataHelp": "Guardar las ilustraciones en carpetas de medios las colocará en un lugar donde puedan editarse fácilmente.", "LabelSaveLocalMetadata": "Guardar ilustraciones en carpetas de medios", - "LabelRuntimeMinutes": "Tiempo de ejecución (minutos):", + "LabelRuntimeMinutes": "Tiempo de ejecución:", "LabelRequireHttps": "Requerir HTTPS", "LabelRemoteClientBitrateLimit": "Límite de velocidad de transmisión en Internet (Mbps):", "LabelReleaseDate": "Fecha de lanzamiento:", @@ -707,8 +707,8 @@ "LabelOverview": "Visión general:", "LabelOriginalTitle": "Título original:", "LabelOriginalAspectRatio": "Relación de aspecto original:", - "LabelOptionalNetworkPathHelp": "Si esta carpeta se comparte en su red, el suministro de la ruta compartida de la red puede permitir que las aplicaciones Jellyfin en otros dispositivos accedan directamente a los archivos multimedia. Por ejemplo, {0} o {1}.", - "LabelOptionalNetworkPath": "(Opcional) Carpeta de red compartida:", + "LabelOptionalNetworkPathHelp": "Si esta carpeta se comparte en su red, proporcionar la ruta del recurso compartido de red puede permitir que los clientes de otros dispositivos accedan directamente a los archivos multimedia. Por ejemplo, {0} o {1}.", + "LabelOptionalNetworkPath": "Carpeta de red compartida:", "LabelNumberOfGuideDaysHelp": "La descarga de datos de la guía por más días proporciona la capacidad de programar con mayor anticipación y ver más listados, pero también tomará más tiempo descargarlos. Auto elegirá en función de la cantidad de canales.", "LabelNumberOfGuideDays": "Número de días de datos de guía para descargar:", "LabelNumber": "Número:", @@ -720,9 +720,9 @@ "LabelStable": "Estable", "LabelChromecastVersion": "Versión de Chromecast", "LabelName": "Nombre:", - "LabelMusicStreamingTranscodingBitrateHelp": "Especifique una tasa de bits máxima cuando transmita música.", + "LabelMusicStreamingTranscodingBitrateHelp": "Especifique una tasa de bits máxima al transmitir música.", "LabelMusicStreamingTranscodingBitrate": "Velocidad de bits de transcodificación de música:", - "LabelMovieRecordingPath": "Ruta de grabación de películas (opcional):", + "LabelMovieRecordingPath": "Ruta de grabación de películas:", "LabelMoviePrefixHelp": "Si se aplica un prefijo a los títulos de las películas, ingréselo aquí para que el servidor pueda manejarlo correctamente.", "LabelMoviePrefix": "Prefijo de película:", "LabelMovieCategories": "Categorías de películas:", @@ -738,7 +738,7 @@ "LabelMinResumeDuration": "Duración mínima de la reanudación:", "LabelMinBackdropDownloadWidth": "Ancho mínimo de descarga de fondo:", "LabelMethod": "Método:", - "LabelMetadataSaversHelp": "Elija los formatos de archivo para guardar sus metadatos.", + "LabelMetadataSaversHelp": "Elija los formatos de archivo que utilizará al guardar sus metadatos.", "LabelMetadataSavers": "Ahorradores de metadatos:", "LabelMetadataReadersHelp": "Clasifique sus fuentes de metadatos locales preferidas en orden de prioridad. Se leerá el primer archivo encontrado.", "LabelMetadataReaders": "Lectores de metadatos:", @@ -762,12 +762,12 @@ "LabelLogs": "Registros:", "LabelLoginDisclaimerHelp": "Un mensaje que se mostrará en la parte inferior de la página de inicio de sesión.", "LabelLockItemToPreventChanges": "Bloquee este elemento para evitar futuros cambios", - "LabelLocalHttpServerPortNumberHelp": "El número de puerto TCP al que debe unirse al servidor Jellyfin mediante HTTP.", + "LabelLocalHttpServerPortNumberHelp": "El número de puerto TCP para el servidor HTTP.", "LabelLocalHttpServerPortNumber": "Número de puerto HTTP local:", "LabelLibraryPageSize": "Tamaño de página de la biblioteca:", "LabelLanguage": "Idioma:", "LabelLanNetworks": "Redes LAN:", - "OptionAutomaticallyGroupSeriesHelp": "Si está habilitado, las series que se distribuyen en varias carpetas dentro de esta biblioteca se fusionarán automáticamente en una sola serie.", + "OptionAutomaticallyGroupSeriesHelp": "Las series que están distribuidas en varias carpetas dentro de esta biblioteca se fusionarán automáticamente en una sola serie.", "OptionAutomaticallyGroupSeries": "Combinar automáticamente series que se extienden a través de múltiples carpetas", "OptionAllowVideoPlaybackTranscoding": "Permitir reproducción de video que requiere transcodificación", "OptionAllowVideoPlaybackRemuxing": "Permitir reproducción de video que requiere conversión sin volver a codificar", @@ -776,7 +776,7 @@ "OptionAllowRemoteSharedDevicesHelp": "Los dispositivos DLNA se consideran compartidos hasta que un usuario comienza a controlarlos.", "OptionAllowRemoteSharedDevices": "Permitir el control remoto de dispositivos compartidos", "OptionAllowRemoteControlOthers": "Permitir el control remoto de otros usuarios", - "OptionAllowMediaPlaybackTranscodingHelp": "Restringir el acceso a la transcodificación puede causar fallas de reproducción en las aplicaciones Jellyfin debido a formatos de medios no compatibles.", + "OptionAllowMediaPlaybackTranscodingHelp": "Restringir el acceso a la transcodificación puede causar fallas de reproducción en los clientes debido a formatos de medios no admitidos.", "OptionAllowMediaPlayback": "Permitir reproducción de medios", "OptionAllowManageLiveTv": "Permitir la administración de grabaciones de TV en vivo", "OptionAllowLinkSharingHelp": "Solo se comparten páginas web que contienen información de medios. Los archivos multimedia nunca se comparten públicamente. Las acciones tienen un límite de tiempo y caducarán después de {0} días.", @@ -826,7 +826,7 @@ "Mobile": "Móvil", "MinutesBefore": "minutos antes", "MinutesAfter": "minutos después", - "MetadataSettingChangeHelp": "Cambiar la configuración de metadatos afectará el contenido nuevo que se agrega en el futuro. Para actualizar el contenido existente, abra la pantalla de detalles y haga clic en el botón actualizar, o realice actualizaciones masivas utilizando el administrador de metadatos.", + "MetadataSettingChangeHelp": "Cambiar la configuración de metadatos afectará el contenido nuevo agregado en el futuro. Para actualizar el contenido existente, abra la pantalla de detalles y haga clic en el botón Actualizar, o realice actualizaciones masivas usando el administrador de metadatos.", "MetadataManager": "Administrador de metadatos", "Metadata": "Metadatos", "MessageSyncPlayErrorMedia": "¡Error al habilitar SyncPlay! Error de medios.", @@ -839,7 +839,7 @@ "MessageSyncPlayGroupDoesNotExist": "No se pudo unir al grupo porque no existe.", "MessageSyncPlayPlaybackPermissionRequired": "Se requiere permiso de reproducción.", "MessageSyncPlayNoGroupsAvailable": "No hay grupos disponibles. Comienza a reproducir algo primero.", - "MessageSyncPlayGroupWait": "{0} está almacenando...", + "MessageSyncPlayGroupWait": "{0} se está almacenando en búfer…", "MessageSyncPlayUserLeft": "{0} ha abandonado el grupo.", "MessageSyncPlayUserJoined": "{0} se ha unido al grupo.", "MessageSyncPlayDisabled": "SyncPlay deshabilitado.", @@ -849,7 +849,7 @@ "MessageUnableToConnectToServer": "No podemos conectarnos al servidor seleccionado en este momento. Asegúrese de que se esté ejecutando e intente nuevamente.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Las siguientes ubicaciones de medios se eliminarán de su biblioteca:", "MessageReenableUser": "Ver abajo para volver a habilitar", - "MessagePluginInstallDisclaimer": "Los complementos creados por miembros de la comunidad Jellyfin son una excelente manera de mejorar su experiencia Jellyfin con características y beneficios adicionales. Antes de la instalación, tenga en cuenta los efectos que pueden tener en su servidor Jellyfin, como escaneos de bibliotecas más largos, procesamiento en segundo plano adicional y disminución de la estabilidad del sistema.", + "MessagePluginInstallDisclaimer": "Los complementos creados por miembros de la comunidad son una excelente manera de mejorar su experiencia con características y beneficios adicionales. Antes de instalar, tenga en cuenta los efectos que pueden tener en su servidor, como análisis de bibliotecas más prolongados, procesamiento en segundo plano adicional y disminución de la estabilidad del sistema.", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento, inicie sesión directamente en su servidor local.", "MessagePleaseWait": "Por favor espere. Esto puede tardar un minuto.", "MessagePleaseEnsureInternetMetadata": "Asegúrese de que la descarga de metadatos de Internet esté habilitada.", @@ -883,13 +883,13 @@ "MessageEnablingOptionLongerScans": "Habilitar esta opción puede resultar en escaneos de biblioteca significativamente más largos.", "MessageDownloadQueued": "Descarga en cola.", "MessageDirectoryPickerLinuxInstruction": "Para Linux en Arch Linux, CentOS, Debian, Fedora, openSUSE o Ubuntu, debe otorgar al usuario del servicio al menos acceso de lectura a sus ubicaciones de almacenamiento.", - "MessageDirectoryPickerBSDInstruction": "Para BSD, es posible que deba configurar el almacenamiento dentro de su jaula (Jail) FreeNAS para permitir que Jellyfin acceda a él.", + "MessageDirectoryPickerBSDInstruction": "Para BSD, es posible que deba configurar el almacenamiento dentro de su jaula de FreeNAS para que Jellyfin pueda acceder a sus medios.", "MessageDeleteTaskTrigger": "¿Estás seguro de que desea eliminar este activador de tarea?", "MessageCreateAccountAt": "Cree una cuenta en {0}", "MessageContactAdminToResetPassword": "Póngase en contacto con el administrador del sistema para restablecer su contraseña.", "MessageConfirmShutdown": "¿Está seguro de que desea apagar el servidor?", - "MessageConfirmRevokeApiKey": "¿Está seguro de que desea revocar esta clave de API? La conexión de la aplicación al servidor Jellyfin se cerrará abruptamente.", - "MessageConfirmRestart": "¿Está seguro de que desea reiniciar el servidor Jellyfin?", + "MessageConfirmRevokeApiKey": "¿Está seguro de que desea revocar esta clave de API? La conexión de la aplicación a este servidor se interrumpirá abruptamente.", + "MessageConfirmRestart": "¿Estás seguro de que deseas reiniciar Jellyfin?", "MessageConfirmRemoveMediaLocation": "¿Estás seguro de que deseas eliminar esta ubicación?", "MessageConfirmRecordingCancellation": "¿Cancelar grabación?", "MessageConfirmProfileDeletion": "¿Estás seguro de que deseas eliminar este perfil?", @@ -938,7 +938,7 @@ "LearnHowYouCanContribute": "Aprende cómo puedes contribuir.", "LatestFromLibrary": "Últimos {0}", "Large": "Grande", - "LabelffmpegPathHelp": "La ruta al archivo de la aplicación ffmpeg o la carpeta que contiene ffmpeg.", + "LabelffmpegPathHelp": "La ruta al archivo o carpeta de la aplicación ffmpeg que contiene ffmpeg.", "LabelffmpegPath": "Ruta de FFmpeg:", "LabelZipCode": "Código postal:", "LabelYear": "Año:", @@ -1000,12 +1000,12 @@ "OptionEnableAccessFromAllDevices": "Habilite el acceso desde todos los dispositivos", "OptionEmbedSubtitles": "Incrustar dentro del contenedor", "OptionDvd": "DVD", - "OptionDownloadImagesInAdvanceHelp": "Por defecto, la mayoría de las imágenes solo se descargan cuando lo solicita una aplicación Jellyfin. Active esta opción para descargar todas las imágenes de antemano, ya que se importan nuevos medios. Esto puede causar escaneos de biblioteca significativamente más largos.", + "OptionDownloadImagesInAdvanceHelp": "De forma predeterminada, la mayoría de las imágenes solo se descargan cuando lo solicita un cliente. Habilite esta opción para descargar todas las imágenes por adelantado, ya que se importan nuevos medios. Esto puede provocar exploraciones de bibliotecas significativamente más largas.", "OptionDownloadImagesInAdvance": "Descargar imágenes por adelantado", "OptionDisplayFolderViewHelp": "Mostrar carpetas junto con sus otras bibliotecas de medios. Esto puede ser útil si desea tener una vista de carpeta simple.", "OptionDisplayFolderView": "Mostrar una vista de carpeta para mostrar carpetas de medios simples", "OptionDislikes": "No me gustas", - "OptionDisableUserHelp": "Si está deshabilitado, el servidor no permitirá ninguna conexión de este usuario. Las conexiones existentes se terminarán abruptamente.", + "OptionDisableUserHelp": "El servidor no permitirá ninguna conexión de este usuario. Las conexiones existentes terminarán abruptamente.", "OptionDisableUser": "Deshabilitar este usuario", "OptionDatePlayed": "Fecha de reproducción", "OptionDateAddedImportTime": "Use la fecha escaneada en la biblioteca", @@ -1050,7 +1050,7 @@ "ReleaseDate": "Fecha de lanzamiento", "RefreshQueued": "Actualizar cola.", "RefreshMetadata": "Actualizar metadatos", - "RefreshDialogHelp": "Los metadatos se actualizan en función de la configuración y los servicios de Internet que están habilitados en el panel del servidor Jellyfin.", + "RefreshDialogHelp": "Los metadatos se actualizan en función de la configuración y los servicios de Internet que están habilitados en el panel.", "Refresh": "Actualizar", "Recordings": "Grabaciones", "RecordingScheduled": "Grabación programada.", @@ -1077,9 +1077,9 @@ "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", - "MessagePluginInstalled": "El complemento se ha instalado correctamente. El servidor Jellyfin deberá reiniciarse para que los cambios surtan efecto.", + "MessagePluginInstalled": "El complemento se ha instalado correctamente. Será necesario reiniciar el servidor para que los cambios surtan efecto.", "PleaseSelectTwoItems": "Seleccione al menos dos elementos.", - "PleaseRestartServerName": "Reinicie el servidor Jellyfin - {0}.", + "PleaseRestartServerName": "Por favor reinicie el servidor Jellyfin en {0}.", "PleaseEnterNameOrId": "Por favor, introduzca un nombre o una ID externa.", "PleaseConfirmPluginInstallation": "Haga clic en Aceptar para confirmar que ha leído lo anterior y desea continuar con la instalación del complemento.", "PleaseAddAtLeastOneFolder": "Agregue al menos una carpeta a esta biblioteca haciendo clic en el botón Agregar.", @@ -1100,7 +1100,7 @@ "PerfectMatch": "Combinación perfecta", "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", + "PasswordResetProviderHelp": "Elija un proveedor de restablecimiento de contraseña que se utilizará cuando este usuario solicite un restablecimiento de 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.", @@ -1117,7 +1117,7 @@ "OptionTrackName": "Nombre de la pista", "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.", + "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 los guarde.", "OptionSaveMetadataAsHidden": "Guardar metadatos e imágenes como archivos ocultos", "OptionResumable": "Reanudable", "OptionResElement": "elemento res", @@ -1132,9 +1132,9 @@ "OptionProtocolHls": "Transmisión en vivo HTTP", "OptionPremiereDate": "Fecha de estreno", "OptionPlayCount": "Cuento de reproducciones", - "OptionPlainVideoItemsHelp": "Si está habilitado, todos los videos se representan en DIDL como \"object.item.videoItem\" en lugar de un tipo más específico, como \"object.item.videoItem.movie\".", + "OptionPlainVideoItemsHelp": "Todos los videos se representan 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": "Si está habilitado, todas las carpetas se representan en DIDL como \"object.container.storageFolder\" en lugar de un tipo más específico, como \"object.container.person.musicArtist\".", + "OptionPlainStorageFoldersHelp": "Todas las carpetas se representan 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 sin formato", "OptionParentalRating": "Calificación parental", "OptionOnInterval": "En un intervalo", @@ -1146,7 +1146,7 @@ "OptionIsSD": "SD", "OptionIsHD": "HD", "OptionImdbRating": "Calificación de IMDb", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "Si está habilitado, estas solicitudes serán atendidas pero ignorarán el encabezado del rango de bytes.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Estas solicitudes se aceptarán pero ignorarán el encabezado del rango de bytes.", "OptionIgnoreTranscodeByteRangeRequests": "Ignorar las solicitudes de rango de bytes de transcodificación", "OptionHlsSegmentedSubtitles": "Subtítulos segmentados HLS", "OptionHideUserFromLoginHelp": "Útil para cuentas de administrador privadas u ocultas. El usuario deberá iniciar sesión manualmente ingresando su nombre de usuario y contraseña.", @@ -1183,7 +1183,7 @@ "LastSeen": "Visto por última vez {0}", "PersonRole": "como {0}", "ListPaging": "{0}-{1} de {2}", - "WriteAccessRequired": "El servidor Jellyfin requiere acceso de escritura a esta carpeta. Asegúrese del acceso de escritura e intente nuevamente.", + "WriteAccessRequired": "Jellyfin requiere acceso de escritura a esta carpeta. Asegúrese de tener acceso de escritura y vuelva a intentarlo.", "PathNotFound": "La ruta no se pudo encontrar. Asegúrese de que la ruta sea válida e intente nuevamente.", "Yes": "Sí", "Yadif": "YADIF", @@ -1308,10 +1308,10 @@ "SettingsWarning": "Cambiar estos valores puede causar inestabilidad o fallas de conectividad. Si tiene algún problema, le recomendamos cambiarlos a los valores predeterminados.", "SettingsSaved": "Configuraciones guardadas.", "Settings": "Configuraciones", - "ServerUpdateNeeded": "Este servidor Jellyfin necesita ser actualizado. Para descargar la última versión, visite {0}", - "ServerRestartNeededAfterPluginInstall": "El servidor Jellyfin deberá reiniciarse después de instalar un complemento.", - "ServerNameIsShuttingDown": "Servidor Jellyfin: {0} se está cerrando.", - "ServerNameIsRestarting": "Servidor Jellyfin: {0} se está reiniciando.", + "ServerUpdateNeeded": "Este servidor debe actualizarse. Para descargar la última versión, visite {0}", + "ServerRestartNeededAfterPluginInstall": "Jellyfin deberá 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} - Presente", "SeriesSettings": "Configuraciones de la serie", "SeriesRecordingScheduled": "Grabación de la serie programada.", @@ -1390,5 +1390,33 @@ "MediaInfoColorTransfer": "Transferencia de color", "MediaInfoColorSpace": "Espacio de color", "MediaInfoVideoRange": "Rango de video", - "LabelKnownProxies": "Proxies conocidos:" + "LabelKnownProxies": "Proxies conocidos:", + "LabelMaxMuxingQueueSizeHelp": "Número máximo de paquetes que se pueden almacenar en búfer mientras se espera que se inicialicen todos los flujos. Intente aumentarlo si todavía encuentra el error \"Demasiados paquetes almacenados en búfer para el flujo de salida\" en los registros de ffmpeg. El valor recomendado es 2048.", + "LabelMaxMuxingQueueSize": "Tamaño máximo de la cola de muxing:", + "LabelTonemappingParamHelp": "Sintonice el algoritmo de mapeo de tonos. Los valores recomendados y predeterminados son NaN. Generalmente déjelo en blanco.", + "LabelTonemappingPeakHelp": "Anule la señal/nominal/pico de referencia con este valor. Útil cuando la información de picos incrustada en los metadatos de visualización no es confiable o cuando el mapeo de tonos de un rango más bajo a un rango más alto. Los valores recomendados y predeterminados son 0.", + "LabelTonemappingThresholdHelp": "Los parámetros del algoritmo de mapeo de tonos se ajustan con precisión para cada escena. Y se usa un umbral para detectar si la escena ha cambiado o no. Si la distancia entre el brillo promedio del cuadro actual y el promedio actual excede un valor de umbral, volveríamos a calcular el brillo promedio y pico de la escena. Los valores recomendados y predeterminados son 0.8 y 0.2.", + "LabelTonemappingDesatHelp": "Aplique desaturación para reflejos que superen este nivel de brillo. Cuanto mayor sea el parámetro, más información de color se conservará. Esta configuración ayuda a evitar colores apagados de forma no natural para las altas luces, convirtiéndose (suavemente) en blanco. Esto hace que las imágenes se sientan más naturales, a costa de reducir la información sobre colores fuera de rango. Los valores recomendados y predeterminados son 0 y 0,5.", + "LabelTonemappingDesat": "Desaturación del mapa de tonos:", + "TonemappingRangeHelp": "Seleccione la gama de colores de salida. Auto es el mismo que el rango de entrada.", + "TonemappingAlgorithmHelp": "El mapeo de tonos se puede ajustar con precisión. Si no está familiarizado con estas opciones, mantenga las predeterminadas. El valor recomendado es Reinhard.", + "AllowTonemappingHelp": "El mapeo de tonos puede transformar el rango dinámico de un video de HDR a SDR mientras mantiene los detalles y colores de la imagen, que son información muy importante para representar la escena original. Actualmente solo funciona cuando se transcodifican videos con metadatos HDR10 o HLG integrados. Si la reproducción no es fluida o falla, considere apagar el decodificador de hardware correspondiente.", + "QuickConnectNotActive": "La conexión rápida no está activa en este servidor", + "QuickConnectNotAvailable": "Pida al administrador del servidor que habilite la conexión rápida", + "QuickConnectInvalidCode": "Código de conexión rápida no válido", + "QuickConnectDescription": "Para iniciar sesión con conexión rápida, seleccione el botón Conexión rápida en el dispositivo desde el que está iniciando sesión e ingrese el código que se muestra a continuación.", + "QuickConnectDeactivated": "La conexión rápida se desactivó antes de que se pudiera aprobar la solicitud de inicio de sesión", + "QuickConnectAuthorizeFail": "Código de conexión rápida desconocido", + "QuickConnectAuthorizeSuccess": "Solicitud autorizada", + "QuickConnectAuthorizeCode": "Ingrese el código {0} para iniciar sesión", + "QuickConnectActivationSuccessful": "Activado con éxito", + "QuickConnect": "Conexión rápida", + "LabelQuickConnectCode": "Código de conexión rápida:", + "LabelCurrentStatus": "Estado actual:", + "KnownProxiesHelp": "Lista separada por comas de direcciones IP de proxies conocidos que se utilizan al conectarse a su instancia de Jellyfin. Esto es necesario para hacer un uso adecuado de los encabezados X-Fordered-For. Requiere reiniciar después de guardar.", + "EnableQuickConnect": "Habilitar la conexión rápida en este servidor", + "EnableAutoCast": "Establecer por defecto", + "ButtonUseQuickConnect": "Utilizar conexión rápida", + "ButtonActivate": "Activar", + "Authorize": "Autorizar" } From 51ef5ff20667998cf3907338318f9f7cc708f64a Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 19:21:47 +0000 Subject: [PATCH 367/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 93 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 84 insertions(+), 9 deletions(-) diff --git a/src/strings/af.json b/src/strings/af.json index 85c9c817c3..0de72527bb 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -1,21 +1,21 @@ { "Auto": "Outo", - "AuthProviderHelp": "Kies 'n Authentication Provider vir die egtheid van gebruiker se wagwoord.", + "AuthProviderHelp": "Kies 'n sekuriteitsverskaffer om hierdie gebruiker se wagvoor te bevestig.", "Audio": "Klank", - "AspectRatio": "Aspek verhouding", + "AspectRatio": "Aspek-verhouding", "Ascending": "Boontoe", "AsManyAsPossible": "So veel moontlik", "Artists": "Kunstenare", "Art": "Kuns", - "AroundTime": "Omtrent {0}", + "AroundTime": "Ongeveer", "Anytime": "Enige tyd", - "AnyLanguage": "Enige taal", + "AnyLanguage": "Enige Taal", "AlwaysPlaySubtitlesHelp": "Subtitels wat ooreenstem met taal voorkeur sal gelaai work ongeag oudio taal.", - "AlwaysPlaySubtitles": "Subtitels word altyd toegelaat", + "AlwaysPlaySubtitles": "Speel Altyd", "AllowedRemoteAddressesHelp": "Komma skeiding lys van IP adresse of IP/netmask toegange van netwerke wat toegelaat word vir afgeleë konneksies. As die leeg gelos sal enige afgeleë konneksies toegelaat word.", "AllowRemoteAccessHelp": "As afgetik, alle afgeleë verbinding sal geblokkeer word.", - "AllowRemoteAccess": "Toelating tot afgeleë verbinding na hierdie Jellyfin bediener.", - "AllowOnTheFlySubtitleExtractionHelp": "Ingebedde ondertitels kan uitgepak word uit videos en bedien word na kliënte in eenvoudige teks om transkodeering van video te verlig. Op sekere sisteme kan die langer vat en video terugspeel vertraag deur die ekstraksie metode. Deaktiveer die opsie om ingebedde ondertitels in video te heg tydens transkodeer vir die gebruik van eie kliënt toestel.", + "AllowRemoteAccess": "Laat eksterne konneksies toe na hierdie lêerbediener.", + "AllowOnTheFlySubtitleExtractionHelp": "Ingebedde onderskrifte kan onttrek word uit videos en bedien word aan kliënte in eenvoudige teks om transkodeering van video te verminder. Op sekere stelsels kan dit langer vat en die terugspeel van video vertraag. Deaktiveer die opsie om ingebedde onderskrifte in video te heg tydens transkodering vir die gebruik van eie kliënt-toestelle.", "AllowOnTheFlySubtitleExtraction": "Laat toe die onmiddellike ondertitel ekstraksie", "AllowMediaConversionHelp": "Gee of weier toegang to die media omskepping funksie.", "AllowMediaConversion": "Laat media omsitting toe", @@ -23,7 +23,7 @@ "AllLibraries": "Alle biblioteke", "AllLanguages": "Alle tale", "AllEpisodes": "Alle episodes", - "AllComplexFormats": "Alle ingewikkelde formate (ASS, SSA, VOBSUB, PGS, SUB/IDX, ens.)", + "AllComplexFormats": "Alle Ingewikkelde Formate (ASS, SSA, VOBSUB, PGS, SUB, IDX, ens.)", "AllChannels": "Alle kanale", "All": "Als", "Alerts": "Waarskuwings", @@ -132,5 +132,80 @@ "TabNetworking": "Netwerking", "TabNetworks": "Netwerke", "TabMusic": "Musiek", - "TabLogs": "Logs" + "TabLogs": "Logs", + "Channels": "Kanale", + "ChannelNumber": "Kanaal nommer", + "ChannelNameOnly": "Slegs Kanaal {0}", + "ChannelAccessHelp": "Kies die kanale om met hierdie verbruiker te deel. Administrateurs sal alle kanale kan wysig met die metadata bestuurder.", + "ChangingMetadataImageSettingsNewContent": "Veranderinge tot metadate of kuns aflaai verstellings sal slegs van toepassing wees op nuwe inhoud wat in die versameling gevoeg word. Om veranderinge toe te pas op bestaande titels sal u titels se metadata individueel moet vervris.", + "Categories": "Kategorieë", + "CancelSeries": "Kanselleer reeks", + "CancelRecording": "Kanselleer opname", + "ButtonWebsite": "Webtuiste", + "ButtonUseQuickConnect": "Gebruik Vinnige Konneksie", + "ButtonUninstall": "Verwyder", + "ButtonTrailer": "Voorskou", + "ButtonTogglePlaylist": "Snitlys", + "ButtonSubmit": "Dien In", + "ButtonSplit": "Verdeel", + "ButtonStop": "Stop", + "ButtonStart": "Begin", + "ButtonSignOut": "Skakel Uit", + "ButtonSignIn": "Skakel In", + "ButtonShutdown": "Skakel Af", + "ButtonSend": "Stuur", + "ButtonSelectView": "Kies uitsig", + "ButtonScanAllLibraries": "Skandeer Alle Versamelings", + "ButtonRevoke": "Herroep", + "ButtonResume": "Hervat", + "ButtonResetEasyPassword": "Herstel maklike PIN kode", + "ButtonRename": "Herbenoem", + "ButtonRemove": "Verwyder", + "ButtonRefreshGuideData": "Vervris Gids Data", + "ButtonQuickStartGuide": "Vinnige Begin Gids", + "ButtonPreviousTrack": "Vorige Snit", + "ButtonPause": "Staak", + "ButtonParentalControl": "Ouerbeheer", + "ButtonOpen": "Maak Oop", + "ButtonOk": "Regso", + "ButtonNextTrack": "Volgende Snit", + "ButtonNetwork": "Netwerk", + "ButtonMore": "Meer", + "ButtonManualLogin": "Handmatige Inteken", + "ButtonLibraryAccess": "Versameling toegang", + "ButtonInfo": "Inligting", + "ButtonGotIt": "Het Dit So", + "ButtonFullscreen": "Volskerm", + "ButtonForgotPassword": "Vergete Wagwoord", + "ButtonEditOtherUserPreferences": "Wysig die verbruiker se profiel, foto en persoonlike voorkeure.", + "ButtonCancel": "Kanselleer", + "ButtonBack": "Terug", + "ButtonAudioTracks": "Klankbane", + "ButtonArrowRight": "Regs", + "ButtonArrowLeft": "Links", + "ButtonAddUser": "Voeg Verbruiker", + "ButtonAddScheduledTaskTrigger": "Voeg Sneller", + "ButtonAddMediaLibrary": "Voeg Media Versameling", + "ButtonAddImage": "Voeg Beeld", + "ButtonActivate": "Aktiveer", + "MessageBrowsePluginCatalog": "Blaai deur ons inprop-sagteware versameling om beskikbare inprop-sagteware te sien.", + "Browse": "Blaai Deur", + "BoxRear": "Boks (agterkant)", + "BoxSet": "Boksstel", + "Box": "Boks", + "Books": "Boeke", + "BookLibraryHelp": "Klank- en Skriftelike boeke word ondersteun. Hersien die {0} boek benamingsgids {1}.", + "Blacklist": "Swartlys", + "BirthPlaceValue": "Geboorteplek: {0}", + "BirthLocation": "Geboorteplek", + "BirthDateValue": "Gebore: {0}", + "Banner": "Banier", + "Backdrops": "Agtergronde", + "Backdrop": "Agtergrond", + "Authorize": "Magtig", + "AskAdminToCreateLibrary": "Vra 'n administrateur om 'n versameling te skep.", + "Artist": "Kunstenaar", + "AllowFfmpegThrottlingHelp": "Wanneer 'n transkodering of remux ver genoeg voor die huidige terugspeel posisie is, vertraag die proses sodat dit minder hulpbronne verbruik. Hierdie is meer gebruiklik wanneer daar nie gereeld gesoek word tydens die kyk van video nie. Skakel hierdie af as u terugspeel probleme ervaar.", + "AllowFfmpegThrottling": "Smoorklep Transkoderings", + "Album": "Album" } From eadca28e965ae918ddaa88049d21e7466e1c527d Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 19:54:57 +0000 Subject: [PATCH 368/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/strings/af.json b/src/strings/af.json index 0de72527bb..afb0983eef 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -56,7 +56,7 @@ "LastSeen": "Laas gekyk {0}", "PersonRole": "soos {0}", "ListPaging": "{0}-{1} van {2}", - "WriteAccessRequired": "Jellyfin Bediener benodig skryf toegang tot die leêr. Maak asseblief seker dat dit skryf toegang het en probeer weer.", + "WriteAccessRequired": "Jellyfin benodig skryf toegang tot die leêr. Maak asseblief seker dat dit skryf toegang het en probeer weer.", "PathNotFound": "Die pad kon nie gevind word nie. Maak asseblief seker dat die pad geldig is en probeer weer.", "Yesterday": "Gister", "Yes": "Ja", @@ -67,7 +67,7 @@ "XmlTvKidsCategoriesHelp": "Programme met die kategorieë sal vertoon word as programme vir kinders. Verdeel met veelvuldige '|'.", "XmlDocumentAttributeListHelp": "Hierdie kenmerke word toegepas tot die wortel element van elke XML reaksie.", "Writer": "Skrywer", - "WizardCompleted": "Dit is al wat ons benodig vir nou. Jellyfin het begin om inligting van jou media biblioteek te versamel. Kyk na van ons apps, en dan klik Finaliseer om die Paneelbord.", + "WizardCompleted": "Dit is al wat ons benodig vir nou. Jellyfin het begin om inligting van jou media biblioteek te versamel. Kyk na van ons toeps, en klik dan Finaliseer om die Paneelbord te verkry.", "Whitelist": "Witlys", "WelcomeToProject": "Welkom tot Jellyfin!", "Wednesday": "Woensdag", @@ -207,5 +207,8 @@ "Artist": "Kunstenaar", "AllowFfmpegThrottlingHelp": "Wanneer 'n transkodering of remux ver genoeg voor die huidige terugspeel posisie is, vertraag die proses sodat dit minder hulpbronne verbruik. Hierdie is meer gebruiklik wanneer daar nie gereeld gesoek word tydens die kyk van video nie. Skakel hierdie af as u terugspeel probleme ervaar.", "AllowFfmpegThrottling": "Smoorklep Transkoderings", - "Album": "Album" + "Album": "Album", + "HeaderAlbumArtists": "Album Kunstenaars", + "Genres": "Genres", + "Favorites": "Gunstellinge" } From 478dd44d8eefbd27cbe8bff9be0025f78e6696db Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 19:57:20 +0000 Subject: [PATCH 369/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 118 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 117 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index afb0983eef..598bdcac31 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -210,5 +210,121 @@ "Album": "Album", "HeaderAlbumArtists": "Album Kunstenaars", "Genres": "Genres", - "Favorites": "Gunstellinge" + "Favorites": "Gunstellinge", + "ExtraLarge": "Ekstra Groot", + "ExitFullscreen": "Verlaat volskerm", + "EveryNDays": "Elke {0} dae", + "ErrorSavingTvProvider": "Daar was 'n fout met die berging van die TV-verskaffer. Maak asseblief seker dat dit beskikbaar is en probeer weer.", + "ErrorPleaseSelectLineup": "Kies asseblief 'n gids en probeer weer. As geen gids beskikbaar is nie, maak asseblief seker dat u verbruikersnaam, sleutelwoord en poskode korrek is.", + "ErrorStartHourGreaterThanEnd": "Eindetyd moet later wees as die begintyd.", + "ErrorGettingTvLineups": "Daar was 'n fout met die aflaai van die TV gids. Maak asseblief serker u inligting is korrek en probeer weer.", + "ErrorDeletingItem": "Daar was 'n fout met die uitveë van die item van die bediener af. Maak asseblief seker dat Jellyfin skryf-toegang het tot die media gidslêer en probeer weer.", + "ErrorAddingXmlTvFile": "Daar was 'n fout in die toegang tot die XMLTV lêer. Maak asseblief seker dat die lêer bestaan en probeer weer.", + "ErrorAddingTunerDevice": "Daar was 'n fout met die toevoeg van die inteken-toestel. Maak asb seker dat dit toeganklik is en probeer weer.", + "ErrorAddingMediaPathToVirtualFolder": "Daar was 'n fout in die toevoeg van die media bergingsplek. Maak asb seker dat die gemelde bergingsplek korrek is en dat Jellyfin toegang het tot daardie bergingsplek.", + "ErrorAddingListingsToSchedulesDirect": "Daar was 'n fout in die toevoeg van die lys tot u Schedules Direct rekening. Schedules Direct laat slegs 'n beperkde hoeveelheid lyste per rekening toe. U mag dit nodig vind om in te skakel op die Schedules Direct webtuiste om sekere lyste te verwyder van u rekening alvorens u kan voortgaan.", + "Episodes": "Episodes", + "Episode": "Episode", + "EndsAtValue": "Eindig om {0}", + "Ended": "Geëindig", + "EnableDetailsBannerHelp": "Wys 'n banier-beeld bo aan die item besonderhede blad.", + "EnableDetailsBanner": "Besonderhede Banier", + "EnableThemeVideosHelp": "Speel tema-videos in die agtergrond terwyl deur die versameling geblaai word.", + "EnableThemeSongsHelp": "Speel tema-liedjies in die agtergrond terwyl daur die versameling geblaai word.", + "EnableStreamLoopingHelp": "Aktiveer hierdie as die lewendige stroom net 'n paar sekondes data bevat en gereeld versoek moet word. Om hierdie te aktiveer wanneer dit nie nodig is nie kan probleme veroorsaak.", + "EnableStreamLooping": "Auto-lus lewendige strome", + "EnableQuickConnect": "Aktiveer vinnige-inskakel op hierdie bediener", + "EnablePhotosHelp": "Beelde sal opgetel en gewys word saam met ander media leêrs.", + "EnablePhotos": "Wys fotos", + "EnableNextVideoInfoOverlayHelp": "Aan die einde van 'n video, wys inligting oor die volgende video op die snitlys.", + "EnableNextVideoInfoOverlay": "Wys volgende video se inligting tydens terugspeel", + "EnableHardwareEncoding": "Aktiveer hardeware enkodering", + "EnableExternalVideoPlayersHelp": "'n Eksterne speler spyskaart sal gewys word wanneer video terugspeel begin.", + "EnableExternalVideoPlayers": "Eksterne videospelers", + "EnableDisplayMirroring": "Beeld weerspieëling", + "EnableDecodingColorDepth10Vp9": "Aktiveer 10-Bis hardeware dekodering vir VP9", + "EnableDecodingColorDepth10Hevc": "Aktiveer 10-Bis hardeware dekodering vir HEVC", + "EnableColorCodedBackgrounds": "Kleurgepasde agtergronde", + "EnableCinemaMode": "Teater verstelling", + "EnableBackdropsHelp": "Wys agtergronde in die agtergrond van sekere blaaie terwyl die versameling deurblaai word.", + "EnableAutoCast": "Stel as Standaard", + "EditSubtitles": "Wysig onderskrifte", + "EditMetadata": "Wysig metadata", + "EditImages": "Wysig beelde", + "Edit": "Wysig", + "EasyPasswordHelp": "U maklike PIN kode word gebruik vir aflyn toegang op ondersteunde kliënte en kan ook gebruik word vir maklike in-netwerk inskakeling.", + "DrmChannelsNotImported": "Kanale met DRM sal nie ingetrek word nie.", + "DownloadsValue": "{0} afgelaaide items", + "Download": "Laai af", + "Down": "Af", + "DoNotRecord": "Moet nie opneem nie", + "DisplayModeHelp": "Kies die uitleg-styl wat u wil hê vir die koppelvlak.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Hierdie moet ook geaktiveer wees vir TV versamelings in die bediener verstellings.", + "DisplayMissingEpisodesWithinSeasons": "Wys vermisde episodes binne reekse", + "DisplayInOtherHomeScreenSections": "Wys in tuisskerm afdelings soos die nuutste media en hou aan kyk", + "DisplayInMyMedia": "Wys tuis skerm", + "Display": "Wys", + "Disconnect": "Ontkoppel", + "Disc": "Skyf", + "Directors": "Ressigeurs", + "Director": "Ressigeur", + "DirectStreaming": "Direkte stroming", + "DirectStreamHelp2": "Direkte stroming gebruik baie min verwerkings-krag met minimale verliese aan videogehalte.", + "DirectStreamHelp1": "Die media is versoenbaar met die toestel met betrekking tot resolusie en media tipe (H264, AC3, ens.), maar in 'n nie-versoenbare lêertipe (mkv, avi, wmv, ens.). Die video sal outomaties herverpak word alvorens dit na die toestel versend kan word.", + "DirectPlaying": "Direkte speling", + "DeviceAccessHelp": "Hierdie verwyder slegs na toestelle wat uniek geidentifiseer kan word en sal nie blaaier-toegang beperk nie. Die filter van verbruikers-toestelle se toegang sal hulel verhoed om nuwe toestelle te voeg totdat hulle hier goedgekeur word.", + "DetectingDevices": "Soek na toestelle", + "Desktop": "Werkskerm", + "Descending": "Afwaarts", + "DeleteUserConfirmation": "Is u seker dat u hierdie verbruiker wil verwyder?", + "DeleteUser": "Verwyder Verbruiker", + "DeleteMedia": "Verwyder media", + "DeleteImageConfirmation": "Is u seker dat u hierdie beeld wil verwyder?", + "DeleteImage": "Verwyder Beeld", + "DeleteDeviceConfirmation": "Is u seker dat u hierdie toestel wil verwyder? Dit sal weer verskyn die volgende keer wat 'n verbruiker daarmee inteken.", + "Delete": "Verwyder", + "DeinterlaceMethodHelp": "Kies die destrikkingsmetode om te gebruik wanneer sagteware verstrikte inhoud transkodeer. Wanneer hardeware-versnelling aangeskakel is en die nodige hardeware beskikbaar is, word die hardeware destrikker gebruik eerder as hierdie versnelling.", + "DefaultSubtitlesHelp": "Onderskrifte word gelaai gebasseer op die standaard en geforseerde verstellings in die ingeboude metadata. Taal-voorkeure word in ag geneem wanneer verskeie opsies beskikbaar is.", + "DefaultMetadataLangaugeDescription": "Hierdie is jou standaard-verstellings en kan gespesifiseer word op 'n per-versameling basis.", + "ErrorDefault": "Daar was 'n probleem met die verwerking van die versoek. Probeer asseblief later weer.", + "Default": "Standaard", + "DeathDateValue": "Oorlede: {0}", + "DatePlayed": "Datum gespeel", + "DateAdded": "Datum toegevoeg", + "Data": "Data", + "CustomDlnaProfilesHelp": "Skep 'n persoonlike profiel om 'n nuwe toestel te teiekn of om die stelsel-profiel to oorheers.", + "CriticRating": "Filkritiek gradering", + "CopyStreamURLSuccess": "URL suksesvol gekopieër.", + "CopyStreamURL": "Kopieër Stroom URL", + "Continuing": "Voortsettend", + "ContinueWatching": "Kyk voort", + "Connect": "Konnekteer", + "ConfirmEndPlayerSession": "Wil u Jellyfin afskakel op {0}?", + "ConfirmDeletion": "Bevestig Uitvee", + "ConfirmDeleteItems": "As u hierdie items uitvee sal dit beide die lêers op u stelsel en die inhoud in die media versameling uitvee. Is u seker u wil voortgaan?", + "ConfirmDeleteItem": "As u hierdie item uitvee sal dit beide die lêer op u stelsel en die inhoud in die media versameling uitvee. Is u seker u wil voortgaan?", + "ConfirmDeleteImage": "Verwyder beeld?", + "ConfigureDateAdded": "Bepaal hoe datum gelaai gebruik word in die paneelbord onder versameling-instellings", + "Composer": "Komponis", + "CommunityRating": "Gemeenskapgradering", + "ColorTransfer": "Kleur oordrag", + "ColorSpace": "Kleurruimte", + "ClientSettings": "Kliënt Verstellings", + "CinemaModeConfigurationHelp": "Die teater-verstelling bring die teater ervaring reguit na jou sitkamer toe met die vermoë om voorprente en u eie inleidings voor die film te speel.", + "ButtonSelectDirectory": "Kies Lêergids", + "ButtonChangeServer": "Verander Lêerbediener", + "ButtonAddServer": "Voeg Lêerbediener", + "BurnSubtitlesHelp": "Bepaal of die lêerbediener onderskrifte moet inbrand wanneer videos getranskodeer word. Om dit nie te doen nie sal uitvoering verbeter. Kies Brand Outomaties om beeld-gebasseerde formate (VOBSUB, PGS, SUB, IDX, ens.) en sekere ASS of SSA onderskrifte in te brand.", + "ShowYear": "Wys jaar", + "ShowTitle": "Wys titel", + "Raised": "Gelig", + "OptionResElement": "res element", + "DropShadow": "Valskadu", + "Sync": "Sinkroniseer", + "Songs": "Liedjies", + "Shows": "Televisie Reekse", + "Playlists": "Snitlyste", + "Photos": "Fotos", + "Movies": "Flieks", + "HeaderContinueWatching": "Kyk Verder" } From 121c208c9df966eb28077c5eee5a6d59af63ad48 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:48:12 +0000 Subject: [PATCH 370/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 598bdcac31..22573fab10 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -326,5 +326,8 @@ "Playlists": "Snitlyste", "Photos": "Fotos", "Movies": "Flieks", - "HeaderContinueWatching": "Kyk Verder" + "HeaderContinueWatching": "Kyk Verder", + "Extras": "Ekstras", + "ExtractChapterImagesHelp": "Die onttrekking van hoofstuk-beelde sal kliënte toelaat om grafiese hoofstuk-keuse spyskaart-opsies te hê. Die proses kan stadig wees, baie hulpron intensief wees en etlike gigagreupe se spasie benodig. Dit hardloop wanner die videos ontdek word asook as 'n nagtelike geskeduleerde taak. Die skedule kan verstel word in die geskeduleerde take area. Dit word nie aanbeveel om die taak tydens piek-verbruik ure te hardloop nie.", + "Folders": "Lêergidse" } From 4b847b81fddbc4f7ab87b781a7f9d487f8a027cc Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:54:44 +0000 Subject: [PATCH 371/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 22573fab10..d0c504db8b 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -329,5 +329,6 @@ "HeaderContinueWatching": "Kyk Verder", "Extras": "Ekstras", "ExtractChapterImagesHelp": "Die onttrekking van hoofstuk-beelde sal kliënte toelaat om grafiese hoofstuk-keuse spyskaart-opsies te hê. Die proses kan stadig wees, baie hulpron intensief wees en etlike gigagreupe se spasie benodig. Dit hardloop wanner die videos ontdek word asook as 'n nagtelike geskeduleerde taak. Die skedule kan verstel word in die geskeduleerde take area. Dit word nie aanbeveel om die taak tydens piek-verbruik ure te hardloop nie.", - "Folders": "Lêergidse" + "Folders": "Lêergidse", + "FFmpegSavePathNotFound": "Ons kry nie FFmpeg op die bergingsplek wat u ingesleutel het nie. FFprobe word ook bendoig en moet in die selfde gidslêer bestaan. Hierdie komponente is normaalweg saam gebondel ten tye van aflaai. Maak asseblief seker dat die bergingsplek korrek is en probeer weer." } From 4865df95399691466f2bd2543b9174bd5081e0da Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:54:53 +0000 Subject: [PATCH 372/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index d0c504db8b..d809d628c3 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -330,5 +330,7 @@ "Extras": "Ekstras", "ExtractChapterImagesHelp": "Die onttrekking van hoofstuk-beelde sal kliënte toelaat om grafiese hoofstuk-keuse spyskaart-opsies te hê. Die proses kan stadig wees, baie hulpron intensief wees en etlike gigagreupe se spasie benodig. Dit hardloop wanner die videos ontdek word asook as 'n nagtelike geskeduleerde taak. Die skedule kan verstel word in die geskeduleerde take area. Dit word nie aanbeveel om die taak tydens piek-verbruik ure te hardloop nie.", "Folders": "Lêergidse", - "FFmpegSavePathNotFound": "Ons kry nie FFmpeg op die bergingsplek wat u ingesleutel het nie. FFprobe word ook bendoig en moet in die selfde gidslêer bestaan. Hierdie komponente is normaalweg saam gebondel ten tye van aflaai. Maak asseblief seker dat die bergingsplek korrek is en probeer weer." + "FFmpegSavePathNotFound": "Ons kry nie FFmpeg op die bergingsplek wat u ingesleutel het nie. FFprobe word ook bendoig en moet in die selfde gidslêer bestaan. Hierdie komponente is normaalweg saam gebondel ten tye van aflaai. Maak asseblief seker dat die bergingsplek korrek is en probeer weer.", + "Favorite": "Gunstelling", + "FastForward": "Vinnig-vorentoe" } From 2b5b2ee5b0e844f1d595bb15433eb74102607734 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:55:24 +0000 Subject: [PATCH 373/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index d809d628c3..7f5f20d9e9 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -332,5 +332,6 @@ "Folders": "Lêergidse", "FFmpegSavePathNotFound": "Ons kry nie FFmpeg op die bergingsplek wat u ingesleutel het nie. FFprobe word ook bendoig en moet in die selfde gidslêer bestaan. Hierdie komponente is normaalweg saam gebondel ten tye van aflaai. Maak asseblief seker dat die bergingsplek korrek is en probeer weer.", "Favorite": "Gunstelling", - "FastForward": "Vinnig-vorentoe" + "FastForward": "Vinnig-vorentoe", + "Features": "Funksies" } From a12b756df9b16ca0ea0aeba488f5faee89970de1 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:55:34 +0000 Subject: [PATCH 374/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 7f5f20d9e9..9dedee4d00 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -333,5 +333,6 @@ "FFmpegSavePathNotFound": "Ons kry nie FFmpeg op die bergingsplek wat u ingesleutel het nie. FFprobe word ook bendoig en moet in die selfde gidslêer bestaan. Hierdie komponente is normaalweg saam gebondel ten tye van aflaai. Maak asseblief seker dat die bergingsplek korrek is en probeer weer.", "Favorite": "Gunstelling", "FastForward": "Vinnig-vorentoe", - "Features": "Funksies" + "Features": "Funksies", + "FetchingData": "Soek addisionele data" } From f43788f443b6063e9d55630e0a1fa0c2bf9c69c7 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:55:44 +0000 Subject: [PATCH 375/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 9dedee4d00..f03913aca5 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -334,5 +334,6 @@ "Favorite": "Gunstelling", "FastForward": "Vinnig-vorentoe", "Features": "Funksies", - "FetchingData": "Soek addisionele data" + "FetchingData": "Soek addisionele data", + "File": "Lêer" } From a0f0e1eb8f0a724b2456baf5ff2d273e33b25935 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:55:53 +0000 Subject: [PATCH 376/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index f03913aca5..8df49a67c2 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -335,5 +335,6 @@ "FastForward": "Vinnig-vorentoe", "Features": "Funksies", "FetchingData": "Soek addisionele data", - "File": "Lêer" + "File": "Lêer", + "FileNotFound": "Lêer nie gevind." } From 85944f7d501c14820fff2e12a611bd43e117a580 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:56:08 +0000 Subject: [PATCH 377/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 8df49a67c2..96e61f0f08 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -336,5 +336,6 @@ "Features": "Funksies", "FetchingData": "Soek addisionele data", "File": "Lêer", - "FileNotFound": "Lêer nie gevind." + "FileNotFound": "Lêer nie gevind.", + "FileReadCancelled": "Die lees van die lêer is gekanselleer." } From 5a5f6f3ea9cb57fcb5be138ec28e5ec8e6f24b68 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:56:24 +0000 Subject: [PATCH 378/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 96e61f0f08..e45ef37270 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -337,5 +337,6 @@ "FetchingData": "Soek addisionele data", "File": "Lêer", "FileNotFound": "Lêer nie gevind.", - "FileReadCancelled": "Die lees van die lêer is gekanselleer." + "FileReadCancelled": "Die lees van die lêer is gekanselleer.", + "FileReadError": "A fout het voorgekom tydens die lees van die lêer." } From 9277f7ce757c325d160379dc48853a15f3c98fb0 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:56:31 +0000 Subject: [PATCH 379/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index e45ef37270..26e9e565d0 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -338,5 +338,6 @@ "File": "Lêer", "FileNotFound": "Lêer nie gevind.", "FileReadCancelled": "Die lees van die lêer is gekanselleer.", - "FileReadError": "A fout het voorgekom tydens die lees van die lêer." + "FileReadError": "A fout het voorgekom tydens die lees van die lêer.", + "Filters": "Filters" } From 33a7f015576a35ca7ecf151c86960e3fe0d00006 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:56:39 +0000 Subject: [PATCH 380/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 26e9e565d0..c7b256ac9c 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -339,5 +339,6 @@ "FileNotFound": "Lêer nie gevind.", "FileReadCancelled": "Die lees van die lêer is gekanselleer.", "FileReadError": "A fout het voorgekom tydens die lees van die lêer.", - "Filters": "Filters" + "Filters": "Filters", + "FormatValue": "Formaat: {0}" } From 821f53927df5bdbc968ce2992bf548f0ed42bedf Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:56:45 +0000 Subject: [PATCH 381/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index c7b256ac9c..7a21cc5120 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -340,5 +340,7 @@ "FileReadCancelled": "Die lees van die lêer is gekanselleer.", "FileReadError": "A fout het voorgekom tydens die lees van die lêer.", "Filters": "Filters", - "FormatValue": "Formaat: {0}" + "FormatValue": "Formaat: {0}", + "Fullscreen": "Volskerm", + "Friday": "Vrydag" } From 61fcf408e22ecc0adaecf0d0f19efdad8da5c22a Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:56:57 +0000 Subject: [PATCH 382/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 7a21cc5120..ce8a13aa8a 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -342,5 +342,7 @@ "Filters": "Filters", "FormatValue": "Formaat: {0}", "Fullscreen": "Volskerm", - "Friday": "Vrydag" + "Friday": "Vrydag", + "Genre": "Genre", + "General": "Algemeen" } From 5a8a2e5bd0ba93440889e88d254684471a311f38 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:57:07 +0000 Subject: [PATCH 383/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index ce8a13aa8a..69b527b01c 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -344,5 +344,6 @@ "Fullscreen": "Volskerm", "Friday": "Vrydag", "Genre": "Genre", - "General": "Algemeen" + "General": "Algemeen", + "Other": "Ander" } From 57158b9ac9ea11a451e825d324620a3166a341bd Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:57:16 +0000 Subject: [PATCH 384/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 69b527b01c..1d27354020 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -345,5 +345,6 @@ "Friday": "Vrydag", "Genre": "Genre", "General": "Algemeen", - "Other": "Ander" + "Other": "Ander", + "GroupBySeries": "Groepeer volgens reeks" } From 2d304f60b00bfedfd5cba7f57ed36b13ed447477 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:57:23 +0000 Subject: [PATCH 385/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 1d27354020..b8cac11dac 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -346,5 +346,6 @@ "Genre": "Genre", "General": "Algemeen", "Other": "Ander", - "GroupBySeries": "Groepeer volgens reeks" + "GroupBySeries": "Groepeer volgens reeks", + "GroupVersions": "Groepeer weergawes" } From cb80bbe7486962fc327380df896b7a518faaa36a Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:57:30 +0000 Subject: [PATCH 386/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index b8cac11dac..85b5f369b0 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -347,5 +347,7 @@ "General": "Algemeen", "Other": "Ander", "GroupBySeries": "Groepeer volgens reeks", - "GroupVersions": "Groepeer weergawes" + "GroupVersions": "Groepeer weergawes", + "Guide": "Gids", + "GuestStar": "Gaskunstenaar" } From 9d0ff1d238298997ee76dba5caf100065965234d Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Fri, 25 Sep 2020 20:57:42 +0000 Subject: [PATCH 387/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 85b5f369b0..68c0ab8793 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -349,5 +349,6 @@ "GroupBySeries": "Groepeer volgens reeks", "GroupVersions": "Groepeer weergawes", "Guide": "Gids", - "GuestStar": "Gaskunstenaar" + "GuestStar": "Gaskunstenaar", + "GuideProviderLogin": "Skakel In" } From 35146331c1749ba36b5151ccdce0b30780434654 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Sat, 26 Sep 2020 03:53:31 +0000 Subject: [PATCH 388/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 7f2199279d..0a320f0307 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -147,7 +147,7 @@ "AllComplexFormats": "Tất cả các định dạng phức tạp (ASS, SSA, VOBSUB, PGS, SUB, IDX, ...)", "AllChannels": "Tất cả các kênh", "Alerts": "Cảnh Báo", - "Albums": "", + "Albums": "Albums", "Aired": "Đã phát sóng", "AirDate": "Ngày phát sóng", "AdditionalNotificationServices": "Duyệt qua danh mục plugin để cài đặt các dịch vụ thông báo bổ sung.", From 13f096997641bbd7226152e7c5bfac0abae60fb8 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Sat, 26 Sep 2020 03:58:17 +0000 Subject: [PATCH 389/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 0a320f0307..46518cdf4c 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -783,7 +783,7 @@ "LabelSubtitlePlaybackMode": "Chế độ phụ đề:", "LabelSubtitleFormatHelp": "Ví dụ: srt", "LabelSubtitleDownloaders": "Trình tải xuống phụ đề:", - "LabelStreamType": "Loại luồng:", + "LabelStreamType": "Loại luồng phát:", "LabelStopping": "Đang dừng lại", "LabelStopWhenPossible": "Dừng lại khi có thể:", "LabelStatus": "Trạng thái:", @@ -993,7 +993,7 @@ "LabelType": "Kiểu:", "LabelTunerType": "Loại bộ dò:", "LabelTunerIpAddress": "Địa chỉ IP của bộ dò:", - "LabelTriggerType": "Loại kích hoạt:", + "LabelTriggerType": "Kích hoạt kiểu:", "LabelTranscodingThreadCountHelp": "Chọn số luồng tối đa để sử dụng khi chuyển mã. Giảm số luồng sẽ giảm mức sử dụng CPU nhưng có thể không chuyển đổi đủ nhanh để có trải nghiệm phát lại mượt mà.", "LabelTranscodingThreadCount": "Số luồng chuyển mã:", "LabelTranscodingProgress": "Tiến trình chuyển mã:", @@ -1031,7 +1031,7 @@ "OptionLoginAttemptsBeforeLockout": "Xác định số lần đăng nhập không chính xác có thể được thực hiện trước khi xảy ra khóa người dùng.", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Các yêu cầu này sẽ được thực hiện nhưng sẽ bỏ qua phần đầu dải byte.", "OptionIgnoreTranscodeByteRangeRequests": "Bỏ qua các yêu cầu phạm vi byte chuyển mã", - "OptionHlsSegmentedSubtitles": "Phụ đề được phân đoạn HLS", + "OptionHlsSegmentedSubtitles": "Phụ đề phân đoạn HLS", "OptionHideUserFromLoginHelp": "Hữu ích cho tài khoản quản trị viên cá nhân hoặc ẩn. Người dùng sẽ cần đăng nhập thủ công bằng cách nhập tên người dùng và mật khẩu của họ.", "OptionExtractChapterImage": "Bật trích xuất hình ảnh mỗi phân cảnh", "OptionExternallyDownloaded": "Tải xuống bên ngoài", @@ -1057,7 +1057,7 @@ "OptionCriticRating": "Xếp Hạng Phê Bình", "OptionBluray": "Đĩa Blu-ray", "OptionAutomaticallyGroupSeriesHelp": "Loạt phim nằm trên nhiều thư mục trong thư viện này sẽ được tự động hợp nhất thành một loạt phim duy nhất.", - "OptionAutomaticallyGroupSeries": "Tự động hợp nhất các loạt phim được trải dài trên nhiều thư mục", + "OptionAutomaticallyGroupSeries": "Tự động gộp các bộ phim được trải dài trên nhiều thư mục", "OptionAllowVideoPlaybackTranscoding": "Cho phép phát lại video yêu cầu chuyển mã", "OptionAllowSyncTranscoding": "Cho phép tải xuống và đồng bộ hóa phương tiện yêu cầu chuyển mã", "OptionAllowRemoteSharedDevicesHelp": "Các thiết bị DLNA được coi là chia sẻ cho đến khi người dùng bắt đầu kiểm soát chúng.", @@ -1400,5 +1400,23 @@ "OptionEmbedSubtitles": "Nhúng trong định dạng", "MediaInfoContainer": "Định dạng", "Raised": "Nâng lên", - "EnableAutoCast": "Đặt làm mặc định" + "EnableAutoCast": "Đặt làm mặc định", + "Studios": "Studios", + "Bwdif": "BWDIF", + "Yadif": "YADIF", + "Writers": "Người viết", + "Writer": "Người viết", + "Video": "Video", + "ValueOneAlbum": "1 album", + "ValueMinutes": "{0} phút", + "ValueAlbumCount": "{0} albums", + "TrackCount": "{0} bản nhạc", + "TabPlugins": "Plugins", + "TV": "TV", + "SubtitleOffset": "Phần bù phụ đề", + "OptionEquals": "Bằng", + "OptionCaptionInfoExSamsung": "Thông tin chú thích ví dụ (Samsung)", + "MessageSyncPlayGroupWait": "{0} đang tải …", + "MediaInfoAnamorphic": "Phim điện ảnh màn ảnh rộng", + "LabelXDlnaCap": "Phần đầu X-DLNA:" } From 6f7819366042c210c00aa46a867677a0d8519d55 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 26 Sep 2020 12:27:14 +0300 Subject: [PATCH 390/582] Fix 'file:' fetching (bundled apps) --- src/scripts/settings/webSettings.js | 35 +++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/scripts/settings/webSettings.js b/src/scripts/settings/webSettings.js index 2ffe290d88..e28e0e84ff 100644 --- a/src/scripts/settings/webSettings.js +++ b/src/scripts/settings/webSettings.js @@ -1,9 +1,40 @@ let data; +// `fetch` with `file:` support +// Recent browsers seem to support `file` protocol under some conditions. +// Based on https://github.com/github/fetch/pull/92#issuecomment-174730593 +async function fetchLocal(url, options) { + return new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest; + + xhr.onload = () => { + // `file` protocol has invalid OK status + let status = xhr.status; + if (xhr.responseURL.startsWith('file:') && status === 0) { + status = 200; + } + + resolve(new Response(xhr.responseText, {status: status})); + } + + xhr.onerror = () => { + reject(new TypeError('Local request failed')); + } + + xhr.open('GET', url); + + if (options && options.cache) { + xhr.setRequestHeader('Cache-Control', options.cache); + } + + xhr.send(null); + }); +} + async function getConfig() { if (data) return Promise.resolve(data); try { - const response = await fetch('config.json', { + const response = await fetchLocal('config.json', { cache: 'no-cache' }); @@ -22,7 +53,7 @@ async function getConfig() { async function getDefaultConfig() { try { - const response = await fetch('config.template.json', { + const response = await fetchLocal('config.template.json', { cache: 'no-cache' }); From 45c63c94b7a694db95a2eef2ee0214decd609da1 Mon Sep 17 00:00:00 2001 From: rethi61 Date: Sat, 26 Sep 2020 06:39:01 +0000 Subject: [PATCH 391/582] Translated using Weblate (French (Canada)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr_CA/ --- src/strings/fr-ca.json | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index b1f78ad066..dd5069c847 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -64,11 +64,11 @@ "Thursday": "Jeudi", "TrackCount": "{0} pistes", "Tuesday": "Mardi", - "UserProfilesIntro": "Jellyfin supporte nativement les profils utilisateurs, les préférences d'affichage, la sauvegarde de l'état de lecture et le contrôle parental.", + "UserProfilesIntro": "Jellyfin supporte les profils d'utilisateurs, les préférences d'affichage, la sauvegarde de l'état de lecture et le contrôle parental.", "ValueSpecialEpisodeName": "Spécial - {0}", "Wednesday": "Mercredi", "WelcomeToProject": "Bienvenue dans Jellyfin !", - "WizardCompleted": "C'est tout ce dont nous avons besoin pour l'instant. Jellyfin a commencé à collecter les informations de votre bibliothèque de médias. Jetez un oeil à quelques unes de nos applications, puis cliquez sur Terminer pour consulter le Tableau de bord du serveur.", + "WizardCompleted": "C'est tout ce dont nous avons besoin pour le moment. Jellyfin a commencé à récolter les informations de votre bibliothèque de médias. Jetez un oeil à quelques unes de nos applications, puis cliquez sur Terminer pour consulter le Tableau de bord.", "Absolute": "Absolu", "AccessRestrictedTryAgainLater": "Accès restreint. Veuillez réessayer plus tard.", "Actor": "Acteur(trice)", @@ -128,7 +128,7 @@ "BoxRear": "Dos de boîtier", "Browse": "Parcourir", "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.", + "AllowHWTranscodingHelp": "Permet au récepteur TV de transcoder les flux à la volée. Cela peut aider à réduire le transcodage requis par le serveur .", "BurnSubtitlesHelp": "Détermine si le serveur doit graver les sous-titres lors du transcodage vidéo. Éviter ceci améliorera les performances du serveur. Sélectionnez Auto pour graver les formats basés sur l'image (par exemple, VOBSUB, PGS, SUB/IDX etc) ainsi que certains sous-titres ASS/SSA.", "ButtonAddMediaLibrary": "Ajouter une médiathèque", "ButtonAddScheduledTaskTrigger": "Ajouter un déclencheur", @@ -221,5 +221,39 @@ "ColorTransfer": "Transfert de couleur", "ColorSpace": "Espace colorimétrique", "ColorPrimaries": "Primaires colorimétriques", - "EnablePhotos": "Voir les photos" + "EnablePhotos": "Voir les photos", + "DefaultMetadataLangaugeDescription": "Ce sont vos paramètres par défaut. Ils peuvent être personnalisés pour chaque médiathèque.", + "ErrorDefault": "Il y a eu une erreur lors du traitement de la demande. Veuillez réessayer plus tard.", + "Data": "Données", + "CustomDlnaProfilesHelp": "Créer un profil personnalisé pour un nouvel appareil ou pour remplacer un profile système.", + "Continuing": "En cours", + "CinemaModeConfigurationHelp": "Le mode cinéma amène le grand écran directement à votre salon avec la possibilité de jouer des bandes-annonces et des introductions personnalisées avant la lecture de vos médias.", + "ButtonUseQuickConnect": "Utiliser la connexion rapide", + "ButtonActivate": "Activer", + "Authorize": "Autoriser", + "Episodes": "Épisodes", + "Episode": "Épisode", + "Ended": "Terminé", + "EnableThemeSongsHelp": "Jouer les bandes sonores en arrière-plan pendant la navigation de la médiathèque.", + "EnableStreamLoopingHelp": "À activer si le contenu de la diffusion en continu ne contient que quelques secondes de données et nécessite des requêtes sans arrêt. Lorsque non nécessaire, l'activation de cette option peut causer des problèmes.", + "EnableStreamLooping": "Lecture en boucle des diffusions en direct", + "EnableQuickConnect": "Activer la connexion rapide sur ce serveur", + "EnablePhotosHelp": "Les images seront détectées et affichées avec les autres fichiers multimédia.", + "EnableExternalVideoPlayers": "Lecteurs vidéos externes", + "EnableColorCodedBackgrounds": "Arrière-plans avec code de couleurs", + "EnableCinemaMode": "Mode cinéma", + "EnableBackdropsHelp": "Afficher des images à l'arrière-plan de certaines pages de la médiathèque.", + "EnableAutoCast": "Définir par défaut", + "EditSubtitles": "Modifier les sous-titres", + "EditMetadata": "Modifier les métadonnées", + "EditImages": "Modifier les images", + "HeaderVideos": "Vidéos", + "Yes": "Oui", + "RecommendationDirectedBy": "Réalisé par {0}", + "LabelMetadata": "Métadonnées :", + "HeaderUsers": "Utilisateurs", + "HeaderUser": "Utilisateur", + "HeaderAudioBooks": "Livres audio", + "HeaderApiKeys": "Clés API", + "HeaderApiKey": "Clé API" } From 7b173a8c0681966edc196b9e1ac00435b3f3a5c5 Mon Sep 17 00:00:00 2001 From: Tomi Date: Sat, 26 Sep 2020 09:56:21 +0000 Subject: [PATCH 392/582] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 7529df6202..687eabc718 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -332,7 +332,7 @@ "LabelCustomRating": "Mukautettu luokitus:", "LabelCustomCss": "Mukautettu CSS:", "LabelCertificatePassword": "Varmenteen salasana:", - "LabelArtistsHelp": "Erota useita käyttämällä ;", + "LabelArtistsHelp": "Erota useita käyttämällä puolipistettä (;).", "LabelAppNameExample": "Esimerkiksi: Sickbeard, Sonarr", "LabelAppName": "Sovelluksen nimi", "LabelAllowedRemoteAddressesMode": "Etä-IP-osoitesuodattimen tila:", @@ -1165,5 +1165,9 @@ "LabelModelName": "Mallinimi", "LabelModelDescription": "Mallikuvaus", "LabelModelNumber": "Mallinumero", - "LabelInNetworkSignInWithEasyPassword": "Salli sisäverkkokirjautuminen helpolla PIN-koodilla" + "LabelInNetworkSignInWithEasyPassword": "Salli sisäverkkokirjautuminen helpolla PIN-koodilla", + "HeaderCodecProfileHelp": "Dekooderiprofiilit määrittävät laitteen rajoitukset, kun se toistaa erityyppisiä koodauksia. Jos rajoitus on voimassa, sisältö koodataan uudelleen, vaikka koodaustyypiksi on asetettu suora toisto.", + "Authorize": "Valtuuta", + "EnableAutoCast": "Aseta oletukseksi", + "ButtonActivate": "Aktivoi" } From 2e6211ce31b3966c19c461b9269d9478f87b08e4 Mon Sep 17 00:00:00 2001 From: Panopoulos Andreas Date: Sat, 26 Sep 2020 11:20:39 +0000 Subject: [PATCH 393/582] Translated using Weblate (Greek) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/el/ --- src/strings/el.json | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/strings/el.json b/src/strings/el.json index 9d809703f6..40538ceab8 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -1,9 +1,9 @@ { "Absolute": "Απόλυτο", - "AccessRestrictedTryAgainLater": "Η πρόσβαση είναι επί του παρόντος περιορισμένη. Παρακαλώ δοκιμάστε ξανά αργότερα.", + "AccessRestrictedTryAgainLater": "Η πρόσβαση είναι περιορισμένη προς το παρόν. Παρακαλώ δοκιμάστε ξανά αργότερα.", "Actor": "Ηθοποιός", "Add": "Προσθήκη", - "AddToCollection": "Πρόσθεσε στη συλλογή", + "AddToCollection": "Προσθήκη στη συλλογή", "AddToPlayQueue": "Προσθήκη στην ουρά αναπαραγωγής", "AddToPlaylist": "Πρόσθεσε σε λίστα", "AddedOnValue": "Προστέθηκε {0}", @@ -1047,8 +1047,10 @@ "Episode": "Επεισόδιο", "EnableDetailsBannerHelp": "Εμφάνιση εικόνας στο πάνω μέρος της σελίδας λεπτομερειών του αντικειμένου.", "Data": "Δεδομένα", - "CopyStreamURLSuccess": "Σύνδεσμος αντιγράφηκε με επιτυχία.", + "CopyStreamURLSuccess": "Ο σύνδεσμος αντιγράφηκε με επιτυχία.", "CopyStreamURL": "Αντιγραφή Συνδέσμου Ροής", "ClientSettings": "Ρυθμίσεις πελάτη", - "ChangingMetadataImageSettingsNewContent": "Οι αλλαγές στις ρυθμίσεις λήψης μεταδεδομένων ή εικόνων θα εφαρμοστούν μόνο στο νέο περιεχόμενο που προστίθεται στη βιβλιοθήκη σας. Για να εφαρμόσετε τις αλλαγές στους υπάρχοντες τίτλους, θα πρέπει να ανανεώσετε τα μεταδεδομένα τους χειροκίνητα." + "ChangingMetadataImageSettingsNewContent": "Οι αλλαγές στις ρυθμίσεις λήψης μεταδεδομένων ή εικόνων θα εφαρμοστούν μόνο στο νέο περιεχόμενο που προστίθεται στη βιβλιοθήκη σας. Για να εφαρμόσετε τις αλλαγές στους υπάρχοντες τίτλους, θα πρέπει να ανανεώσετε τα μεταδεδομένα τους χειροκίνητα.", + "ButtonActivate": "Ενεργοποίηση", + "Authorize": "Εξουσιοδότηση" } From a38685775c4f2d603ab9319e2923d6993e4ba3f0 Mon Sep 17 00:00:00 2001 From: frankieh Date: Sat, 26 Sep 2020 05:50:34 -0700 Subject: [PATCH 394/582] Add missing button type attribute --- src/components/metadataEditor/metadataEditor.template.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/metadataEditor/metadataEditor.template.html b/src/components/metadataEditor/metadataEditor.template.html index aad3557bad..f080ecacdb 100644 --- a/src/components/metadataEditor/metadataEditor.template.html +++ b/src/components/metadataEditor/metadataEditor.template.html @@ -251,7 +251,7 @@

    -
    '; html += '
    '; html += ''; - html += ``; - html += ``; - html += ``; - html += ``; + html += ''; + html += ''; + html += ''; + html += ''; html += ''; html += '
    '; html += '
    '; @@ -43,13 +43,16 @@ import 'flexStyles'; skinHeader.classList.add('skinHeader-blurred'); skinHeader.innerHTML = html; + headerBackButton = skinHeader.querySelector('.headerBackButton'); headerHomeButton = skinHeader.querySelector('.headerHomeButton'); + mainDrawerButton = skinHeader.querySelector('.mainDrawerButton'); headerUserButton = skinHeader.querySelector('.headerUserButton'); headerCastButton = skinHeader.querySelector('.headerCastButton'); headerAudioPlayerButton = skinHeader.querySelector('.headerAudioPlayerButton'); headerSearchButton = skinHeader.querySelector('.headerSearchButton'); headerSyncButton = skinHeader.querySelector('.headerSyncButton'); + retranslateUi(); lazyLoadViewMenuBarImages(); bindMenuEvents(); updateCastIcon(); @@ -73,8 +76,26 @@ import 'flexStyles'; appRouter.back(); } + function retranslateUi() { + if (headerSyncButton) { + headerSyncButton.title = globalize.translate('ButtonSyncPlay'); + } + + if (headerAudioPlayerButton) { + headerAudioPlayerButton.title = globalize.translate('ButtonPlayer'); + } + + if (headerCastButton) { + headerCastButton.title = globalize.translate('ButtonCast'); + } + + if (headerSearchButton) { + headerSearchButton.title = globalize.translate('Search'); + } + } + function updateUserInHeader(user) { - renderHeader(); + retranslateUi(); let hasImage; @@ -153,14 +174,10 @@ import 'flexStyles'; } function bindMenuEvents() { - mainDrawerButton = document.querySelector('.mainDrawerButton'); - if (mainDrawerButton) { mainDrawerButton.addEventListener('click', toggleMainDrawer); } - const headerBackButton = skinHeader.querySelector('.headerBackButton'); - if (headerBackButton) { headerBackButton.addEventListener('click', onBackClick); } @@ -772,10 +789,6 @@ import 'flexStyles'; } function updateBackButton(page) { - if (!headerBackButton) { - headerBackButton = document.querySelector('.headerBackButton'); - } - if (headerBackButton) { if (page.getAttribute('data-backbutton') !== 'false' && appRouter.canGoBack()) { headerBackButton.classList.remove('hide'); From 112c4a7940d44068bda275c2baadda34e9a3ed78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jurij=20Martin=C4=8Di=C4=8D?= Date: Sat, 26 Sep 2020 16:03:09 +0000 Subject: [PATCH 397/582] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 57 +++++++++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 9 deletions(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index a8a7cbd3a8..cbb2095729 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -215,7 +215,7 @@ "Disconnect": "Prekini povezavo", "Disc": "Disk", "DirectStreaming": "Neposredno pretakanje", - "DirectStreamHelp2": "Neposredno pretakanje porabi zelo malo procesorske moči in ne povzroči izgube kvalitete videa.", + "DirectStreamHelp2": "Neposredno pretakanje porabi zelo malo procesorske moči z minimalno izgubo kvalitete videa.", "DirectStreamHelp1": "Predstavnost je kompatibilna z napravo glede resolucije in vrste (H.264, AC3, itd.), vendar je v nepodprtem kontejnerju (mkv, avi, wmv, itd.). Predstavnost bo sproti prepakirana pred prenosom na napravo.", "DefaultSubtitlesHelp": "Podnapisi so naloženi na podlagi privzetih in prisiljenih oznak v metapodatkih. Če je na voljo več podnapisov, so upoštevane jezikovne nastavitve.", "HeaderSelectServerCachePathHelp": "Izberite ali vnesite pot, v katero se bodo zapisovali predpomnjeni podatki. Mapa mora omogočati pisanje.", @@ -367,7 +367,7 @@ "ExtraLarge": "Zelo veliko", "ExitFullscreen": "Izhod in celozaslonskega načina", "ErrorSavingTvProvider": "Prišlo je do težave pri shranjevanju TV ponudnika. Preverite ali je dostopen in poskusite znova.", - "ErrorPleaseSelectLineup": "Prosimo izberite postajo in poskusite znova. Če ni na voljo nobene postaje, preverite ali so vaše uporabniško ime, geslo in poštna številka pravilni.", + "ErrorPleaseSelectLineup": "Prosimo izberite postajo in poskusite znova. Če ni na voljo nobene postaje, preverite vaše uporabniško ime, geslo in poštno številko.", "ErrorAddingListingsToSchedulesDirect": "Prišlo je do težave pri dodajanju postaj na vaš Schedules Direct račun. Schedules Direct omogoča omejeno število postaj na posameznem računu. Preden nadaljujete se morate prijaviti v vaš Schedules Direct in odstraniti ostale postaje z računa.", "ErrorGettingTvLineups": "Prišlo je do težave pri prenosu TV postaj. Preverite ali so podatki pravilni in poskusite znova.", "ErrorAddingTunerDevice": "Prišlo je do težave pri dodajanju sprejemnika. Preverite ali je dostopen in poskusite znova.", @@ -531,7 +531,7 @@ "LabelDisplayOrder": "Vrstni red prikaza:", "LabelDisplayName": "Prikazano ime:", "LabelDisplayMode": "Način prikaza:", - "LabelBindToLocalNetworkAddressHelp": "Preglasi lokalni IP naslov za HTTP strežnik. V kolikor pustite prazno se strežnik poveže z vsemi možnimi naslovi. Sprememba vrednosti zahteva ponovni zagon.", + "LabelBindToLocalNetworkAddressHelp": "Preglasi lokalni IP-naslov za HTTP-strežnik. V kolikor pustite prazno, se strežnik poveže z vsemi možnimi naslovi. Sprememba vrednosti zahteva ponovni zagon.", "InstallingPackage": "Nameščanje {0} (različica {1})", "ImportMissingEpisodesHelp": "Podatki o manjkajočih epizodah bodo dodani v bazo podatkov in prikazani znotraj sezon in serij. To lahko občutno podaljša čas uvoza v knjižnjico.", "ImportFavoriteChannelsHelp": "Uvoženi bodo zgolj programi, ki so na sprejemniku označeni kot priljubljeni.", @@ -929,7 +929,7 @@ "LabelSimultaneousConnectionLimit": "Omejitev števila sočasnih predvajanj:", "LabelServerName": "Ime strežnika:", "LabelServerHostHelp": "192.168.1.100:8096 ali https://myserver.com", - "LabelServerHost": "Naslov:", + "LabelServerHost": "Naslov strežnika:", "LabelSeriesRecordingPath": "Pot za snemanje serij:", "LabelSerialNumber": "Serijska številka", "LabelSendNotificationToUsers": "Pošlji obvestilo na:", @@ -977,7 +977,7 @@ "LabelTranscodingProgress": "Napredek prekodiranja:", "LabelTranscodingFramerate": "Hitrost prekodiranja:", "LabelTranscodes": "Prekodiranje:", - "LabelTranscodingTempPathHelp": "Določite pot po meri za datoteke prekodiranja. Pustite prazno za uporabo privzete lokacije.", + "LabelTranscodingTempPathHelp": "Določite pot po meri za začasne datoteke prekodiranja. Pustite prazno za uporabo privzete lokacije.", "LabelTranscodePath": "Pot prekodiranja:", "LabelTrackNumber": "Številka skladbe:", "LabelTime": "Čas:", @@ -987,7 +987,7 @@ "LabelSupportedMediaTypes": "Podprti tipi predstavnosti:", "LabelSubtitlePlaybackMode": "Način podnapisov:", "LabelSubtitleFormatHelp": "Primer: srt", - "LabelSubtitleDownloaders": "Pridobivanje podnapisov:", + "LabelSubtitleDownloaders": "Pridobi podnapise:", "Wednesday": "Sreda", "ValueVideoCodec": "Video kodek: {0}", "ValueTimeLimitSingleHour": "Časovna omejitev: 1 ura", @@ -1023,7 +1023,7 @@ "LibraryAccessHelp": "Izberite knjižnice, ki bodo deljenje s tem uporabnikom. Upravitelji bodo lahko urejali metapodatke z upraviteljem metapodatkov.", "LeaveBlankToNotSetAPassword": "To polje lahko pustite prazno za uporabo brez gesla.", "LearnHowYouCanContribute": "Poglejte, kako lahko pomagate.", - "LabelffmpegPathHelp": "Pot do datoteke aplikacije ffmpeg ali mape, ki jo vsebuje.", + "LabelffmpegPathHelp": "Pot do aplikacije ffmpeg ali mape, ki jo vsebuje.", "LabelffmpegPath": "Pot FFmpeg:", "LabelZipCode": "Poštna številka:", "LabelYear": "Leto:", @@ -1072,7 +1072,7 @@ "Episode": "Epizoda", "EnableDetailsBannerHelp": "Prikaži sliko pasice na vrhu strani podrobnosti.", "EnableDetailsBanner": "Pasica s podrobnostmi", - "DeinterlaceMethodHelp": "Izberite način razpletanja pri prekodiranju prepletenih vsebin.", + "DeinterlaceMethodHelp": "Izberite način razpletanja pri prekodiranju prepletenih vsebin brez strojnega pospeševanja. Ob vklopljenem strojnem pospeševanju prekodiranja, ki podpira razpletanje, bo ta nastavitev zanemarjena.", "ButtonSyncPlay": "SyncPlay", "LabelDynamicExternalId": "{0} Id:", "LabelDroppedFrames": "Izpuščene sličice:", @@ -1298,5 +1298,44 @@ "LastSeen": "Nazadnje viden {0}", "PersonRole": "kot {0}", "ListPaging": "{0}-{1} od {2}", - "WriteAccessRequired": "Jellyfin potrebuje dostop za pisanje v to mapo. Prosimo zagotovite dostop za pisanje in poskusite znova." + "WriteAccessRequired": "Jellyfin potrebuje dostop za pisanje v to mapo. Prosimo zagotovite dostop za pisanje in poskusite znova.", + "LabelMaxMuxingQueueSizeHelp": "Najvišje število paketov v predpomnilniku med čakanjem na začetek pretakanja. Povečaj, če se v ffmpeg zapisniku pojavlja napaka: \"Too many packets buffered for output stream\". Priporočena vrednost: 2048.", + "RefreshDialogHelp": "Metapodatki se osvežujejo na podlagi nastavitev in internetnih storitev, ki so izbrane v nadzorni plošči.", + "RecordingScheduled": "Snemanje načrtovano.", + "QuickConnectNotActive": "Quick Connect ni aktiven na tem strežniku", + "QuickConnectNotAvailable": "Za možnost povezave Quick Connect kontaktiraj skrbnika", + "QuickConnectInvalidCode": "Neveljavna Quick Connect koda", + "QuickConnectDescription": "Za vpis s Quick Connect izberi Quick Connect na napravi preko katere se vpisuješ in vnesi kodo.", + "QuickConnectDeactivated": "Quick Connect je bil deaktiviran pred dokončanjem vpisa", + "QuickConnectAuthorizeFail": "Neznana Quick Connect koda", + "QuickConnectAuthorizeSuccess": "Avtorizirano", + "QuickConnectAuthorizeCode": "Vnesi kodo {0} za vpis", + "QuickConnectActivationSuccessful": "Aktivirano", + "QuickConnect": "Quick Connect", + "Profile": "Profil", + "PosterCard": "Kartica posterja", + "Poster": "Poster", + "Photo": "Fotografija", + "OptionSpecialEpisode": "Posebne epizode", + "OptionResumable": "Nadaljuj", + "OptionEmbedSubtitles": "Vgradi podnapise", + "LabelSpecialSeasonsDisplayName": "Prikazno ime posebne sezone:", + "LabelQuickConnectCode": "Koda za Quick connect:", + "LabelUnstable": "Nestabilno", + "LabelKnownProxies": "Znani posredniški strežniki:", + "LabelIconMaxResHelp": "Najvišja ločljivost ikon preko upnp:icon.", + "LabelCurrentStatus": "Trenutno stanje:", + "KnownProxiesHelp": "Seznam IP-naslovov znanih posredniških strežnikov za povezovanje z Jellyfin. To je potrebno za pravilno delovanje X-Forwarded-For zaglavij. Naslovi so ločeni z vejico. Sprememba vrednosti zahteva ponovni zagon.", + "LabelAlbumArtMaxResHelp": "Najvišja ločljivost grafike albuma preko upnp:albumArtURI.", + "Items": "Elementi", + "ItemCount": "{0} elementov", + "Image": "Slika", + "HeaderRecordingPostProcessing": "Obdelava snemanja", + "Other": "Drugo", + "EnableQuickConnect": "Omogoči Quick Connect za ta server", + "EnableAutoCast": "Nastavi kot privzeto", + "Data": "Podatki", + "ButtonUseQuickConnect": "Uporabi Quick Connect", + "ButtonActivate": "Aktiviraj", + "Authorize": "Pooblasti" } From f9579e6f057702648c861d58c055bbb4110db8f4 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 26 Sep 2020 22:48:55 +0300 Subject: [PATCH 398/582] Fix theme video --- src/plugins/htmlVideoPlayer/plugin.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index d07e6aae58..32f96c8e2e 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -114,7 +114,6 @@ function tryRemoveElement(elem) { return new Promise(resolve => { const duration = 240; elem.style.animation = `htmlvideoplayer-zoomin ${duration}ms ease-in normal`; - hidePrePlaybackPage(); dom.addEventListener(elem, dom.whichAnimationEvent(), resolve, { once: true }); @@ -1328,17 +1327,24 @@ function tryRemoveElement(elem) { this.#videoDialog = dlg; this.#mediaElement = videoElement; + if (options.fullscreen) { + hidePrePlaybackPage(); + } + // don't animate on smart tv's, too slow if (options.fullscreen && browser.supportsCssAnimation() && !browser.slow) { return zoomIn(dlg).then(function () { return videoElement; }); } else { - hidePrePlaybackPage(); return videoElement; } }); } else { + if (options.fullscreen) { + hidePrePlaybackPage(); + } + return Promise.resolve(dlg.querySelector('video')); } } From c058a4e749ccbfe78a454b1dec5679f5e212ed79 Mon Sep 17 00:00:00 2001 From: josteinh Date: Sat, 26 Sep 2020 18:13:35 +0000 Subject: [PATCH 399/582] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 8e7bac93ee..b782782982 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1377,5 +1377,6 @@ "EnableQuickConnect": "Bruk rask tilkobling på denne tjeneren", "ButtonUseQuickConnect": "Bruk rask tilkobling", "ButtonActivate": "Aktiver", - "Authorize": "Autoriser" + "Authorize": "Autoriser", + "EnableAutoCast": "Sett som standard" } From 10fc9d1731675cb1e6068174c806224cb91f81cf Mon Sep 17 00:00:00 2001 From: 4d1m Date: Sat, 26 Sep 2020 17:45:20 +0000 Subject: [PATCH 400/582] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index b9a3a37821..7b5f1d49de 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1378,5 +1378,46 @@ "EnableQuickConnect": "Activează conectarea rapidă pe acest server", "ButtonUseQuickConnect": "Folosește conectarea rapidă", "ButtonActivate": "Activează", - "Authorize": "Autorizează" + "Authorize": "Autorizează", + "LabelMaxMuxingQueueSizeHelp": "Numărul maxim de pachete care pot fi tamponate în așteptarea inițializării tuturor fluxurilor. Încercați să o măriți dacă întâmpinați încă o eroare „Prea multe pachete tamponate pentru fluxul de ieșire” în jurnalele ffmpeg. Valoarea recomandată este 2048.", + "LabelMaxMuxingQueueSize": "Dimensiunea maximă a cozii de mux:", + "LabelTonemappingParamHelp": "Reglați algoritmul de mapare a tonurilor. Valorile recomandate și implicite sunt NaN. În general, lăsați-l necompletat.", + "LabelTonemappingParam": "Parametrii tonemapping:", + "LabelTonemappingPeakHelp": "Suprascrie semnalul/nominalul/ vârful de referință cu această valoare. Util când informațiile de vârf încorporate în metadatele afișate nu sunt fiabile sau când maparea tonurilor de la un interval inferior la un interval mai mare. Valorile recomandate și implicite sunt 0.", + "LabelTonemappingPeak": "Vârf de tonemapping:", + "LabelTonemappingThresholdHelp": "Parametrii algoritmului de cartografiere a tonurilor sunt reglați pentru fiecare scenă. Și un prag este folosit pentru a detecta dacă scena s-a schimbat sau nu. Dacă distanța dintre luminozitatea medie a cadrului curent și media curentă de rulare depășește o valoare prag, vom recalcula media scenei și luminozitatea maximă. Valorile recomandate și implicite sunt 0,8 și 0,2.", + "LabelTonemappingThreshold": "Pragul tonemapping:", + "LabelTonemappingDesatHelp": "Aplicați desaturare pentru evidențieri care depășesc acest nivel de luminozitate. Cu cât parametrul este mai mare, cu atât vor fi păstrate mai multe informații despre culoare. Această setare ajută la prevenirea culorilor neobișnuit de suflate pentru super-evidențiere, transformându-se (fără probleme) în alb. Acest lucru face ca imaginile să se simtă mai naturale, cu prețul reducerii informațiilor despre culorile din afara gamei. Valorile recomandate și implicite sunt 0 și 0,5.", + "LabelTonemappingDesat": "Tonemapping desat:", + "TonemappingRangeHelp": "Selectați gama de culori de ieșire. Auto este același cu intervalul de intrare.", + "LabelTonemappingRange": "Gama tonemapping:", + "TonemappingAlgorithmHelp": "Cartarea tonurilor poate fi reglată fin. Dacă nu sunteți familiarizați cu aceste opțiuni, păstrați doar valoarea implicită. Valoarea recomandată este Reinhard.", + "LabelTonemappingAlgorithm": "Selectați algoritmul de mapare a tonurilor pe care să îl utilizați:", + "AllowTonemappingHelp": "Cartarea tonurilor poate transforma gama dinamică a unui videoclip de la HDR la SDR, menținând în același timp detaliile și culorile imaginii, care sunt informații foarte importante pentru reprezentarea scenei originale. În prezent funcționează numai la transcodarea videoclipurilor cu metadate HDR10 sau HLG încorporate. Dacă redarea nu este netedă sau eșuează, vă rugăm să luați în considerare oprirea decodorului hardware corespunzător.", + "EnableTonemapping": "Activați maparea tonurilor", + "LabelOpenclDeviceHelp": "Acesta este dispozitivul OpenCL care este utilizat pentru tonemapping. Partea stângă a punctului este numărul platformei, iar partea dreaptă este numărul dispozitivului de pe platformă. Valoarea implicită este 0,0. Este necesar fișierul aplicației ffmpeg care conține metoda de accelerare hardware OpenCL.", + "LabelOpenclDevice": "Dispozitiv OpenCL:", + "LabelColorPrimaries": "Colori primare:", + "LabelColorTransfer": "Transfer de culoare:", + "LabelColorSpace": "Spațiul de culoare:", + "LabelVideoRange": "Gama video:", + "MediaInfoColorPrimaries": "Colori primare", + "MediaInfoColorTransfer": "Transfer de culoare", + "MediaInfoColorSpace": "Spațiul de culoare", + "MediaInfoVideoRange": "Gama video", + "QuickConnectNotActive": "Conectarea rapidă nu este activă pe acest server", + "QuickConnectNotAvailable": "Solicitați administratorului de server să permită conectarea rapidă", + "QuickConnectInvalidCode": "Cod de conectare rapidă nevalid", + "QuickConnectDescription": "Pentru a vă loga cu conectare rapidă, selectați butonul Conectare rapidă de pe dispozitivul de la care vă conectați și introduceți codul afișat mai jos.", + "QuickConnectDeactivated": "Conectarea rapidă a fost dezactivată înainte ca solicitarea de conectare să poată fi aprobată", + "QuickConnectAuthorizeFail": "Cod de conectare rapidă necunoscut", + "QuickConnectAuthorizeSuccess": "Cerere autorizată", + "QuickConnectAuthorizeCode": "Introduceți codul {0} pentru autentificare", + "QuickConnectActivationSuccessful": "Activat cu succes", + "QuickConnect": "Conectare rapidă", + "LabelQuickConnectCode": "Cod de conectare rapidă:", + "LabelKnownProxies": "Proxyuri cunoscute:", + "LabelCurrentStatus": "Stare curentă:", + "KnownProxiesHelp": "Lista separată prin virgulă a adreselor IP ale proxy-urilor cunoscute utilizate la conectarea la instanța dvs. Jellyfin. Acest lucru este necesar pentru a utiliza în mod corespunzător antetele X-Forwarded-For. Necesită o repornire după salvare.", + "EnableAutoCast": "Setați ca implicit" } From bfb4359c8d37d578335428e2524f89450688211d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jurij=20Martin=C4=8Di=C4=8D?= Date: Sun, 27 Sep 2020 00:08:02 +0000 Subject: [PATCH 401/582] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index cbb2095729..652e3e77be 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -1337,5 +1337,6 @@ "Data": "Podatki", "ButtonUseQuickConnect": "Uporabi Quick Connect", "ButtonActivate": "Aktiviraj", - "Authorize": "Pooblasti" + "Authorize": "Pooblasti", + "HeaderBranding": "Promocija" } From 56d71798381e036a243118815194be9e963b9fda Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 27 Sep 2020 17:48:29 +0300 Subject: [PATCH 402/582] Fix webOS 1.2 and lint --- src/scripts/settings/webSettings.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/scripts/settings/webSettings.js b/src/scripts/settings/webSettings.js index e28e0e84ff..80587713bf 100644 --- a/src/scripts/settings/webSettings.js +++ b/src/scripts/settings/webSettings.js @@ -1,25 +1,33 @@ let data; +const urlResolver = document.createElement('a'); + // `fetch` with `file:` support // Recent browsers seem to support `file` protocol under some conditions. // Based on https://github.com/github/fetch/pull/92#issuecomment-174730593 +// https://github.com/github/fetch/pull/92#issuecomment-512187452 async function fetchLocal(url, options) { + urlResolver.href = url; + + const requestURL = urlResolver.href; + return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest; xhr.onload = () => { // `file` protocol has invalid OK status let status = xhr.status; - if (xhr.responseURL.startsWith('file:') && status === 0) { + if (requestURL.startsWith('file:') && status === 0) { status = 200; } + /* eslint-disable-next-line compat/compat */ resolve(new Response(xhr.responseText, {status: status})); - } + }; xhr.onerror = () => { reject(new TypeError('Local request failed')); - } + }; xhr.open('GET', url); From 7ac0d5ef9bfbd1daa928ba673feab1e0254a3726 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Sun, 27 Sep 2020 15:46:11 +0000 Subject: [PATCH 403/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 144 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 143 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 68c0ab8793..65e73ba9a3 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -350,5 +350,147 @@ "GroupVersions": "Groepeer weergawes", "Guide": "Gids", "GuestStar": "Gaskunstenaar", - "GuideProviderLogin": "Skakel In" + "GuideProviderLogin": "Skakel In", + "HeaderSelectMetadataPath": "Kies Metadata Lêerpad", + "HeaderSelectCertificatePath": "Kies Sertifikaat Lêerpad", + "HeaderSecondsValue": "{0} Sekondes", + "HeaderSeasons": "Reekse", + "HeaderScenes": "Tonele", + "HeaderRunningTasks": "Aktiewe Take", + "HeaderRevisionHistory": "Terugvoer Geskiedenis", + "HeaderResponseProfileHelp": "Terugvoer profiele verleen 'n metode om spesiale inligting te kies wat aan die teostel gestuur word wanneer spesifieke media-tipes gespeel word.", + "HeaderResponseProfile": "Terugvoer Profiel", + "HeaderRemoveMediaLocation": "Verwyder Media Lokasie", + "HeaderRemoveMediaFolder": "Verwyder Media Gidslêer", + "HeaderRemoteControl": "Afstandbeheer", + "HeaderRemoteAccessSettings": "Eksterne Toegang Verstellings", + "HeaderRecordingPostProcessing": "Opname Naverwerking", + "HeaderRecordingOptions": "Opname Opsies", + "HeaderRecentlyPlayed": "Onlangs Gespeel", + "HeaderProfileServerSettingsHelp": "Hierdie waardes beheer hoe die bediener homself aan kliënte voorstel.", + "HeaderProfileInformation": "Profiel Inligting", + "HeaderPreferredMetadataLanguage": "Voorkeur Metadata Taal", + "HeaderPluginInstallation": "Inprop-toepassing Installasie", + "HeaderPleaseSignIn": "Skakel asseblief in", + "HeaderPlaybackError": "Terugspeel Fout", + "HeaderPlayback": "Media Terugspeel", + "HeaderPlayOn": "Speel Aan", + "HeaderPlayAll": "Speel Alles", + "HeaderPinCodeReset": "Herstel PIN Kode", + "HeaderPhotoAlbums": "Foto Albums", + "HeaderPaths": "Lêerpaaie", + "HeaderPasswordReset": "Herstel Wagwoord", + "HeaderPassword": "Wagwoord", + "HeaderParentalRatings": "Ouer Beperkings", + "HeaderOtherItems": "Ander Items", + "HeaderOnNow": "Nou Aan", + "HeaderNextVideoPlayingInValue": "Volgende Video Begin Speel in {0}", + "HeaderNextEpisodePlayingInValue": "Volgende Epsiode Begin Speel in {0}", + "HeaderNewDevices": "Nuwe Toestelle", + "HeaderNewApiKey": "Nuwe API Sleutel", + "HeaderNavigation": "Navigasie", + "HeaderMyMediaSmall": "My Media (klein)", + "HeaderMyMedia": "My Media", + "HeaderMyDevice": "My Toestel", + "HeaderMusicQuality": "Musiek Gehalte", + "HeaderMoreLikeThis": "Meer Soos Hierdie", + "HeaderMetadataSettings": "Metadata Verstellings", + "HeaderMediaFolders": "Media Gidslêers", + "HeaderMedia": "Media", + "HeaderLoginFailure": "Aansluit Fout", + "HeaderLiveTvTunerSetup": "Lewendige TV Inskakelaar Konfigurasie", + "HeaderLibrarySettings": "Versameling Verstellings", + "HeaderLibraryOrder": "Versameling Volgorde", + "HeaderLibraryFolders": "Versameling Gidslêers", + "HeaderLibraryAccess": "Versameling Toegang", + "HeaderLibraries": "Versamelings", + "HeaderLatestRecordings": "Nuutste Opnames", + "HeaderLatestMusic": "Nuutste Musiek", + "HeaderLatestMovies": "Nuutste Flieks", + "HeaderLatestMedia": "Nuutste Media", + "HeaderLatestEpisodes": "Nuutste Episodes", + "HeaderKodiMetadataHelp": "Om NFO metadata te aktiveer of deaktiveer, verander 'n versameling en spoor die metadata-berger afdeling.", + "HeaderKeepSeries": "Hou Reeks", + "HeaderKeepRecording": "Hou aan Opneem", + "HeaderInstantMix": "Onmiddelike Mengsel", + "HeaderInstall": "Installeer", + "HeaderImageSettings": "Beeld Verstellinge", + "HeaderImageOptions": "Beel Opsies", + "HeaderIdentifyItemHelp": "Sleutel een of meer soek kriteria in. Verwyder kriteris om soek-resultate te vermeerder.", + "HeaderIdentificationHeader": "Identifikasie Kopstukke", + "HeaderIdentificationCriteriaHelp": "Sleutel minstens een identifikasie kriterium in.", + "HeaderIdentification": "Identifikasie", + "HeaderHttpsSettings": "HTTPS Verstellinge", + "HeaderHttpHeaders": "HTTP Kopstukke", + "HeaderGuideProviders": "TV Gids Data Verskaffers", + "HeaderFrequentlyPlayed": "Gereeld Gespeel", + "HeaderForKids": "Vir Kinders", + "HeaderFetcherSettings": "Soeker Verstellings", + "HeaderFetchImages": "Soek Beelde:", + "HeaderFeatureAccess": "Funksie Toegang", + "HeaderExternalIds": "Eksterne IDs:", + "HeaderError": "Fout", + "HeaderEnabledFieldsHelp": "Ontkies 'n veld om dit te sluit en te verhoed dat die veld se data verander kan word.", + "HeaderEnabledFields": "Geaktiveerde Velde", + "HeaderEditImages": "Wysig Beelde", + "HeaderEasyPinCode": "Maklike PIN Kode", + "HeaderDVR": "DVO", + "HeaderDownloadSync": "Laai af en Synkroniseer", + "HeaderDirectPlayProfileHelp": "Voeg direkte speel profile om aan te dui watter formate die toestelle natuurlik kan hanteer.", + "HeaderDirectPlayProfile": "Direkte Speel Profiel", + "HeaderDevices": "Toestelle", + "HeaderDeviceAccess": "Toestel Toegang", + "HeaderDeveloperInfo": "Ontwikkelaar Inligting", + "HeaderDetectMyDevices": "Tel My Toestelle Op", + "HeaderDeleteTaskTrigger": "Verwyder Taak Sneller", + "HeaderDeleteProvider": "Verwyder Verskaffer", + "HeaderDeleteItems": "Verwyder Items", + "HeaderDeleteItem": "Verwyder Item", + "HeaderDeleteDevice": "Verwyder Toestel", + "HeaderDefaultRecordingSettings": "Standaard Opname Verstellings", + "HeaderDateIssued": "Datum Uitgereik", + "HeaderCustomDlnaProfiles": "Eie Profile", + "HeaderContinueListening": "Hou Aan Luister", + "HeaderContainerProfileHelp": "Houer profiele dui die beperkinge van enige toestelle aan wanneer spesifieke formate gespeel word. Indien 'n beperking van toepassing is sal die media getranskodeer word, selfs as die formaat gestel is vir direkte spel.", + "HeaderContainerProfile": "Houer Profiel", + "HeaderConnectionFailure": "Konneksie Fout", + "HeaderConnectToServer": "Konnekteer aan Bediener", + "HeaderConfirmRevokeApiKey": "Herroep API Sleutel", + "HeaderConfirmProfileDeletion": "Bevestig Profiel Verwydering", + "HeaderConfirmPluginInstallation": "Bevestig Inprop-Toepassing Installasie", + "HeaderConfigureRemoteAccess": "Stel Eksterne Toegang Op", + "HeaderCodecProfileHelp": "Codec profiele dui die beperkinge van 'n toestel aan wanneer spesifieke codecs gespeel word. As 'n beperking van toepassing is sal die media getranskodeer word, selfs al is die codec verstel vir direkte spel.", + "HeaderCodecProfile": "Codec Profiel", + "HeaderChapterImages": "Hoofstuk Beelde", + "HeaderChannelAccess": "Kanaal Toegang", + "HeaderCastAndCrew": "Rolverdeling en Bemanning", + "HeaderCancelSeries": "Kanselleer Reeks", + "HeaderCancelRecording": "Kanselleer Opname", + "HeaderBranding": "Handelsmerk", + "HeaderBlockItemsWithNoRating": "Blok items met geen of onherkenbare beperkingsinligting:", + "HeaderAudioSettings": "Klank Verstellings", + "HeaderAudioBooks": "Klankboeke", + "HeaderAppearsOn": "Verskyn Op", + "HeaderApp": "Toep", + "ApiKeysCaption": "Lys aktiewe API sleutels", + "HeaderApiKeysHelp": "Eksterne toepassings word vereis om 'n API sleutel te hê om te kommunikeer met die bediener. Sleutels word utigereik deur in te sluit in die normale verbruikers rekening of deur self 'n sleutel toe te staan aan die toepassing.", + "HeaderApiKeys": "API Sleutels", + "HeaderApiKey": "API Sleutel", + "HeaderAllowMediaDeletionFrom": "Laat Media Verwydering Toe Van", + "HeaderAlert": "Waarskuwing", + "HeaderAdmin": "Admin", + "HeaderAdditionalParts": "Addisionele Dele", + "HeaderAddUpdateImage": "Voeg/Dateer Beeld Op", + "HeaderAddToPlaylist": "Voeg tot Snitlys", + "HeaderAddToCollection": "Voeg by Versameling", + "HeaderActivity": "Aktiwiteit", + "HeaderActiveRecordings": "Aktiewe Opnames", + "HeaderActiveDevices": "Aktiewe Toestelle", + "HeaderAccessScheduleHelp": "Skep 'n toegangskedule om toegang te beperk tydens sekere tydgleuwe.", + "HeaderAccessSchedule": "Toegangsskedule", + "HardwareAccelerationWarning": "Die aktivering van hardeware versnelling mag stabiliteit belemmer in sekere omgewings. Verseker dat u bedryfstelsel en video drywers ten volle op datum is. As u probleme ervaar in die terugspeel van video nadat hierdie geaktiveer is sal u die verstelling terug moet stel na Geen.", + "HDPrograms": "HD programme", + "EncoderPresetHelp": "Kies 'n vinniger waarde om optrede te verbeter, of 'n stadiger waarde om gehalte te verbeter.", + "H264CrfHelp": "Die Konstante Tempo Faktor (KTF) is die standaard kwaliteit verstelling vir die x264 enkodeerder. Jy kan die waardes stel tussen 0 en 51, waar laer waardes beter gehalte lewer (ten koste van hoër lêer-groottes). Sinvolle waardes is tussen 18 en 28. Die standaard vir x264 is 23, gebruik dit dus as 'n beginpunt.", + "GuideProviderSelectListings": "Kies Gids" } From 53f62e6decd672eb55e40189791e8ac7fb788f14 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Sun, 27 Sep 2020 16:32:16 +0000 Subject: [PATCH 404/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 65e73ba9a3..c607e7597d 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -492,5 +492,6 @@ "HDPrograms": "HD programme", "EncoderPresetHelp": "Kies 'n vinniger waarde om optrede te verbeter, of 'n stadiger waarde om gehalte te verbeter.", "H264CrfHelp": "Die Konstante Tempo Faktor (KTF) is die standaard kwaliteit verstelling vir die x264 enkodeerder. Jy kan die waardes stel tussen 0 en 51, waar laer waardes beter gehalte lewer (ten koste van hoër lêer-groottes). Sinvolle waardes is tussen 18 en 28. Die standaard vir x264 is 23, gebruik dit dus as 'n beginpunt.", - "GuideProviderSelectListings": "Kies Gids" + "GuideProviderSelectListings": "Kies Gids", + "HeaderSelectMetadataPathHelp": "Soek of sleutel lêerpad in wat u vir metadata wil gebruik. Die gidslêer moet skryfbaar wees." } From 8c028719d1186d225638fbec179332960c6d7afa Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Sun, 27 Sep 2020 16:32:32 +0000 Subject: [PATCH 405/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index c607e7597d..3f1f4add64 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -493,5 +493,6 @@ "EncoderPresetHelp": "Kies 'n vinniger waarde om optrede te verbeter, of 'n stadiger waarde om gehalte te verbeter.", "H264CrfHelp": "Die Konstante Tempo Faktor (KTF) is die standaard kwaliteit verstelling vir die x264 enkodeerder. Jy kan die waardes stel tussen 0 en 51, waar laer waardes beter gehalte lewer (ten koste van hoër lêer-groottes). Sinvolle waardes is tussen 18 en 28. Die standaard vir x264 is 23, gebruik dit dus as 'n beginpunt.", "GuideProviderSelectListings": "Kies Gids", - "HeaderSelectMetadataPathHelp": "Soek of sleutel lêerpad in wat u vir metadata wil gebruik. Die gidslêer moet skryfbaar wees." + "HeaderSelectMetadataPathHelp": "Soek of sleutel lêerpad in wat u vir metadata wil gebruik. Die gidslêer moet skryfbaar wees.", + "HeaderSelectPath": "Kies Lêerpad" } From 21aec93e39b1eb300f890a70d0c0b3abfc91de49 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 26 Sep 2020 19:40:16 +0300 Subject: [PATCH 406/582] Fix subtitles display on Tizen 2.x - hide controls if only they are enabled --- src/plugins/htmlVideoPlayer/style.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/plugins/htmlVideoPlayer/style.css b/src/plugins/htmlVideoPlayer/style.css index 880ea86743..7d984b69aa 100644 --- a/src/plugins/htmlVideoPlayer/style.css +++ b/src/plugins/htmlVideoPlayer/style.css @@ -17,7 +17,11 @@ order: -1; } -video::-webkit-media-controls { +/* Controls are enabled for devices that don't support autoplay. They will be hidden when playback starts. + In Tizen 2.3 (and probably other old web engines), subtitles are located under '-webkit-media-controls' tree. + Therefore, we hide controls only if they are enabled. + */ +video[controls]::-webkit-media-controls { display: none !important; } From 0afed019fd91b264c46145c3bdf71f355d390868 Mon Sep 17 00:00:00 2001 From: Eben van Deventer Date: Sun, 27 Sep 2020 16:33:00 +0000 Subject: [PATCH 407/582] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 3f1f4add64..725c756d55 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -494,5 +494,8 @@ "H264CrfHelp": "Die Konstante Tempo Faktor (KTF) is die standaard kwaliteit verstelling vir die x264 enkodeerder. Jy kan die waardes stel tussen 0 en 51, waar laer waardes beter gehalte lewer (ten koste van hoër lêer-groottes). Sinvolle waardes is tussen 18 en 28. Die standaard vir x264 is 23, gebruik dit dus as 'n beginpunt.", "GuideProviderSelectListings": "Kies Gids", "HeaderSelectMetadataPathHelp": "Soek of sleutel lêerpad in wat u vir metadata wil gebruik. Die gidslêer moet skryfbaar wees.", - "HeaderSelectPath": "Kies Lêerpad" + "HeaderSelectPath": "Kies Lêerpad", + "HeaderSelectTranscodingPath": "Kies Transkodering Tydelike Lêerpad", + "HeaderSelectServerCachePathHelp": "Soek of sleutel die lêerpad in om te gebruik vir bediener kasgeheue. Die gidslêer moet skryfbaar wees.", + "HeaderSelectServerCachePath": "Kies Bediener Kasgeheue Lêerpad" } From 1888d06af8ed64ca7c8f70051e46d823598c02df Mon Sep 17 00:00:00 2001 From: Leo Date: Mon, 28 Sep 2020 10:27:16 +0000 Subject: [PATCH 408/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index e41fe91e1b..8b7dba1e5d 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1411,5 +1411,6 @@ "LabelTonemappingPeak": "Pico del mapeo de Tono:", "LabelTonemappingDesat": "Mapeo de tonos desaturado:", "UseDoubleRateDeinterlacingHelp": "Esta configuración utiliza la velocidad de campo al desentrelazar, a menudo denominado desentrelazado bob, que duplica los fotogramas del video para proporcionar un movimiento contínuo, como lo vería al ver un video entrelazado en un televisor.", - "PosterCard": "Tarjeta de presentación" + "PosterCard": "Tarjeta de presentación", + "EnableAutoCast": "Marcar como predeterminado" } From d5dad66eecad2331763393f26b436c3c55b63852 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Mon, 28 Sep 2020 12:32:07 +0000 Subject: [PATCH 409/582] 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 02fa8ef897..d52560e371 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1417,5 +1417,6 @@ "EnableQuickConnect": "在此服务器上启用 Quick Connect", "ButtonUseQuickConnect": "使用 Quick Connect", "ButtonActivate": "启用", - "Authorize": "授权" + "Authorize": "授权", + "EnableAutoCast": "设置为默认" } From e0b1a3b55f814509a439d752befc87425974857f Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Mon, 28 Sep 2020 15:55:39 +0300 Subject: [PATCH 410/582] Fix ES6 import - browser --- 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 501f8258de..d386243138 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -203,7 +203,7 @@ function initClient() { createConnectionManager().then(function () { console.debug('initAfterDependencies promises resolved'); - require(['globalize', 'browser'], function (globalize, browser) { + require(['globalize', 'browser'], function (globalize, {default: browser}) { window.Globalize = globalize; loadCoreDictionary(globalize).then(function () { onGlobalizeInit(browser, globalize); From c73cf7814db9d12056f9d6ac1ca5f9d5e2abe62f Mon Sep 17 00:00:00 2001 From: Frederik Andersen Date: Mon, 28 Sep 2020 18:03:04 +0000 Subject: [PATCH 411/582] Translated using Weblate (Danish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/da/ --- src/strings/da.json | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/strings/da.json b/src/strings/da.json index 59b726a2d6..0b1c08a54b 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -11,16 +11,16 @@ "AllChannels": "Alle kanaler", "AllEpisodes": "Alle episoder", "AllLibraries": "Alle biblioteker", - "AllowHWTranscodingHelp": "Tillader tuneren at transkode streams \"on the fly\". Dette kan hjælpe med at reducere transkodningen, der kræves af serveren.", + "AllowHWTranscodingHelp": "Tillad tuneren at omkode streams \"on the fly\". Dette kan hjælpe med at reducere omkodningen, der kræves af serveren.", "AllowMediaConversion": "Tillad media konvertering", "AllowMediaConversionHelp": "Giv eller nægt adgang til Konvertér Media featuren.", "AllowOnTheFlySubtitleExtraction": "Tillad udtræk af undertekster on-the-fly", - "AllowOnTheFlySubtitleExtractionHelp": "Indeholdte undertekster kan trækkes ud af videoer og leveres til klienter i ren tekst for at afhjælpe video omkodning. På nogle systemer kan dette tage lang tid og forårsage at afspilning kan hænge mens den udtrækker. Slå dette fra, for at have undertekster brændt ind i vha. video omkodningen når der ikke er indbygget understøttelse for ren tekst undertekster i klient enheden.", - "AllowRemoteAccess": "Tillad fjernadgang til denne Jellyfin Server.", + "AllowOnTheFlySubtitleExtractionHelp": "Indeholdte undertekster kan trækkes ud af videoer og leveres til klienter i ren tekst for at afhjælpe video omkodning. På nogle systemer kan dette tage lang tid og forårsage at afspilning kan hænge under udtrækningen. Slå dette fra, for at have undertekster brændt ind i video omkodningen når det er supporteret på klient enheden.", + "AllowRemoteAccess": "Tillad fjernadgang til denne server.", "AllowRemoteAccessHelp": "Hvis ikke markeret, vil alle fjernforbindelser blive blokeret.", "AllowedRemoteAddressesHelp": "Komma seperareret liste over IP adresser og netmasker der har ret til fjernadgang. Hvis blank er alle adresser tilladte.", "Anytime": "Altid", - "AroundTime": "Omkring {0}", + "AroundTime": "Omkring", "AsManyAsPossible": "Så mange som muligt", "AspectRatio": "Billedformat", "Audio": "Lyd", @@ -32,7 +32,7 @@ "MessageBrowsePluginCatalog": "Gennemse vores plugin-katalog for at se tilgængelige plugins.", "ButtonAddMediaLibrary": "Tilføj Mediebibliotek", "ButtonAddScheduledTaskTrigger": "Tilføj udløser", - "ButtonAddServer": "Tilføj Server", + "ButtonAddServer": "Tilføj server", "ButtonAddUser": "Tilføj bruger", "ButtonArrowLeft": "Venstre", "ButtonArrowRight": "Højre", @@ -739,9 +739,9 @@ "OptionOnInterval": "Interval", "OptionParentalRating": "Aldersgrænse", "OptionPlainStorageFolders": "Vis alle mapper som standardmapper", - "OptionPlainStorageFoldersHelp": "Når dette er aktiveret, bliver alle mapper vist i DIDL som \"object.container.storageFolder\" i stedet for mere specifikke typer, som f. eks. \"object.container.person.musicArtist\".", + "OptionPlainStorageFoldersHelp": "Alle mapper vises i DIDL som \"object.container.storageFolder\" i stedet for en mere specifik type, som f. eks. \"object.container.person.musicArtist\".", "OptionPlainVideoItems": "Vis alle videoer som standardvideo", - "OptionPlainVideoItemsHelp": "Når dette er aktiveret, bliver alle videoer vist i DIDL som \"object.item.videoItem\" i stedet for mere specifikke typer, som f. eks. \"object.item.videoItem.movie\".", + "OptionPlainVideoItemsHelp": "Alle videoer vises i DIDL som \"object.item.videoItem\" i stedet for en mere specifik type, som f. eks. \"object.item.videoItem.movie\".", "OptionPlayCount": "Gange afspillet", "OptionPremiereDate": "Præmieredato", "OptionReleaseDate": "Udgivelsesdato", @@ -1262,8 +1262,8 @@ "FetchingData": "Henter yderligere data", "Episode": "Afsnit", "DeinterlaceMethodHelp": "Vælg hvilken konverteringsmulighed der skal bruges til transkodning af indhold.", - "CopyStreamURLSuccess": "URL blev kopieret.", - "CopyStreamURL": "Kopiér stream URL", + "CopyStreamURLSuccess": "URL kopieret.", + "CopyStreamURL": "Kopier stream URL", "ClientSettings": "Klient Indstillinger", "ButtonSplit": "Opdel", "BoxSet": "Box Set", @@ -1276,5 +1276,10 @@ "Filter": "Filtrer", "New": "Nye", "ButtonTogglePlaylist": "Spilleliste", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "HeaderRemoteAccessSettings": "Fjernkontrolsindstillinger", + "HeaderHttpsSettings": "HTTPS Indstillinger", + "EnableAutoCast": "Brug som standard", + "Data": "Data", + "ButtonActivate": "Aktiver" } From 596f4fc4f2bffcb3c8940bd9764dd056527c31b5 Mon Sep 17 00:00:00 2001 From: Thomas Schwery Date: Mon, 28 Sep 2020 18:54:11 +0000 Subject: [PATCH 412/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index bf80687183..cb269f1f6f 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1414,5 +1414,7 @@ "ButtonUseQuickConnect": "Utiliser la Connexion Rapide", "ButtonActivate": "Activer", "Authorize": "Autoriser", - "LabelTonemappingParam": "Paramètre de mappage tonal :" + "LabelTonemappingParam": "Paramètre de mappage tonal :", + "LabelTonemappingPeakHelp": "Redéfini le signal/nominal/crête de référence. Utile lorsque l'information de crête intégrée dans les métadonnées d'affichage n'est pas fiable ou lorsque le mappage tonal d'une gamme inférieure à une gamme supérieure. La valeur recommandée et la valeur par défaut sont 0.", + "EnableAutoCast": "Définir comme Défaut" } From be2dcc69d81e31c2aa797ed5b73987ae92a0931e Mon Sep 17 00:00:00 2001 From: Thomas Schwery Date: Mon, 28 Sep 2020 19:11:26 +0000 Subject: [PATCH 413/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index cb269f1f6f..39b092d4b9 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1416,5 +1416,7 @@ "Authorize": "Autoriser", "LabelTonemappingParam": "Paramètre de mappage tonal :", "LabelTonemappingPeakHelp": "Redéfini le signal/nominal/crête de référence. Utile lorsque l'information de crête intégrée dans les métadonnées d'affichage n'est pas fiable ou lorsque le mappage tonal d'une gamme inférieure à une gamme supérieure. La valeur recommandée et la valeur par défaut sont 0.", - "EnableAutoCast": "Définir comme Défaut" + "EnableAutoCast": "Définir comme Défaut", + "LabelMaxMuxingQueueSizeHelp": "Nombre maximum de paquets qui peuvent être mis en mémoire tampon en attendant que tous les flux soient initialisés. Essayez de l'augmenter si vous rencontrez des erreurs \"Trop de paquets en mémoire tampon pour le flux de sortie\" dans les journaux ffmpeg. La valeur recommandée est 2048.", + "LabelMaxMuxingQueueSize": "Taille maximale de la queue de multiplexage :" } From 187330532832a1147c4362a1eabbd02bb2e0127d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 28 Sep 2020 20:03:26 +0000 Subject: [PATCH 414/582] Bump swiper from 6.2.0 to 6.3.2 Bumps [swiper](https://github.com/nolimits4web/Swiper) from 6.2.0 to 6.3.2. - [Release notes](https://github.com/nolimits4web/Swiper/releases) - [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md) - [Commits](https://github.com/nolimits4web/Swiper/compare/v6.2.0...v6.3.2) 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 d2072a85a9..17fbe8bf96 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.0.2", "sortablejs": "^1.12.0", - "swiper": "^6.2.0", + "swiper": "^6.3.2", "webcomponents.js": "^0.7.24", "whatwg-fetch": "^3.4.1" }, diff --git a/yarn.lock b/yarn.lock index a2695f11f4..e0b70e91bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11004,10 +11004,10 @@ svgo@^1.0.0, svgo@^1.3.2: unquote "~1.1.1" util.promisify "~1.0.0" -swiper@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/swiper/-/swiper-6.2.0.tgz#f9dafdc2ccb5d6dd2bd728c78db87605329cb50e" - integrity sha512-lOQeWRAHXwWPDu6k5cJYkf/eVRq2IUiHpMSGS143PVBg91J+2ZCXwM+Uv2sUckrZn3AMGcpcpnEBqD8Rwz9XGQ== +swiper@^6.3.2: + version "6.3.2" + resolved "https://registry.yarnpkg.com/swiper/-/swiper-6.3.2.tgz#3eb337ff58f425841a27400a7b0215234d94f3c1" + integrity sha512-mseVNXAsNNSfp3fHuZlMnsToc3ulM3X3on2EC8GMi4+/DwD9SSieSSIQroUbxkIMmCCIvpDN1Ese7o0Ls9I4lw== dependencies: dom7 "^3.0.0-alpha.7" ssr-window "^3.0.0-alpha.4" From 0a09cc303d6bcfde63aef26914aa418f302d48dd Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 28 Sep 2020 20:04:38 +0000 Subject: [PATCH 415/582] Bump query-string from 6.13.2 to 6.13.4 Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.13.2 to 6.13.4. - [Release notes](https://github.com/sindresorhus/query-string/releases) - [Commits](https://github.com/sindresorhus/query-string/compare/v6.13.2...v6.13.4) 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 d2072a85a9..bc9408b31e 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "material-design-icons-iconfont": "^6.1.0", "native-promise-only": "^0.8.0-a", "page": "^1.11.6", - "query-string": "^6.13.2", + "query-string": "^6.13.4", "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.0.2", "sortablejs": "^1.12.0", diff --git a/yarn.lock b/yarn.lock index a2695f11f4..56d53c88a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9232,10 +9232,10 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -query-string@^6.13.2: - version "6.13.2" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.2.tgz#3585aa9412c957cbd358fd5eaca7466f05586dda" - integrity sha512-BMmDaUiLDFU1hlM38jTFcRt7HYiGP/zt1sRzrIWm5zpeEuO1rkbPS0ELI3uehoLuuhHDCS8u8lhFN3fEN4JzPQ== +query-string@^6.13.4: + version "6.13.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.4.tgz#b35a9a3bd4955bce55f94feb0e819b3d0be6f66f" + integrity sha512-E2NPIeJoBEJGQNy3ib1k/Z/OkDBUKIo8IV2ZVwbKfoa65IS9unqWWUlLcbfU70Da0qNoxUZZA8CfKUjKLE641Q== dependencies: decode-uri-component "^0.2.0" split-on-first "^1.0.0" From 92ba7fe8be3540c6364aaba86d6fee8930005d4b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 28 Sep 2020 20:04:56 +0000 Subject: [PATCH 416/582] Bump jellyfin-apiclient from 1.4.1 to 1.4.2 Bumps [jellyfin-apiclient](https://github.com/jellyfin/jellyfin-apiclient-javascript) from 1.4.1 to 1.4.2. - [Release notes](https://github.com/jellyfin/jellyfin-apiclient-javascript/releases) - [Commits](https://github.com/jellyfin/jellyfin-apiclient-javascript/compare/v1.4.1...v1.4.2) 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 d2072a85a9..d58828cd90 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "hls.js": "^0.14.12", "howler": "^2.2.0", "intersection-observer": "^0.11.0", - "jellyfin-apiclient": "^1.4.1", + "jellyfin-apiclient": "^1.4.2", "jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto", "jquery": "^3.5.1", "jstree": "^3.3.10", diff --git a/yarn.lock b/yarn.lock index a2695f11f4..1eea893d58 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6343,10 +6343,10 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" -jellyfin-apiclient@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jellyfin-apiclient/-/jellyfin-apiclient-1.4.1.tgz#5e544a19bc001b16669eb7ecf46bb7d652365e41" - integrity sha512-BTTRucQ4tCLyiZ9kR9nAoxqxYp5/z+MCzkayy9vmMZ5C7jlVVsnxAXuuZjoa+AgXMjohXcM5Ci54myfJM1pRkA== +jellyfin-apiclient@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jellyfin-apiclient/-/jellyfin-apiclient-1.4.2.tgz#0a7ab7b371380cfb1bc9789204439b8dfdcdbafd" + integrity sha512-xUvt1G0cDlam6hJgC5Jr6EE5botzdEMGxeer3Vm0+zhM7nb8iFnRmQRmTpVbXtYS8NLiHsiUmK1RLlelgtWDYg== "jellyfin-noto@https://github.com/jellyfin/jellyfin-noto": version "1.0.3" From 9ad93128586a9743f698dedbdb2639dd9405b9b4 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 28 Sep 2020 20:05:38 +0000 Subject: [PATCH 417/582] Bump hls.js from 0.14.12 to 0.14.13 Bumps [hls.js](https://github.com/video-dev/hls.js) from 0.14.12 to 0.14.13. - [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.12...v0.14.13) 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 d2072a85a9..83c0a48f63 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "fast-text-encoding": "^1.0.3", "flv.js": "^1.5.0", "headroom.js": "^0.11.0", - "hls.js": "^0.14.12", + "hls.js": "^0.14.13", "howler": "^2.2.0", "intersection-observer": "^0.11.0", "jellyfin-apiclient": "^1.4.1", diff --git a/yarn.lock b/yarn.lock index a2695f11f4..c25bf41d03 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5479,10 +5479,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.12: - version "0.14.12" - resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.12.tgz#d57042115bee8570861482a8245cbd8b064a6cb4" - integrity sha512-ye0KUhGp/K36gUb49MV5sA+uvEy4GVX4mJur8Bd2uCyLKpZs2zVm6aPHLR8iF3SBKbDF6n/SDHVgrTQxKSmsZQ== +hls.js@^0.14.13: + version "0.14.13" + resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.13.tgz#824395a0631c8e32bf0e8de06873f1d89774bada" + integrity sha512-0u61R0t6DcgJ7Ofr0RUlfrNrkP2gn5pHL+5clKmITY1P7pztyj5aoVw2/9SbeoM6k4shg5iPyuZb+7I32ZzqFQ== dependencies: eventemitter3 "^4.0.3" url-toolkit "^2.1.6" From 18e4b3a226bdb1764796a990d0d2b95ffc66f2a7 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 28 Sep 2020 20:05:52 +0000 Subject: [PATCH 418/582] Bump del from 5.1.0 to 6.0.0 Bumps [del](https://github.com/sindresorhus/del) from 5.1.0 to 6.0.0. - [Release notes](https://github.com/sindresorhus/del/releases) - [Commits](https://github.com/sindresorhus/del/compare/v5.1.0...v6.0.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 34 +++++++++++++++++----------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index d2072a85a9..bb192b1ac2 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "copy-webpack-plugin": "^5.1.1", "css-loader": "^4.3.0", "cssnano": "^4.1.10", - "del": "^5.1.0", + "del": "^6.0.0", "eslint": "^7.9.0", "eslint-plugin-compat": "^3.5.1", "eslint-plugin-eslint-comments": "^3.2.0", diff --git a/yarn.lock b/yarn.lock index a2695f11f4..631021cd1a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3403,18 +3403,18 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -del@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" - integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== +del@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" + integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== dependencies: - globby "^10.0.1" - graceful-fs "^4.2.2" + globby "^11.0.1" + graceful-fs "^4.2.4" is-glob "^4.0.1" is-path-cwd "^2.2.0" - is-path-inside "^3.0.1" - p-map "^3.0.0" - rimraf "^3.0.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" slash "^3.0.0" delayed-stream@~1.0.0: @@ -4975,7 +4975,7 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -globby@^10.0.0, globby@^10.0.1: +globby@^10.0.0: version "10.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== @@ -5105,7 +5105,7 @@ got@^8.3.1: url-parse-lax "^3.0.0" url-to-options "^1.0.1" -graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.2: +graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.2, graceful-fs@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== @@ -6149,7 +6149,7 @@ is-path-cwd@^2.2.0: resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== -is-path-inside@^3.0.1: +is-path-inside@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== @@ -7935,10 +7935,10 @@ p-map-series@^1.0.0: dependencies: p-reduce "^1.0.0" -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" @@ -9830,7 +9830,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^3.0.0: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== From 5f6c4eb05d579572c2e879044bb119e0e82b71ac Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 28 Sep 2020 20:06:44 +0000 Subject: [PATCH 419/582] Bump eslint-plugin-import from 2.22.0 to 2.22.1 Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.22.0 to 2.22.1. - [Release notes](https://github.com/benmosher/eslint-plugin-import/releases) - [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md) - [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.22.0...v2.22.1) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index d2072a85a9..c9f39b035e 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "eslint": "^7.9.0", "eslint-plugin-compat": "^3.5.1", "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-import": "^2.21.2", + "eslint-plugin-import": "^2.22.1", "eslint-plugin-promise": "^4.2.1", "file-loader": "^6.1.0", "gulp": "^4.0.2", diff --git a/yarn.lock b/yarn.lock index a2695f11f4..50195c8b45 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3957,7 +3957,7 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -eslint-import-resolver-node@^0.3.3: +eslint-import-resolver-node@^0.3.4: version "0.3.4" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== @@ -3995,17 +3995,17 @@ eslint-plugin-eslint-comments@^3.2.0: escape-string-regexp "^1.0.5" ignore "^5.0.5" -eslint-plugin-import@^2.21.2: - version "2.22.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" - integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== +eslint-plugin-import@^2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== dependencies: array-includes "^3.1.1" array.prototype.flat "^1.2.3" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" - eslint-import-resolver-node "^0.3.3" + eslint-import-resolver-node "^0.3.4" eslint-module-utils "^2.6.0" has "^1.0.3" minimatch "^3.0.4" From f345c90f7ef993d206d7b1f7d54dbc774657ccfb Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 28 Sep 2020 20:07:13 +0000 Subject: [PATCH 420/582] Bump stylelint from 13.7.1 to 13.7.2 Bumps [stylelint](https://github.com/stylelint/stylelint) from 13.7.1 to 13.7.2. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/master/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/13.7.1...13.7.2) 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 d2072a85a9..6040d6daa7 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "postcss-loader": "^3.0.0", "postcss-preset-env": "^6.7.0", "style-loader": "^1.1.3", - "stylelint": "^13.7.1", + "stylelint": "^13.7.2", "stylelint-config-rational-order": "^0.1.2", "stylelint-no-browser-hacks": "^1.2.1", "stylelint-order": "^4.1.0", diff --git a/yarn.lock b/yarn.lock index a2695f11f4..e6f5380164 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10825,10 +10825,10 @@ stylelint-order@^4.1.0: postcss "^7.0.31" postcss-sorting "^5.0.1" -stylelint@^13.7.1: - version "13.7.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.7.1.tgz#bee97ee78d778a3f1dbe3f7397b76414973e263e" - integrity sha512-qzqazcyRxrSRdmFuO0/SZOJ+LyCxYy0pwcvaOBBnl8/2VfHSMrtNIE+AnyJoyq6uKb+mt+hlgmVrvVi6G6XHfQ== +stylelint@^13.7.2: + version "13.7.2" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.7.2.tgz#6f3c58eea4077680ed0ceb0d064b22b100970486" + integrity sha512-mmieorkfmO+ZA6CNDu1ic9qpt4tFvH2QUB7vqXgrMVHe5ENU69q7YDq0YUg/UHLuCsZOWhUAvcMcLzLDIERzSg== dependencies: "@stylelint/postcss-css-in-js" "^0.37.2" "@stylelint/postcss-markdown" "^0.36.1" From 542d3976b97bcc8a994f90ffafa18ea9cff916da Mon Sep 17 00:00:00 2001 From: Tomi Date: Tue, 29 Sep 2020 04:22:30 +0000 Subject: [PATCH 421/582] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 85e0f6f9a5..4c912e154d 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1179,5 +1179,8 @@ "HeaderDirectPlayProfileHelp": "Lisää suoratoistoprofiileja osoittaaksesi, missä muodossa laite tukee suoratoistoa.", "HeaderContainerProfileHelp": "Sisältöprofiilit ilmaisevat laitteen rajoitukset tiettyjä formaatteja toistettaessa. Jos rajoitusta sovelletaan, media koodataan uudelleen, vaikka muoto on määritetty suoratoistoa varten.", "EnableQuickConnect": "Salli nopea yhteyden muodostaminen tälle palvelimelle", - "ButtonUseQuickConnect": "Käytä nopeaa yhdistämistä" + "ButtonUseQuickConnect": "Käytä nopeaa yhdistämistä", + "ImportMissingEpisodesHelp": "Tiedot kadonneista jaksoista tuodaan tietokantaan ja näytetään kausina ja sarjoina. Tämä voi aiheuttaa huomattavasti pidempiä kirjastojen tarkistusajoja.", + "ImportFavoriteChannelsHelp": "Ainoastaan kanavat, jotka on merkitty suosikkiksi viritinlaitteessa, tuodaan.", + "HeaderTranscodingProfileHelp": "Lisää transkoodausprofiileja osoittamaan, mitä muotoja tulisi käyttää, kun transkoodaus on tarpeen." } From 87adf471b12209003b0aab1da95bce748871e6ac Mon Sep 17 00:00:00 2001 From: Tomi Date: Tue, 29 Sep 2020 04:28:44 +0000 Subject: [PATCH 422/582] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 4c912e154d..d1b794b17e 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1182,5 +1182,7 @@ "ButtonUseQuickConnect": "Käytä nopeaa yhdistämistä", "ImportMissingEpisodesHelp": "Tiedot kadonneista jaksoista tuodaan tietokantaan ja näytetään kausina ja sarjoina. Tämä voi aiheuttaa huomattavasti pidempiä kirjastojen tarkistusajoja.", "ImportFavoriteChannelsHelp": "Ainoastaan kanavat, jotka on merkitty suosikkiksi viritinlaitteessa, tuodaan.", - "HeaderTranscodingProfileHelp": "Lisää transkoodausprofiileja osoittamaan, mitä muotoja tulisi käyttää, kun transkoodaus on tarpeen." + "HeaderTranscodingProfileHelp": "Lisää transkoodausprofiileja osoittamaan, mitä muotoja tulisi käyttää, kun transkoodaus on tarpeen.", + "LabelAlbumArtMaxResHelp": "Upnp: albumArtURI -ominaisuuden kautta näytetyn albumikuvan enimmäistarkkuus.", + "KnownProxiesHelp": "Pilkuilla erotettu luettelo tunnettujen välityspalvelinten IP-osoitteista, joita käytetään muodostettaessa yhteyttä Jellyfin-palvelusi. Tämä vaaditaan X-Forwarded-For-otsikkojen oikeaan käyttöön. Uudelleenkäynnistys vaaditaan tallennuksen jälkeen." } From bc2f0610dd1215f805a1ef569b7ff79eb96fdf76 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 29 Sep 2020 08:49:55 +0000 Subject: [PATCH 423/582] Bump eslint from 7.9.0 to 7.10.0 Bumps [eslint](https://github.com/eslint/eslint) from 7.9.0 to 7.10.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.9.0...v7.10.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 32 ++++++++++++++++++++++++++------ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index c7de7e3443..25d9615a1b 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "css-loader": "^4.3.0", "cssnano": "^4.1.10", "del": "^6.0.0", - "eslint": "^7.9.0", + "eslint": "^7.10.0", "eslint-plugin-compat": "^3.5.1", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.22.1", diff --git a/yarn.lock b/yarn.lock index aac90f3c66..ba30699ff7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4024,7 +4024,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== @@ -4040,6 +4040,14 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" @@ -4052,10 +4060,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.9.0: - version "7.9.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.9.0.tgz#522aeccc5c3a19017cf0cb46ebfd660a79acf337" - integrity sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA== +eslint@^7.10.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.10.0.tgz#494edb3e4750fb791133ca379e786a8f648c72b9" + integrity sha512-BDVffmqWl7JJXqCjAK6lWtcQThZB/aP1HXSH1JKwGwv0LQEdvpR7qzNrUT487RM39B5goWuboFad5ovMBmD8yA== dependencies: "@babel/code-frame" "^7.0.0" "@eslint/eslintrc" "^0.1.3" @@ -4065,7 +4073,7 @@ eslint@^7.9.0: debug "^4.0.1" doctrine "^3.0.0" enquirer "^2.3.5" - eslint-scope "^5.1.0" + eslint-scope "^5.1.1" eslint-utils "^2.1.0" eslint-visitor-keys "^1.3.0" espree "^7.3.0" @@ -4123,6 +4131,13 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + estraverse@^4.1.0, estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" @@ -4133,6 +4148,11 @@ estraverse@^5.1.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== +estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" From fe8bddaa03ab8604963992c157638e27584468cf Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Tue, 29 Sep 2020 08:34:49 +0000 Subject: [PATCH 424/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 46518cdf4c..32d3cd187e 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -234,7 +234,7 @@ "DeleteMedia": "Xoá nội dung", "DeleteDeviceConfirmation": "Bạn có chắc chắn muốn xoá thiết bị này? Nó sẽ xuất hiện lại khi người dùng đăng nhập bằng thiết bị đó.", "DeinterlaceMethodHelp": "Chọn phương pháp khử xen kẽ để sử dụng khi phần mềm chuyển mã nội dung xen kẽ. Khi tăng tốc phần cứng hỗ trợ khử xen kẽ phần cứng được bật, trình khử xen kẽ phần cứng sẽ được sử dụng thay cho cài đặt này.", - "DefaultSubtitlesHelp": "Phụ đề được sử dụng dựa vào thiết lập mặc định (default) và bắt buộc (forced) trong phần thông tin bổ trợ. Tuỳ chọn ưu tiên ngôn ngữ sẽ có tác dụng khi có nhiều phụ đề khác nhau.", + "DefaultSubtitlesHelp": "Phụ đề được tải dựa trên mặc định và bắt buộc gắn cờ trong dữ liệu mô tả. Ngôn ngữ ưa thích được xem xét khi có nhiều lựa chọn.", "DefaultMetadataLangaugeDescription": "Đây là thiết lập mặc định chung, bạn có thể tuỳ chỉnh thiết lập riêng cho từng thư viện.", "DisplayModeHelp": "Chọn kiểu bố trí giao diện mà bạn muốn.", "Download": "Tải xuống", @@ -322,7 +322,7 @@ "ExitFullscreen": "Thoát khỏi chế độ toàn màn hình", "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.", + "ErrorPleaseSelectLineup": "Hãy chọn một danh sách và thử lại. Nếu không có danh sách nào, hãy kiểm tra tên đăng nhập của bạn, mật khẩu, và mã bưu điện cho đúng.", "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 kiểm tra xem máy chủ Jellyfin có quyền ghi/xoá vào thư mục đa phương tiện và thử xóa lại sau.", @@ -886,10 +886,10 @@ "MessagePlayAccessRestricted": "Việc phát lại nội dung này hiện bị hạn chế. Vui lòng liên hệ với quản trị viên máy chủ của bạn để biết thêm thông tin.", "MessagePasswordResetForUsers": "Những người dùng này đã đặt lại mật khẩu của họ. Giờ đây, họ có thể đăng nhập bằng mã pin đã được sử dụng để thực hiện đặt lại.", "MessageNoTrailersFound": "Cài đặt kênh đoạn giới thiệu để nâng cao trải nghiệm phim của bạn bằng cách thêm thư viện đoạn giới thiệu trên internet.", - "MessageNoServersAvailable": "Không có máy chủ nào được tìm thấy bằng cách sử dụng tính năng khám phá máy chủ tự động.", + "MessageNoServersAvailable": "Không tìm thấy máy chủ nào qua tính năng phát hiện máy chủ tự động.", "MessageNoPluginsInstalled": "Bạn chưa cài đặt plugin nào.", - "MessageNoMovieSuggestionsAvailable": "Hiện tại không có phim nào được đề xuất. Hãy bắt đầu xem và xếp hạng các bộ phim của bạn, sau đó quay lại để xem các đề xuất của bạn.", - "MessageNoGenresAvailable": "Cho phép một số bên cung cấp dữ liệu lấy các thể loại từ internet.", + "MessageNoMovieSuggestionsAvailable": "Hiện tại không có phim nào được đề xuất. Hãy xem và đánh giá các phim của bạn, sau đó quay lại đây để xem các đề xuất của bạn.", + "MessageNoGenresAvailable": "Kích hoạt cho phép một số bên cung cấp dữ liệu mô tả lấy các thể loại từ internet.", "MessageNoCollectionsAvailable": "Bộ sưu tập giúp bạn thưởng thức các nhóm Phim, Phim Bộ và Album được tùy chỉnh theo cách của bạn. Bấm nút + để tạo bộ sưu tập.", "MessageAddRepository": "Nếu bạn muốn thêm kho lưu trữ, hãy nhấp vào nút bên cạnh tiêu đề và điền thông tin được yêu cầu.", "LabelRepositoryNameHelp": "Tên tùy chỉnh để phân biệt kho lưu trữ này với bất kỳ kho lưu trữ nào khác được thêm vào máy chủ của bạn.", @@ -1130,7 +1130,7 @@ "MessageSyncPlayCreateGroupDenied": "Cần có quyền để tạo nhóm.", "MessageSyncPlayGroupDoesNotExist": "Không thể tham gia nhóm vì nó không tồn tại.", "MessageSyncPlayPlaybackPermissionRequired": "Cần có quyền phát lại.", - "MessageSyncPlayNoGroupsAvailable": "Không có nhóm nào. Bắt đầu phát thứ gì đó trước.", + "MessageSyncPlayNoGroupsAvailable": "Không có nhóm nào. Hãy phát thứ gì đó trước.", "MessageSyncPlayUserLeft": "{0} đã rời bỏ nhóm.", "MessageSyncPlayUserJoined": "{0} đã tham gia nhóm.", "MessageSyncPlayDisabled": "Phát đồng bộ SyncPlay đã tắt.", @@ -1236,8 +1236,8 @@ "Premieres": "Công chiếu", "Premiere": "Công chiếu", "PreferEmbeddedEpisodeInfosOverFileNames": "Ưu tiên thông tin tập được nhúng hơn tên tệp", - "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Điều này sử dụng thông tin tập từ siêu dữ liệu được nhúng nếu có.", - "PreferEmbeddedTitlesOverFileNamesHelp": "Điều này xác định tiêu đề hiển thị mặc định khi không có siêu dữ liệu internet hoặc siêu dữ liệu cục bộ.", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Nó sử dụng thông tin tập phim từ dữ liệu mô tả được nhúng nếu có sẵn.", + "PreferEmbeddedTitlesOverFileNamesHelp": "Điều này xác định tiêu đề hiển thị mặc định khi không có dữ liệu mô tả từ internet hoặc cục bộ.", "PreferEmbeddedTitlesOverFileNames": "Ưu tiên tiêu đề được nhúng hơn tên tệp", "MessageGetInstalledPluginsError": "Đã xảy ra lỗi khi nhận danh sách các plugin hiện được cài đặt.", "MessagePluginInstallError": "Đã xảy ra lỗi khi cài đặt plugin.", From b97e0e73ceb84d7c695e53d3888a4a24036dcab9 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Tue, 29 Sep 2020 09:01:10 +0000 Subject: [PATCH 425/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 32d3cd187e..78cc04c27f 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -99,7 +99,7 @@ "ButtonGotIt": "Hiểu rồi", "ButtonFullscreen": "Toàn màn hình", "ButtonForgotPassword": "Quên mật khẩu", - "ButtonEditOtherUserPreferences": "Chỉnh sửa hồ sơ, hình ảnh và sở thích cá nhân của người dùng này.", + "ButtonEditOtherUserPreferences": "Chỉnh sửa hồ sơ, ảnh và sở thích cá nhân của người dùng này.", "ButtonChangeServer": "Đổi máy chủ", "ButtonBack": "Lùi", "ButtonAudioTracks": "Track âm thanh", @@ -479,7 +479,7 @@ "LabelBurnSubtitles": "Nhúng phụ đề:", "LabelBlockContentWithTags": "Chặn những mục có nhãn:", "LabelBlastMessageIntervalHelp": "Xác định thời gian tồn tại giữa các tin nhắn (tính bằng giây).", - "LabelBlastMessageInterval": "Thời gian tồn tại của tin nhắn (giây)", + "LabelBlastMessageInterval": "Khoảng thời gian gửi tin nhắn tồn tại (giây)", "LabelBitrate": "Bitrate:", "LabelBirthYear": "Năm sinh:", "LabelBirthDate": "Ngày sinh:", From 90539890d0877120992bbfeb5bc08ceb55f41deb Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Tue, 29 Sep 2020 22:00:00 +0000 Subject: [PATCH 426/582] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 5dafa0d791..3e389d6a2d 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1352,5 +1352,7 @@ "MessagePluginInstallError": "Pri inštalácií zásuvného modulu došlo k chybe.", "NextTrack": "Ďalšia", "LabelUnstable": "Nestabilný", - "PlaybackRate": "Rýchlosť prehrávania" + "PlaybackRate": "Rýchlosť prehrávania", + "ButtonActivate": "Aktivovať", + "Authorize": "Autorizovať" } From bf0c0751e094ddeb3dd56e62c3b91472cab3a44d Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Wed, 30 Sep 2020 04:56:00 +0000 Subject: [PATCH 427/582] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/strings/id.json b/src/strings/id.json index df1d6d40f6..e819810b8c 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -794,5 +794,28 @@ "LabelMaxStreamingBitrateHelp": "Tentukan bitrate maksimum saat streaming.", "LabelMaxScreenshotsPerItem": "Jumlah tangkapan layar maksimum per item :", "EnableAutoCast": "Ditetapkan sebagai default", - "ButtonUseQuickConnect": "Gunakan Koneksi Cepat" + "ButtonUseQuickConnect": "Gunakan Koneksi Cepat", + "LabelSortTitle": "Urutkan judul :", + "LabelSortOrder": "Sortir urutan :", + "LabelSortBy": "Urutkan dengan :", + "LabelSonyAggregationFlagsHelp": "Menentukan konten elemen aggregationFlags di guci: schemas-sonycom: av namespace.", + "LabelSonyAggregationFlags": "Bendera agregasi Sony :", + "LabelSkipIfGraphicalSubsPresentHelp": "Mempertahankan versi teks dari subtitel akan menghasilkan pengiriman yang lebih efisien dan mengurangi kemungkinan transcoding video.", + "LabelSkipIfGraphicalSubsPresent": "Lewati jika video sudah berisi subtitel tersemat", + "LabelSkipIfAudioTrackPresentHelp": "Hapus centang ini untuk memastikan semua video memiliki subtitle, apa pun bahasa audionya.", + "LabelSkipIfAudioTrackPresent": "Lewati jika trek audio default cocok dengan bahasa unduhan", + "LabelSkipForwardLength": "", + "LabelSkipBackLength": "", + "LabelSize": "Ukuran :", + "LabelSimultaneousConnectionLimit": "Batas aliran stream :", + "LabelSerialNumber": "Nomor seri", + "LabelSendNotificationToUsers": "Kirim notifikasi ke :", + "LabelSelectVersionToInstall": "Pilih versi untuk diinstal :", + "LabelSelectUsers": "Pilih pengguna :", + "LabelSelectFolderGroupsHelp": "Folder yang tidak dicentang akan ditampilkan dengan sendirinya dalam tampilannya sendiri.", + "LabelSelectFolderGroups": "Secara otomatis mengelompokkan konten dari folder berikut ke dalam tampilan seperti Film, Musik dan TV :", + "LabelSeasonNumber": "Nomor musim :", + "EnableFasterAnimationsHelp": "Gunakan animasi dan transisi yang lebih cepat", + "EnableFasterAnimations": "Animasi lebih cepat", + "LabelScreensaver": "Screen saver :" } From 0969a5192bd351288aa9a548bf8a45c5bcc74c05 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Wed, 30 Sep 2020 05:05:00 +0000 Subject: [PATCH 428/582] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 56 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/src/strings/id.json b/src/strings/id.json index e819810b8c..d6a2ef23bd 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -9,7 +9,7 @@ "LabelLanguage": "Bahasa :", "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):", + "LabelTimeLimitHours": "Batas waktu (jam) :", "LabelYoureDone": "Kamu sudah selesai!", "MessageNothingHere": "Tidak ada disini.", "MessagePleaseEnsureInternetMetadata": "Pastikan unduh metadata dari internet diaktifkan.", @@ -796,7 +796,7 @@ "EnableAutoCast": "Ditetapkan sebagai default", "ButtonUseQuickConnect": "Gunakan Koneksi Cepat", "LabelSortTitle": "Urutkan judul :", - "LabelSortOrder": "Sortir urutan :", + "LabelSortOrder": "Urutkan perintah :", "LabelSortBy": "Urutkan dengan :", "LabelSonyAggregationFlagsHelp": "Menentukan konten elemen aggregationFlags di guci: schemas-sonycom: av namespace.", "LabelSonyAggregationFlags": "Bendera agregasi Sony :", @@ -817,5 +817,55 @@ "LabelSeasonNumber": "Nomor musim :", "EnableFasterAnimationsHelp": "Gunakan animasi dan transisi yang lebih cepat", "EnableFasterAnimations": "Animasi lebih cepat", - "LabelScreensaver": "Screen saver :" + "LabelScreensaver": "Screen saver :", + "LabelUserLoginAttemptsBeforeLockout": "Upaya masuk yang gagal sebelum pengguna terkunci :", + "LabelUserLibraryHelp": "Pilih pustaka pengguna mana yang akan ditampilkan ke perangkat. Biarkan kosong untuk mewarisi setelan default.", + "LabelUserLibrary": "Pustaka pengguna :", + "LabelUserAgent": "Agen pengguna :", + "LabelUser": "Pengguna :", + "LabelUseNotificationServices": "Gunakan layanan berikut :", + "LabelTypeText": "Teks", + "LabelTypeMetadataDownloaders": "{0} pengunduh metadata :", + "LabelType": "Tipe :", + "LabelTunerType": "Jenis tuner :", + "LabelTunerIpAddress": "Alamat IP Tuner :", + "LabelTriggerType": "Jenis Pemicu :", + "LabelTranscodingThreadCountHelp": "Pilih jumlah maksimum utas yang akan digunakan saat transcoding. Mengurangi jumlah utas akan menurunkan penggunaan CPU tetapi mungkin tidak mengonversi cukup cepat untuk pengalaman pemutaran yang lancar.", + "LabelTranscodingThreadCount": "Jumlah utas transcoding :", + "LabelTranscodingProgress": "Proses transcoding :", + "LabelTranscodingFramerate": "Transcoding framerate :", + "LabelTranscodes": "Transcode :", + "LabelTrackNumber": "Nomor jejak :", + "LabelTitle": "Judul :", + "LabelTime": "Waktu :", + "LabelTheme": "Tema :", + "LabelTextSize": "Ukuran teks :", + "LabelTextColor": "Warna teks :", + "LabelTextBackgroundColor": "Warna latar teks :", + "LabelTagline": "Slogan :", + "LabelTag": "Tag :", + "LabelTVHomeScreen": "Layar utama mode TV :", + "LabelSyncPlayAccess": "Akses SyncPlay", + "LabelSyncPlayAccessNone": "Dinonaktifkan untuk pengguna ini", + "LabelSyncPlayAccessJoinGroups": "Izinkan pengguna untuk bergabung dengan grup", + "LabelSyncPlayAccessCreateAndJoinGroups": "Izinkan pengguna untuk membuat dan bergabung dengan grup", + "LabelSyncPlayLeaveGroupDescription": "Nonaktifkan SyncPlay", + "LabelSyncPlayLeaveGroup": "Meninggalkan grup", + "LabelSyncPlayNewGroupDescription": "Buat grup baru", + "LabelSyncPlayNewGroup": "Grup baru", + "LabelSyncPlaySyncMethod": "Metode sinkronisasi :", + "LabelSyncPlayPlaybackDiff": "Perbedaan waktu pemutaran :", + "MillisecondsUnit": "ms", + "LabelSupportedMediaTypes": "Jenis Media yang Didukung :", + "LabelSubtitlePlaybackMode": "Mode subtitle :", + "LabelSubtitleFormatHelp": "Contoh : srt", + "LabelSubtitleDownloaders": "Pengunduh subtitle :", + "LabelStreamType": "Jenis Stream :", + "LabelStopping": "Berhenti", + "LabelStopWhenPossible": "Hentikan jika memungkinkan :", + "LabelStatus": "Status :", + "LabelStartWhenPossible": "Mulailah jika memungkinkan :", + "LabelSportsCategories": "Kategori olahraga :", + "LabelSpecialSeasonsDisplayName": "Nama tampilan musim spesial :", + "LabelSource": "Sumber :" } From 92dfd129dcfd79840f2f460ca82a99727d28d611 Mon Sep 17 00:00:00 2001 From: Frederik Andersen Date: Wed, 30 Sep 2020 09:43:38 +0000 Subject: [PATCH 429/582] Translated using Weblate (Danish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/da/ --- src/strings/da.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/strings/da.json b/src/strings/da.json index 0b1c08a54b..16d31eddc6 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -27,7 +27,7 @@ "BirthDateValue": "Født: {0}", "BirthLocation": "Fødselslokation", "BirthPlaceValue": "Fødselssted: {0}", - "BookLibraryHelp": "Lyd- og tekstbøger er understøttet. Se {0}guiden til navngivning af bøger{1}.", + "BookLibraryHelp": "Lyd- og tekstbøger er understøttet. Se {0}bognavngivningsguiden{1}.", "Browse": "Gennemse", "MessageBrowsePluginCatalog": "Gennemse vores plugin-katalog for at se tilgængelige plugins.", "ButtonAddMediaLibrary": "Tilføj Mediebibliotek", @@ -107,10 +107,10 @@ "Edit": "Rediger", "EditImages": "Rediger billeder", "EditSubtitles": "Rediger undertekster", - "EnableCinemaMode": "Aktiver Biograftilstand", - "EnableColorCodedBackgrounds": "Aktiver Farvekodet baggrunde", + "EnableCinemaMode": "Biograftilstand", + "EnableColorCodedBackgrounds": "Farvekodet baggrunde", "EnableHardwareEncoding": "Aktiver hardware indkoding", - "EnablePhotos": "Vis fotoer", + "EnablePhotos": "Vis fotos", "EnablePhotosHelp": "Billeder registreres og vises sammen med andre mediefiler.", "EnableStreamLooping": "Auto-gentag live streams", "EnableStreamLoopingHelp": "Aktiver dette hvis live streams kun indeholder få sekunders data og skal efterspørgsel hele tiden. Aktivering af dette uden det er nødvendigt kan forårsage problemer.", @@ -156,8 +156,8 @@ "HeaderAdditionalParts": "Andre stier", "HeaderAlert": "Advarsel", "HeaderAllowMediaDeletionFrom": "Tillad Media Sletning Fra", - "HeaderApiKey": "API Nøgle", - "HeaderApiKeys": "API Nøgler", + "HeaderApiKey": "API-nøgle", + "HeaderApiKeys": "API-nøgler", "HeaderApiKeysHelp": "Eksterne applikationer skal have en API-nøgle for at kunne kommunikere med Jellyfin. Nøgler udstedes ved at logge ind med en Jellyfin konto, eller ved manuelt at tildele applikationen en nøgle.", "HeaderAudioSettings": "Lydindstillinger", "HeaderBlockItemsWithNoRating": "Klokér titler uden eller med ukendt bedømmelses information:", @@ -232,7 +232,7 @@ "HeaderMoreLikeThis": "Mere Som Denne", "HeaderMyDevice": "Min Enhed", "HeaderMyMedia": "Mine medier", - "HeaderNewApiKey": "Ny API Nøgle", + "HeaderNewApiKey": "Ny API-nøgle", "HeaderNewDevices": "Nye Enheder", "HeaderOnNow": "Vises Nu", "HeaderOtherItems": "Andre elementer", @@ -329,7 +329,7 @@ "LabelAllowedRemoteAddresses": "Fjernadgang IP adresse filter:", "LabelAllowedRemoteAddressesMode": "Fjernadgang IP adresse filter mode:", "LabelAppName": "App navn", - "LabelAppNameExample": "F. eks: Sickbeard, Sonarr", + "LabelAppNameExample": "F.eks: Sickbeard, Sonarr", "LabelArtists": "Artister:", "LabelArtistsHelp": "Angiv flere ved at sætte ;", "LabelAudioLanguagePreference": "Foretrukket lydsprog:", @@ -983,7 +983,7 @@ "DisplayModeHelp": "Vælg det ønskede tema for grænsefladen.", "Down": "Ned", "DownloadsValue": "{0} hentninger", - "DropShadow": "Drop Skygge", + "DropShadow": "Baggrundsskygge", "EditMetadata": "Redigér metadata", "EnableBackdropsHelp": "Vis baggrundsbilleder i baggrunden af nogle sider mens man gennemser biblioteket.", "EnableDisplayMirroring": "Visning afspejling", From 896e6a95898a60ffe917019ed3f40db3435d56d5 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Wed, 30 Sep 2020 09:38:05 +0000 Subject: [PATCH 430/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 78cc04c27f..035835a698 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -176,7 +176,7 @@ "DatePlayed": "Ngày phát", "DateAdded": "Ngày thêm vào", "CustomDlnaProfilesHelp": "Tạo một bộ thiết lập tuỳ chọn dành cho một thiết bị mới hoặc thay thế một thiết lập hệ thống.", - "CriticRating": "Đánh giá phê bình", + "CriticRating": "Đánh giá chấm điểm", "CopyStreamURLSuccess": "URL đã được sao chép.", "CopyStreamURL": "Sao Chép URL Phát Sóng", "Continuing": "Tiếp tục", @@ -464,7 +464,7 @@ "LabelCustomCss": "CSS tuỳ chọn:", "LabelCustomCertificatePathHelp": "Đường dẫn đến tập tin PKCS #12 chứa chứng chỉ (certificate) và khoá riêng (private key) để bật tính năng TLS trên một tên miền tuỳ chọn.", "LabelCustomCertificatePath": "Đường dẫn đến chứng chỉ SSL:", - "LabelCriticRating": "Đánh giá phê bình:", + "LabelCriticRating": "Đánh giá chấm điểm:", "LabelCorruptedFrames": "Những khung hình bị lỗi:", "LabelContentType": "Loại nội dung:", "LabelCommunityRating": "Đánh giá của cộng đồng:", @@ -1054,7 +1054,7 @@ "OptionDateAddedFileTime": "Sử dụng ngày tạo tệp", "OptionDaily": "Hằng ngày", "OptionCustomUsers": "Tùy Chọn", - "OptionCriticRating": "Xếp Hạng Phê Bình", + "OptionCriticRating": "Xếp Hạng Chấm Điểm", "OptionBluray": "Đĩa Blu-ray", "OptionAutomaticallyGroupSeriesHelp": "Loạt phim nằm trên nhiều thư mục trong thư viện này sẽ được tự động hợp nhất thành một loạt phim duy nhất.", "OptionAutomaticallyGroupSeries": "Tự động gộp các bộ phim được trải dài trên nhiều thư mục", From 89f3036b5ad84935421b584d8328a90c884865cf Mon Sep 17 00:00:00 2001 From: Frederik Andersen Date: Wed, 30 Sep 2020 09:54:24 +0000 Subject: [PATCH 431/582] Translated using Weblate (Danish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/da/ --- src/strings/da.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/da.json b/src/strings/da.json index 16d31eddc6..e60206a133 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -331,7 +331,7 @@ "LabelAppName": "App navn", "LabelAppNameExample": "F.eks: Sickbeard, Sonarr", "LabelArtists": "Artister:", - "LabelArtistsHelp": "Angiv flere ved at sætte ;", + "LabelArtistsHelp": "Separer flere kunstnere ved at bruge semikolon.", "LabelAudioLanguagePreference": "Foretrukket lydsprog:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Genopfrisk automatisk metadata fra internettet:", "LabelBindToLocalNetworkAddress": "Bind til lokal netværksadresse:", @@ -735,7 +735,7 @@ "OptionImdbRating": "IMDB bedømmelse", "OptionMax": "Maks", "OptionMissingEpisode": "Manglende episoder", - "OptionNew": "Ny...", + "OptionNew": "Ny…", "OptionOnInterval": "Interval", "OptionParentalRating": "Aldersgrænse", "OptionPlainStorageFolders": "Vis alle mapper som standardmapper", @@ -1254,7 +1254,7 @@ "LabelCorruptedFrames": "Korrupte frames:", "LabelBitrate": "Bitrate:", "LabelAuthProvider": "Autentificeringsudbyder:", - "LabelAudioSampleRate": "Lydeksempelfrekvens:", + "LabelAudioSampleRate": "Lydopsamlingsfrekvens:", "LabelAudioCodec": "Lyd codec:", "LabelAudioChannels": "Lyd kanaler:", "LabelAudioBitrate": "Lyd bitrate:", From 96fb126c3f46a08cdd243d6fd7203b10c5da0e67 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Wed, 30 Sep 2020 10:42:00 +0000 Subject: [PATCH 432/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 035835a698..a6fc3a856a 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -880,7 +880,7 @@ "EnableDecodingColorDepth10Vp9": "Bật giải mã phần cứng 10 bit cho VP9", "EnableDecodingColorDepth10Hevc": "Bật giải mã phần cứng 10-bit cho HEVC", "Data": "Dữ liệu", - "ButtonUseQuickConnect": "Dùng Kết Nhanh", + "ButtonUseQuickConnect": "Dùng kết nối nhanh", "ButtonActivate": "Kích hoạt", "Authorize": "Ủy quyền", "MessagePlayAccessRestricted": "Việc phát lại nội dung này hiện bị hạn chế. Vui lòng liên hệ với quản trị viên máy chủ của bạn để biết thêm thông tin.", From bb975660d346b8b585ea19a399fbd287dc0ef9a5 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Wed, 30 Sep 2020 17:57:30 +0000 Subject: [PATCH 433/582] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index 20df7a795a..a948827cd6 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1373,5 +1373,42 @@ "LabelAlbumArtMaxResHelp": "Максимальное разрешение обложки альбома, являемое через свойство upnp:albumArtURI.", "Image": "Рисунок", "Other": "Другое", - "Data": "Данные" + "Data": "Данные", + "LabelMaxMuxingQueueSize": "Макс. размер очереди мультиплексирования:", + "LabelTonemappingParam": "Параметр сопоставления цветов:", + "LabelTonemappingPeak": "Пиковое сопоставление тонов:", + "LabelTonemappingThreshold": "Порог сопоставления тонов:", + "LabelTonemappingDesat": "Сопоставление тонов обесцвечивания:", + "TonemappingRangeHelp": "Выберите цветовой диапазон вывода. Авто то же, что и диапазон ввода.", + "LabelTonemappingRange": "Диапазон сопоставления тонов:", + "LabelTonemappingAlgorithm": "Выбрать используемый алгоритм сопоставления тонов:", + "EnableTonemapping": "Включить сопоставление тонов", + "LabelOpenclDevice": "Устройство OpenCL:", + "LabelColorPrimaries": "Основные цвета:", + "LabelColorTransfer": "Передача цвета:", + "LabelColorSpace": "Цветовое пространство:", + "LabelVideoRange": "Диапазон видео:", + "MediaInfoColorPrimaries": "Основные цвета", + "MediaInfoColorTransfer": "Передача цвета", + "MediaInfoColorSpace": "Цветовое пространство", + "MediaInfoVideoRange": "Диапазон видео", + "QuickConnectNotActive": "Quick connect неактивен на данном сервере", + "QuickConnectNotAvailable": "Попросите администратора сервера включить Quick Connect", + "QuickConnectInvalidCode": "Неверный код Quick Connect", + "QuickConnectDescription": "Чтобы войти в систему с помощью Quick Connect, нажмите кнопку «Quick Connect» на устройстве, с которого вы выполняете вход, и введите указанный ниже код.", + "QuickConnectDeactivated": "Quick connect был деактивирован до утверждения запроса на вход", + "QuickConnectAuthorizeFail": "Неопознанный код connect code", + "QuickConnectAuthorizeSuccess": "Запрос авторизован", + "QuickConnectAuthorizeCode": "Введите код {0} для входа", + "QuickConnectActivationSuccessful": "Активировано успешно", + "QuickConnect": "Quick Connect", + "LabelQuickConnectCode": "Код Quick connect:", + "LabelKnownProxies": "Известные прокси:", + "LabelCurrentStatus": "Текущее состояние:", + "KnownProxiesHelp": "Разделенный запятыми список IP-адресов известных прокси, используемых при подключении к вашему экземпляру Jellyfin. Это необходимо для правильного использования заголовков X-Forwarded-For. Требуется перезагрузка после сохранения.", + "EnableQuickConnect": "Включить quick connect на этом сервере", + "EnableAutoCast": "Задать по умолчанию", + "ButtonUseQuickConnect": "Использовать Quick Connect", + "ButtonActivate": "Активация", + "Authorize": "Авторизация" } From 8bcce836efcd0aea33af427d2610057c836ca23b Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Wed, 30 Sep 2020 20:56:25 +0000 Subject: [PATCH 434/582] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 3e389d6a2d..6ca0d23193 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -202,7 +202,7 @@ "HeaderPinCodeReset": "Obnoviť PIN kód", "HeaderPlayAll": "Prehrať všetko", "HeaderPlaybackError": "Chyba prehrávania", - "HeaderPleaseSignIn": "Prosím prihláste sa", + "HeaderPleaseSignIn": "Prihláste sa, prosím", "HeaderPreferredMetadataLanguage": "Uprednostňovaný jazyk metadát", "HeaderProfileInformation": "Informácie o profile", "HeaderRecentlyPlayed": "Nedávno prehrávané", @@ -215,7 +215,7 @@ "HeaderSelectPath": "Vybrať priečinok", "HeaderSendMessage": "Poslať správu", "HeaderServerSettings": "Nastavenia servera", - "HeaderSetupLibrary": "Nastavte Vaše knižnice médií", + "HeaderSetupLibrary": "Nastavenie Vašich knižníc médií", "HeaderSortBy": "Zoradiť podľa", "HeaderStartNow": "Začať teraz", "HeaderStopRecording": "Zastaviť nahrávanie", @@ -479,7 +479,7 @@ "Mobile": "Mobil", "Monday": "Pondelok", "MoreFromValue": "Viac od {0}", - "MoreUsersCanBeAddedLater": "Ďalší používatelia môžu byť pridaný neskôr cez Dashboard.", + "MoreUsersCanBeAddedLater": "Ďalších používateľov môžete neskôr pridať cez Dashboard.", "MoveLeft": "Posunúť vľavo", "MoveRight": "Posunúť vpravo", "Movies": "Filmy", @@ -712,7 +712,7 @@ "Vertical": "Vertikálne", "ViewAlbum": "Zobraziť album", "Wednesday": "Streda", - "WelcomeToProject": "Vitajte v Jellyfin!", + "WelcomeToProject": "Vitajte v Jellyfine!", "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.", "Yes": "Áno", "Yesterday": "Včera", @@ -758,7 +758,7 @@ "DashboardOperatingSystem": "Operačný systém: {0}", "DashboardArchitecture": "Architektúra: {0}", "LabelWeb": "Web:", - "LeaveBlankToNotSetAPassword": "Toto pole môžete nechať prázdne pre nastavenie bez hesla.", + "LeaveBlankToNotSetAPassword": "Môžete nechať prázdne pre nastavenie bez hesla.", "List": "Zoznam", "Logo": "Logo", "MessageImageFileTypeAllowed": "Sú podporované iba súbory JPEG a PNG.", @@ -1244,7 +1244,7 @@ "PlaybackErrorNoCompatibleStream": "Tento klient nie je kompatibilný s médiom a server neposiela kompatibilný mediálny formát.", "AllowFfmpegThrottlingHelp": "Keď sa transkódovanie alebo remuxovanie dostane do bodu, kedy je dostatočne vopred voči súčasnej polohe prehrávania, pozastaví proces aby spotrebovával menej zdrojov. Toto je najviac užitočné, keď sa pozerá obsah bez pretáčania. Vypnite túto možnosť, pokiaľ má vaše prehrávanie problémy.", "AllowFfmpegThrottling": "Obmedzenie transkódovania", - "PreferEmbeddedEpisodeInfosOverFileNames": "Preferovať vložen[ informáciu o epizóde pred názvom súboru", + "PreferEmbeddedEpisodeInfosOverFileNames": "Preferovať vloženú informáciu o epizóde pred názvom súboru", "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Toto využíva informáciu o epizóde z vložených metadát, pokiaľ sú dostupne.", "ClientSettings": "Nastavenie klienta", "Album": "Album", @@ -1354,5 +1354,6 @@ "LabelUnstable": "Nestabilný", "PlaybackRate": "Rýchlosť prehrávania", "ButtonActivate": "Aktivovať", - "Authorize": "Autorizovať" + "Authorize": "Autorizovať", + "ButtonUseQuickConnect": "Použiť rýchle pripojenie" } From 56113e60966c399233e0afc36b8094fcba021bee Mon Sep 17 00:00:00 2001 From: zack871024 Date: Wed, 30 Sep 2020 23:06:12 +0000 Subject: [PATCH 435/582] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 0b953aa8dd..07ce7bfa4d 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1398,5 +1398,6 @@ "PlaybackRate": "播放速度", "LabelQuickConnectCode": "Quick Connect 代號:", "LabelKnownProxies": "已知 Proxy:", - "LabelCurrentStatus": "目前狀態:" + "LabelCurrentStatus": "目前狀態:", + "EnableAutoCast": "設為預設" } From 0ba90d1a6d6f8ddda77996e5157fab1246afb8cd Mon Sep 17 00:00:00 2001 From: Bydio Eds Date: Thu, 1 Oct 2020 12:09:45 +0000 Subject: [PATCH 436/582] Translated using Weblate (Spanish (Mexico)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_MX/ --- src/strings/es-mx.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 8fc8a0abd9..1dbbe469ff 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -459,7 +459,7 @@ "LabelCustomRating": "Calificación personalizada:", "LabelDateAdded": "Fecha de adición:", "LabelDateAddedBehavior": "Comportamiento de la fecha de adición para nuevo contenido:", - "LabelDateAddedBehaviorHelp": "Si un valor de metadatos está presente, siempre se utilizará antes de cualquiera de estas opciones.", + "LabelDateAddedBehaviorHelp": "Si un valor de metadatos está presente, siempre se utilizará antes que cualquiera de estas opciones.", "LabelDateTimeLocale": "Configuración regional de fecha y hora:", "LabelDay": "Día:", "LabelDeathDate": "Fecha de defunción:", @@ -515,7 +515,7 @@ "LabelFriendlyName": "Nombre amistoso:", "LabelServerNameHelp": "Este nombre se usará para identificar el servidor y se predeterminará al nombre de host del servidor.", "LabelGroupMoviesIntoCollections": "Agrupar películas en colecciones", - "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 dentro de una colección serán mostradas agrupadas en un solo artículo.", "LabelH264Crf": "CRF de codificación H264:", "LabelEncoderPreset": "Codificación H264 y H265 preestablecida:", "LabelHardwareAccelerationType": "Aceleración por hardware:", @@ -593,7 +593,7 @@ "LabelMoviePrefixHelp": "Si un prefijo es aplicado al título de las películas, introdúcelo aquí para que el servidor pueda manejarlo correctamente.", "LabelMovieRecordingPath": "Ruta para las grabaciones de películas:", "LabelMusicStreamingTranscodingBitrate": "Velocidad de bits de transcodificación de música:", - "LabelMusicStreamingTranscodingBitrateHelp": "Especifica la velocidad de bits máxima al transmitir música.", + "LabelMusicStreamingTranscodingBitrateHelp": "Especifica la tasa de bits máxima al transmitir música.", "LabelName": "Nombre:", "LabelNewName": "Nuevo nombre:", "LabelNewPassword": "Contraseña nueva:", @@ -722,7 +722,7 @@ "LabelYoureDone": "¡Has terminado!", "LabelZipCode": "Código postal:", "LabelffmpegPath": "Ruta del FFmpeg:", - "LabelffmpegPathHelp": "La ruta hacia el archivo de la aplicación ffmpeg, o la carpeta que contenga ffmpeg.", + "LabelffmpegPathHelp": "La ruta hacia el archivo ejecutable de ffmpeg, o la carpeta que contenga el mismo.", "LanNetworksHelp": "Lista separada por comas de direcciones IP o entradas de IP/máscara de red para las redes que se considerarán en la red local al aplicar las restricciones de ancho de banda. Si se establecen, todas las demás direcciones IP se considerarán como parte de la red externa y estarán sujetas a las restricciones de ancho de banda externa. Si se deja en blanco, solo se considera a la subred del servidor estar en la red local.", "Large": "Grande", "LatestFromLibrary": "Últimas - {0}", From 510e5a761320ad915c47c866cc148268dd9f1e72 Mon Sep 17 00:00:00 2001 From: Page Asgardius Date: Fri, 2 Oct 2020 00:40:20 +0000 Subject: [PATCH 437/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index 8b7dba1e5d..8e8568ef24 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1412,5 +1412,8 @@ "LabelTonemappingDesat": "Mapeo de tonos desaturado:", "UseDoubleRateDeinterlacingHelp": "Esta configuración utiliza la velocidad de campo al desentrelazar, a menudo denominado desentrelazado bob, que duplica los fotogramas del video para proporcionar un movimiento contínuo, como lo vería al ver un video entrelazado en un televisor.", "PosterCard": "Tarjeta de presentación", - "EnableAutoCast": "Marcar como predeterminado" + "EnableAutoCast": "Marcar como predeterminado", + "LabelTonemappingDesatHelp": "Aplicar desaturación a realces que excedan este nivel de brillo. Mientras más alto el parámetro, se preservará más información de color. Este ajuste ayuda a prevenir la aparición de colores innecesariamente apagados en realces altos, cambiándolos gradualmente a blanco. Esto hace que las imágenes se vean más naturales, a cambio de reducir información relativa a los colores que estén fuera del rango. Se recomiendan los valores predeterminados 0 y 0.5.", + "AllowTonemappingHelp": "El mapeo de tonos puede transformar el rango dinámico de un video HDR a SDR mientras se mantienen los detalles y colores en la imagen, por lo tanto es importante para representar la escena original. Actualmente solo funciona cuando se transcodifican videos con metadatos HDR10 o HLG incrustados. Si la reproducción no es fluida o falla, considere desactivar el decodificador por hardware correspondiente.", + "LabelOpenclDeviceHelp": "Este es el dispositivo OpenCL que se usará para el mapeo de tonos. La parte izquierda del punto es el número de plataforma, la derecha es el número de dispositivo en la plataforma. El valor predeterminado es 0.0. Se requiere especificar el archivo ejecutable ffmpeg con el método de aceleración por Hardware para OpenCL." } From 9d8f74e0c1d1dbfff156ff5fbbb5743a2e992a42 Mon Sep 17 00:00:00 2001 From: Page Asgardius Date: Fri, 2 Oct 2020 00:59:39 +0000 Subject: [PATCH 438/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index 8e8568ef24..0ca1c361b3 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1415,5 +1415,8 @@ "EnableAutoCast": "Marcar como predeterminado", "LabelTonemappingDesatHelp": "Aplicar desaturación a realces que excedan este nivel de brillo. Mientras más alto el parámetro, se preservará más información de color. Este ajuste ayuda a prevenir la aparición de colores innecesariamente apagados en realces altos, cambiándolos gradualmente a blanco. Esto hace que las imágenes se vean más naturales, a cambio de reducir información relativa a los colores que estén fuera del rango. Se recomiendan los valores predeterminados 0 y 0.5.", "AllowTonemappingHelp": "El mapeo de tonos puede transformar el rango dinámico de un video HDR a SDR mientras se mantienen los detalles y colores en la imagen, por lo tanto es importante para representar la escena original. Actualmente solo funciona cuando se transcodifican videos con metadatos HDR10 o HLG incrustados. Si la reproducción no es fluida o falla, considere desactivar el decodificador por hardware correspondiente.", - "LabelOpenclDeviceHelp": "Este es el dispositivo OpenCL que se usará para el mapeo de tonos. La parte izquierda del punto es el número de plataforma, la derecha es el número de dispositivo en la plataforma. El valor predeterminado es 0.0. Se requiere especificar el archivo ejecutable ffmpeg con el método de aceleración por Hardware para OpenCL." + "LabelOpenclDeviceHelp": "Este es el dispositivo OpenCL que se usará para el mapeo de tonos. La parte izquierda del punto es el número de plataforma, la derecha es el número de dispositivo en la plataforma. El valor predeterminado es 0.0. Se requiere especificar el archivo ejecutable ffmpeg con el método de aceleración por Hardware para OpenCL.", + "LabelMaxMuxingQueueSizeHelp": "El número máximo de paquetes que se pueden almacenar en buffer mientras se espera a que se inicialicen todos los flujos. Intente aumentar este valor si aún encuentra el mensaje de error \"Demasiados paquetes en buffer para transmitir\" en las bitácoras de ffmpeg. El valor recomendado es 2048.", + "LabelTonemappingPeakHelp": "Se omitirán los picos de referencia con este valor. Util cuando la información de pico incrustada en los metadatos de imagen no es confiable o cuando se hace un mapeo de tonos de un rango bajo a uno más alto. Se recomienda el valor predeterminado 0.", + "LabelTonemappingThresholdHelp": "Los parámetros del algoritmo de mapeo de tonos se ajustan en cada escena. Se usa un umbral para detectar si la escena ha cambiado o no. Si el brillo promedio se sale del umbral entre el fotograma actual y el próximo, se volveran a calcular los valores de brillo promedio y de pico. Se recomiendan los valores predeterminados 0.8 y 0.2." } From 2373138048886704b3ce408118b3fcea87ea9ba3 Mon Sep 17 00:00:00 2001 From: vinibutturi Date: Fri, 2 Oct 2020 10:04:23 +0000 Subject: [PATCH 439/582] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index d08244d010..22353520d5 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -808,7 +808,7 @@ "ConfirmDeleteItems": "Apagar estes itens resultará na sua remoção da biblioteca e do sistema de ficheiros. Tem a certeza que deseja continuar?", "ConfirmDeleteItem": "Apagar este item resultará na sua remoção da biblioteca e do sistema de ficheiros. Tem a certeza que deseja continuar?", "ConfirmDeleteImage": "Apagar a imagem?", - "ConfigureDateAdded": "Configure a forma como é atribuída a data de adição, no painel de controlo do Servidor Jellyfin, em definições da Biblioteca", + "ConfigureDateAdded": "Configure a forma como é atribuída a data de adição, no painel de controle, em definições da Biblioteca", "Composer": "Compositor", "CommunityRating": "Avaliação da comunidade", "ColorTransfer": "Transferência de cores", @@ -1200,5 +1200,9 @@ "HeaderDVR": "DVR", "ApiKeysCaption": "Lista das chaves de API ativadas no momento", "ButtonTogglePlaylist": "Lista de leitura", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "Data": "Dados", + "ButtonUseQuickConnect": "Usar conexão rápida", + "ButtonActivate": "Ativar", + "Authorize": "Autorizar" } From 61d3887b77775a6400b3015803c826aec14d854f Mon Sep 17 00:00:00 2001 From: vinibutturi Date: Fri, 2 Oct 2020 10:16:06 +0000 Subject: [PATCH 440/582] 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 | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index c2d38e2ea9..db25a07431 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1352,7 +1352,7 @@ "MessageGetInstalledPluginsError": "Um erro ocorreu durante a requisição da lista de plugins atualmente instalados.", "MessagePluginInstallError": "Um erro ocorreu durante a instalação do plugin.", "PlaybackRate": "Taxa de Reprodução", - "SubtitleVerticalPositionHelp": "Numero da linha onde o texto aparece. Números positivos indicam de cima para baixo. Números negativos indicam de baixo para cima.", + "SubtitleVerticalPositionHelp": "Número da linha onde o texto aparece. Números positivos indicam de cima para baixo. Números negativos indicam de baixo para cima.", "VideoAudio": "Vídeo Áudio", "Video": "Vídeo", "Subtitle": "Legenda", @@ -1384,5 +1384,20 @@ "EnableQuickConnect": "Habilitar Quick Connect nesse servidor", "ButtonUseQuickConnect": "Usar Quick Connect", "ButtonActivate": "Ativar", - "Authorize": "Autorizar" + "Authorize": "Autorizar", + "LabelTonemappingDesat": "Desaturação do mapeamento de tons:", + "TonemappingRangeHelp": "Selecione a variadade de cores da saída. Auto é a mesma variedade da entrada.", + "LabelTonemappingRange": "Range do mapeamento de tons:", + "TonemappingAlgorithmHelp": "Mapeamento de tons podem ser ajustados. Se você não esta familiariazado com essas opções, mantenha os valores padrões. O valor recomendado é Reinhard.", + "LabelTonemappingAlgorithm": "Selecione o algoritmo de mapeamento de tons a ser usado:", + "AllowTonemappingHelp": "Mapeamento de tons pode transformar o range dinamico de um video HDR em SDR enquanto mantém os detalhes e cores da imagem, que são informações importantes na representação da cena original. Atualmente funciona apenas durante o transcoding de videos com HDR10 embutidos ou metadata HLG. Se a reprodução falhar ou nao estiver suave, por favor considere desativar o decodificador de hardware correspondente.", + "EnableTonemapping": "Ativar mapeamento de tons", + "LabelOpenclDeviceHelp": "Dispositivo OpenCL usado para a mapeação de tons. Os números ao lado esquedo do ponto (.) são referentes ao número da plataforma, os números a direita representam o número do dispositivo dentro da plataforma. O valor padrão é 0.0. O arquivo da aplicaçao ffmpeg contendo o método de aceleraçao de hardware OpenCL é obrigatório.", + "LabelOpenclDevice": "Dispositivo OpenCL:", + "LabelColorPrimaries": "Cores primárias:", + "UseDoubleRateDeinterlacing": "Dobrar a taxa de quadros quando estiver desinterlaçando", + "LabelQuickConnectCode": "Código de conexão rápida:", + "LabelKnownProxies": "Proxies conhecidos:", + "KnownProxiesHelp": "Lista de endereços IPs, separados por vírgula, de proxies conhecidos usados para conectar na sua instância do Jellyfin. Isso é necessário para usar de forma adequada os cabeçalhos X-Forwarded-for. Essa alteração necessita que o sistema seja reiniciado após salvar.", + "EnableAutoCast": "Definir como padrão" } From f0848ff1faeaf22ec51a736dc72a0542a459f80c Mon Sep 17 00:00:00 2001 From: vinibutturi Date: Fri, 2 Oct 2020 10:09:11 +0000 Subject: [PATCH 441/582] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index 22353520d5..903618cc94 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -776,7 +776,7 @@ "Director": "Realizador", "DirectStreaming": "Reprodução directa", "DirectStreamHelp2": "A reprodução directa de um ficheiro requer pouco processamento e não implica perda de qualidade num vídeo.", - "DirectStreamHelp1": "O tipo de multimédia (H.264, AC3, etc.) e a sua resolução são compatíveis com o dispositivo, no entanto, o formato (mkv, avi, wmv, etc.) não é. O conteúdo é reempacotado em tempo real antes de ser enviado para o dispositivo.", + "DirectStreamHelp1": "O tipo de multimídia (H.264, AC3, etc.) e a sua resolução são compatíveis com o dispositivo, no entanto, o formato (mkv, avi, wmv, etc.) não é. O conteúdo sera reempacotado em tempo real antes de ser enviado para o dispositivo.", "DirectPlaying": "Reprodução directa", "DeviceAccessHelp": "Apenas se aplica a dispositivos que podem ser identificados como únicos e que não impedem o acesso ao navegador. Filtrar o acesso a dispositivos a um utilizador, impede-o de utilizar novos dispositivos, até estes serem aprovados aqui.", "DetectingDevices": "Procurando dispositivos", @@ -1127,7 +1127,7 @@ "Never": "Nunca", "Artist": "Artista", "LabelDeinterlaceMethod": "Método de desentrelaçamento:", - "DeinterlaceMethodHelp": "Selecione o método de desentrelaçamento para converter conteúdo entrelaçado.", + "DeinterlaceMethodHelp": "Selecione o método de desentrelaçamento para conversão via software de conteúdo entrelaçado. Quando a aceleração via hardware com suporte a desentrelaçamento estiver ativa, ela será usada ao invés dessa configuração.", "Movie": "Filme", "LabelLibraryPageSize": "Tamanho da página da biblioteca:", "Album": "Álbum", From 90f46b8dc301e8bd68d2d06bb20ac349de60e3ad Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Fri, 2 Oct 2020 14:46:17 +0000 Subject: [PATCH 442/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index a6fc3a856a..946057adef 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -778,7 +778,7 @@ "LabelSyncPlaySyncMethod": "Phương pháp đồng bộ hóa:", "LabelSyncPlayPlaybackDiff": "Chênh lệch thời gian phát lại:", "MillisecondsUnit": "ms", - "LabelSyncPlayTimeOffset": "Thời gian bù đắp với máy chủ:", + "LabelSyncPlayTimeOffset": "Thời gian bù đắp máy chủ:", "LabelSupportedMediaTypes": "Các loại phương tiện được hỗ trợ:", "LabelSubtitlePlaybackMode": "Chế độ phụ đề:", "LabelSubtitleFormatHelp": "Ví dụ: srt", @@ -1161,7 +1161,7 @@ "OptionWeekly": "Hàng tuần", "OptionWeekends": "Ngày cuối tuần", "OptionWeekdays": "Các ngày trong tuần", - "OptionWakeFromSleep": "Đánh Thức Khi Đang Ở Chế Độ Ngủ", + "OptionWakeFromSleep": "Đánh thức chế độ ngủ", "OptionUnairedEpisode": "Các tập không mong muốn", "OptionTvdbRating": "Xếp hạng TVDB", "OptionAllowVideoPlaybackRemuxing": "Cho phép phát lại video yêu cầu chuyển đổi mà không cần mã hóa lại", @@ -1351,7 +1351,7 @@ "EveryXHours": "Mỗi {0} giờ", "EveryHour": "Mỗi tiếng", "EveryXMinutes": "Mỗi {0} phút", - "OnWakeFromSleep": "Khi thức dậy sau giấc ngủ", + "OnWakeFromSleep": "Hoạt động khi đánh thức chế độ ngủ", "WeeklyAt": "{0}s tại {1}", "DailyAt": "Hàng ngày lúc {0}", "LastSeen": "Xem lần cuối {0}", From 2696df1bc829e388302e470205b4209f547dec63 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Sat, 3 Oct 2020 10:21:11 +0000 Subject: [PATCH 443/582] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 30bbef6a28..0c9aaa1de9 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1372,5 +1372,20 @@ "EnableAutoCast": "Beállítás alapértelmezettként", "ButtonUseQuickConnect": "Gyors kapcsolódás használata", "ButtonActivate": "Aktiválás", - "Authorize": "Felhatalmaz" + "Authorize": "Felhatalmaz", + "Bwdif": "BWDIF", + "SpecialFeatures": "Speciális funkciók", + "QuickConnectNotActive": "A gyors csatlakozás nem engedélyezett ezen a szerveren", + "QuickConnectNotAvailable": "Kérd meg a szerver adminisztrátorát, hogy engedélyezze a gyors csatlakozást", + "QuickConnectInvalidCode": "Érvénytelen csatlakozási kód", + "QuickConnectDescription": "A gyors kapcsolódáshoz való bejelentkezéshez, válaszd a Gyors Csatlakozás gombot azon az eszközön, amelyre be szeretnél jelentkezni és add meg az alul látható kódot.", + "QuickConnectDeactivated": "A gyors csatlakozás letiltásra került a belépési kérés engedélyezése előtt", + "QuickConnectAuthorizeFail": "Ismeretlen gyors kapcsolódási kód", + "QuickConnectAuthorizeSuccess": "Kérés hitelesítve", + "QuickConnectAuthorizeCode": "Írd be a(z) {0} kódot a bejelentkezéshez", + "QuickConnectActivationSuccessful": "Sikeresen aktiválva", + "QuickConnect": "Gyors csatlakozás", + "LabelQuickConnectCode": "Gyors kapcsolódás kódja:", + "LabelKnownProxies": "Ismert proxyk:", + "LabelCurrentStatus": "Jelenlegi állapot:" } From 20bfa5f66adaf5112f997bade03672f191d437c5 Mon Sep 17 00:00:00 2001 From: togashi23 Date: Sat, 3 Oct 2020 13:53:26 +0000 Subject: [PATCH 444/582] 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, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index f63441ac9c..e8e3872680 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1097,5 +1097,7 @@ "LabelPlayerDimensions": "プレーヤーサイズ:", "LabelUnstable": "不安定", "LabelMaxParentalRating": "最大許容ペアレントレイティング:", - "LabelKodiMetadataEnablePathSubstitutionHelp": "サーバーのパス補完を使った画像パスの補完を有効にする。" + "LabelKodiMetadataEnablePathSubstitutionHelp": "サーバーのパス補完を使った画像パスの補完を有効にする。", + "ButtonActivate": "アクティベート", + "Authorize": "承認" } From c7bd1fa12e704581cafc84e7d8d9db5fb951aa40 Mon Sep 17 00:00:00 2001 From: Peter McNeil Date: Sat, 3 Oct 2020 19:52:13 +0000 Subject: [PATCH 445/582] Translated using Weblate (English (United Kingdom)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_GB/ --- src/strings/en-gb.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 28cfa8c409..33b498fdc3 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1381,9 +1381,9 @@ "LabelTonemappingDesat": "Tonemapping desat:", "TonemappingRangeHelp": "Select the output colour range. Auto is the same as the input range.", "LabelTonemappingRange": "Tonemapping range:", - "TonemappingAlgorithmHelp": "Tone mapping can be fine-tuned. If you are not familiar with these options, just keep the default.
    The recommended value is Reinhard.", + "TonemappingAlgorithmHelp": "Tone mapping can be fine-tuned. If you are not familiar with these options, just keep the default. The recommended value is Reinhard.", "LabelTonemappingAlgorithm": "Select the Tone mapping algorithm to use:", - "AllowTonemappingHelp": "Tone mapping can transform the dynamic range of a video from HDR to SDR while maintaining image details and colours, which are very important information for representing the original scene. Currently works only when using NVENC HEVC decoder and transcoding HDR10 or HLG videos.", + "AllowTonemappingHelp": "Tone mapping can transform the dynamic range of a video from HDR to SDR while maintaining image details and colors, which are very important information for representing the original scene. Currently works only when transcoding videos with embedded HDR10 or HLG metadata. If the playback is not smooth or fails, please consider turning off the corresponding hardware decoder.", "EnableTonemapping": "Enable Tone mapping", "LabelOpenclDeviceHelp": "This is the OpenCL device that is used for tonemapping. The left side of the dot is the platform number, and the right side is the device number on the platform. The default value is 0.0. The ffmpeg application file containing the OpenCL hardware acceleration method is required.", "LabelOpenclDevice": "OpenCL Device:", @@ -1417,5 +1417,6 @@ "EnableQuickConnect": "Enable quick connect on this server", "ButtonUseQuickConnect": "Use Quick Connect", "ButtonActivate": "Activate", - "Authorize": "Authorise" + "Authorize": "Authorise", + "EnableAutoCast": "Set as Default" } From c35edc0720a265b6e1ebc195443083d0ea8dd157 Mon Sep 17 00:00:00 2001 From: Odd-Roar Brouer-Wangen Date: Sat, 3 Oct 2020 20:37:35 +0000 Subject: [PATCH 446/582] =?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 | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index b782782982..aad303dd8f 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1371,12 +1371,23 @@ "Photo": "Bilde", "LabelAlbumArtMaxResHelp": "Høyeste tillatte oppløsning for album cover som er tilgjengelig via upnp:albumArtURI.", "LabelKnownProxies": "Kjente proxyer:", - "LabelIconMaxResHelp": "Maks oppløsning av minibilder som vises via egenskapvalget upnp:icon.", + "LabelIconMaxResHelp": "Maksimal oppløsning av ikoner som vises via upnp:icon egenskapet.", "LabelCurrentStatus": "Nåværende status:", "KnownProxiesHelp": "Kommaseparert liste med IP-adresser av kjente proxyer brukt til å tilkoble din Jellyfin-instans. Dette er påkrevd for å tilkoble korrekt, ved å bruke X-Forwardet-For headers. Omstart er påkrevd etter lagring.", "EnableQuickConnect": "Bruk rask tilkobling på denne tjeneren", "ButtonUseQuickConnect": "Bruk rask tilkobling", "ButtonActivate": "Aktiver", "Authorize": "Autoriser", - "EnableAutoCast": "Sett som standard" + "EnableAutoCast": "Sett som standard", + "QuickConnectNotActive": "Hurtig tilkobling er ikke aktiv på denne serveren", + "QuickConnectNotAvailable": "Be serveradministratoren om å aktivere hurtig tilkobling", + "QuickConnectInvalidCode": "Ugyldig hurtig tilkoblingskode", + "QuickConnectDescription": "Hvis du vil logge på med hurtig tilkobling, velger du Hurtig tilkobling-knappen på enheten du logger på fra, og skriver inn koden som vises nedenfor.", + "QuickConnectDeactivated": "Hurtig tilkobling ble deaktivert før påloggingsforespørselen kunne godkjennes", + "QuickConnectAuthorizeFail": "Ukjent hurtig tilkoblingskode", + "QuickConnectAuthorizeSuccess": "Forespørsel autorisert", + "QuickConnectAuthorizeCode": "Skriv inn kode {0} for å logge inn", + "QuickConnectActivationSuccessful": "Aktivert", + "QuickConnect": "Hurtig tilkobling", + "LabelQuickConnectCode": "Hurtig tilkoblingskode:" } From c4fb887b0af50fe43513d8644fa786b73767f564 Mon Sep 17 00:00:00 2001 From: Odd-Roar Brouer-Wangen Date: Sat, 3 Oct 2020 20:43:11 +0000 Subject: [PATCH 447/582] =?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 | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index aad303dd8f..faad01f657 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1389,5 +1389,19 @@ "QuickConnectAuthorizeCode": "Skriv inn kode {0} for å logge inn", "QuickConnectActivationSuccessful": "Aktivert", "QuickConnect": "Hurtig tilkobling", - "LabelQuickConnectCode": "Hurtig tilkoblingskode:" + "LabelQuickConnectCode": "Hurtig tilkoblingskode:", + "EnableTonemapping": "Aktiver tonekartlegging", + "LabelOpenclDeviceHelp": "Dette er OpenCL-enheten som brukes til tonemapping. Venstre side av prikken er plattformnummeret, og høyre side er enhetsnummeret på plattformen. Standardverdien er 0.0. Ffmpeg-applikasjonsfilen som inneholder OpenCL-maskinvareakselerasjonsmetoden kreves.", + "LabelOpenclDevice": "OpenCL-enhet:", + "MediaInfoColorPrimaries": "Primærfarger", + "LabelColorPrimaries": "Primærfarger:", + "LabelColorTransfer": "Fargeoverføring:", + "LabelColorSpace": "Fargeområde:", + "LabelVideoRange": "Videoområde:", + "MediaInfoColorTransfer": "Fargeoverføring", + "MediaInfoColorSpace": "Fargeområde", + "MediaInfoVideoRange": "Videoutvalg", + "Bwdif": "BWDIF", + "UseDoubleRateDeinterlacingHelp": "Denne innstillingen bruker feltfrekvensen når du fjerner linjefletting, ofte referert til som bob deinterlacing, som dobler bildefrekvensen til videoen for å gi full bevegelse som det du ville se når du ser linjeflettet video på en TV.", + "UseDoubleRateDeinterlacing": "Doble bildefrekvensen ved fjerning av linjefletting" } From 9defa3da24d408e2c917413d8396320e15aa3353 Mon Sep 17 00:00:00 2001 From: Odd-Roar Brouer-Wangen Date: Sat, 3 Oct 2020 20:52:46 +0000 Subject: [PATCH 448/582] =?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 | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index faad01f657..0fb092f2de 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1403,5 +1403,20 @@ "MediaInfoVideoRange": "Videoutvalg", "Bwdif": "BWDIF", "UseDoubleRateDeinterlacingHelp": "Denne innstillingen bruker feltfrekvensen når du fjerner linjefletting, ofte referert til som bob deinterlacing, som dobler bildefrekvensen til videoen for å gi full bevegelse som det du ville se når du ser linjeflettet video på en TV.", - "UseDoubleRateDeinterlacing": "Doble bildefrekvensen ved fjerning av linjefletting" + "UseDoubleRateDeinterlacing": "Doble bildefrekvensen ved fjerning av linjefletting", + "LabelMaxMuxingQueueSizeHelp": "Maksimalt antall pakker som kan buffres mens de venter på at alle strømmer skal initialiseres. Prøv å øke den hvis du fremdeles støter på \"For mange pakker bufret for utdatestrøm\" -feil i ffmpeg-logger. Den anbefalte verdien er 2048.", + "LabelMaxMuxingQueueSize": "Maks køstørrelse for muxing:", + "LabelTonemappingParamHelp": "Still inn algoritmen for tonekartlegging. De anbefalte og standardverdiene er NaN. La det vanligvis være tomt.", + "LabelTonemappingParam": "Tonemapping parameter:", + "LabelTonemappingPeakHelp": "Overstyr signal / nominell / referansetopp med denne verdien. Nyttig når den innebygde toppinformasjonen i metadata på skjermen ikke er pålitelig eller når tonekartlegging fra et lavere område til et høyere område. De anbefalte og standardverdiene er 0.", + "LabelTonemappingPeak": "Tonemapping topp:", + "LabelTonemappingThresholdHelp": "Tonekartingsalgoritmeparametrene finjusteres for hver scene. Og en terskel brukes til å oppdage om scenen har endret seg eller ikke. Hvis avstanden mellom gjeldende rammens gjennomsnittlige lysstyrke og det nåværende løpende gjennomsnittet overstiger en terskelverdi, vil vi beregne scenegjennomsnittet og topplysstyrken på nytt. De anbefalte og standardverdiene er 0,8 og 0,2.", + "LabelTonemappingThreshold": "Tonemapping terskel:", + "LabelTonemappingDesatHelp": "Påfør desaturering for høydepunkter som overstiger dette lysstyrken. Jo høyere parameteren er, jo mer fargeinformasjon blir bevart. Denne innstillingen hjelper til med å forhindre unaturlig utblåste farger for superhøydepunkter ved å (jevnt) bli til hvitt i stedet. Dette får bilder til å føles mer naturlige, på bekostning av å redusere informasjon om farger utenfor fartsområdet. De anbefalte og standardverdiene er 0 og 0,5.", + "LabelTonemappingDesat": "Tonemapping avvalgt:", + "TonemappingRangeHelp": "Velg utskriftsfargeområdet. Auto er det samme som inngangsområdet.", + "LabelTonemappingRange": "Tonemapping-område:", + "TonemappingAlgorithmHelp": "Tonekartlegging kan finjusteres. Hvis du ikke er kjent med disse alternativene, er det bare å beholde standardinnstillingen. Den anbefalte verdien er Reinhard.", + "LabelTonemappingAlgorithm": "Velg algoritmen for tonekartlegging som skal brukes:", + "AllowTonemappingHelp": "Tonekartlegging kan forvandle det dynamiske området til en video fra HDR til SDR samtidig som bildedetaljer og farger opprettholdes, noe som er veldig viktig informasjon for å representere den originale scenen. Fungerer for øyeblikket bare når du omkoder videoer med innebygd HDR10- eller HLG-metadata. Hvis avspillingen ikke er jevn eller mislykkes, bør du vurdere å slå av den tilsvarende maskinvaredekoderen." } From 355620f06b36577a40928ef718c75d0987de7031 Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Sun, 4 Oct 2020 12:08:23 -0400 Subject: [PATCH 449/582] Implement frontend component of max user sessions --- src/controllers/dashboard/users/useredit.html | 8 ++++++++ src/controllers/dashboard/users/useredit.js | 2 ++ src/strings/en-us.json | 3 +++ 3 files changed, 13 insertions(+) diff --git a/src/controllers/dashboard/users/useredit.html b/src/controllers/dashboard/users/useredit.html index f4dc8c096b..d501d0ba26 100644 --- a/src/controllers/dashboard/users/useredit.html +++ b/src/controllers/dashboard/users/useredit.html @@ -190,6 +190,14 @@

    +
    +
    + +
    ${OptionMaxActiveSessions}
    +
    ${OptionMaxActiveSessionsHelp}
    +
    +
    +
    '; @@ -236,7 +236,7 @@ class FilterMenu { dlg.innerHTML = globalize.translateHtml(html, 'core'); - var settingElements = dlg.querySelectorAll('.viewSetting'); + const settingElements = dlg.querySelectorAll('.viewSetting'); for (let i = 0, length = settingElements.length; i < length; i++) { if (options.visibleSettings.indexOf(settingElements[i].getAttribute('data-settingname')) === -1) { settingElements[i].classList.add('hide'); @@ -257,7 +257,7 @@ class FilterMenu { centerFocus(dlg.querySelector('.formDialogContent'), false, true); } - var submitted; + let submitted; dlg.querySelector('form').addEventListener('change', function () { submitted = true; diff --git a/src/components/focusManager.js b/src/components/focusManager.js index a9ec377cce..90ff8b0703 100644 --- a/src/components/focusManager.js +++ b/src/components/focusManager.js @@ -3,7 +3,7 @@ import dom from 'dom'; import scrollManager from 'scrollManager'; - var scopes = []; + const scopes = []; function pushScope(elem) { scopes.push(elem); } @@ -15,7 +15,7 @@ import scrollManager from 'scrollManager'; } function autoFocus(view, defaultToFirst, findAutoFocusElement) { - var element; + let element; if (findAutoFocusElement !== false) { element = view.querySelector('*[autofocus]'); if (element) { @@ -46,9 +46,9 @@ import scrollManager from 'scrollManager'; } } - var focusableTagNames = ['INPUT', 'TEXTAREA', 'SELECT', 'BUTTON', 'A']; - var focusableContainerTagNames = ['BODY', 'DIALOG']; - var focusableQuery = focusableTagNames.map(function (t) { + const focusableTagNames = ['INPUT', 'TEXTAREA', 'SELECT', 'BUTTON', 'A']; + const focusableContainerTagNames = ['BODY', 'DIALOG']; + const focusableQuery = focusableTagNames.map(function (t) { if (t === 'INPUT') { t += ':not([type="range"]):not([type="file"])'; } @@ -69,7 +69,7 @@ import scrollManager from 'scrollManager'; function normalizeFocusable(elem, originalElement) { if (elem) { - var tagName = elem.tagName; + const tagName = elem.tagName; if (!tagName || tagName === 'HTML' || tagName === 'BODY') { elem = originalElement; } @@ -79,10 +79,10 @@ import scrollManager from 'scrollManager'; } function focusableParent(elem) { - var originalElement = elem; + const originalElement = elem; while (!isFocusable(elem)) { - var parent = elem.parentNode; + const parent = elem.parentNode; if (!parent) { return normalizeFocusable(elem, originalElement); @@ -115,7 +115,7 @@ import scrollManager from 'scrollManager'; } if (elem.tagName === 'INPUT') { - var type = elem.type; + const type = elem.type; if (type === 'range') { return false; } @@ -132,11 +132,11 @@ import scrollManager from 'scrollManager'; } function getFocusableElements(parent, limit, excludeClass) { - var elems = (parent || getDefaultScope()).querySelectorAll(focusableQuery); - var focusableElements = []; + const elems = (parent || getDefaultScope()).querySelectorAll(focusableQuery); + const focusableElements = []; - for (var i = 0, length = elems.length; i < length; i++) { - var elem = elems[i]; + for (let i = 0, length = elems.length; i < length; i++) { + const elem = elems[i]; if (excludeClass && elem.classList.contains(excludeClass)) { continue; @@ -159,7 +159,7 @@ import scrollManager from 'scrollManager'; return true; } - var classList = elem.classList; + const classList = elem.classList; if (classList.contains('focuscontainer')) { return true; @@ -208,7 +208,7 @@ import scrollManager from 'scrollManager'; } function getOffset(elem) { - var box; + let box; // Support: BlackBerry 5, iOS 3 (original iPhone) // If we don't have gBCR, just use 0,0 rather than error @@ -225,7 +225,7 @@ import scrollManager from 'scrollManager'; if (box.right === null) { // Create a new object because some browsers will throw an error when trying to set data onto the Rect object - var newBox = { + const newBox = { top: box.top, left: box.left, width: box.width, @@ -255,27 +255,27 @@ import scrollManager from 'scrollManager'; return; } - var focusableContainer = dom.parentWithClass(activeElement, 'focusable'); + const focusableContainer = dom.parentWithClass(activeElement, 'focusable'); - var rect = getOffset(activeElement); + const rect = getOffset(activeElement); // Get elements and work out x/y points - var point1x = parseFloat(rect.left) || 0; - var point1y = parseFloat(rect.top) || 0; - var point2x = parseFloat(point1x + rect.width - 1) || point1x; - var point2y = parseFloat(point1y + rect.height - 1) || point1y; + const point1x = parseFloat(rect.left) || 0; + const point1y = parseFloat(rect.top) || 0; + const point2x = parseFloat(point1x + rect.width - 1) || point1x; + const point2y = parseFloat(point1y + rect.height - 1) || point1y; - var sourceMidX = rect.left + (rect.width / 2); - var sourceMidY = rect.top + (rect.height / 2); + const sourceMidX = rect.left + (rect.width / 2); + const sourceMidY = rect.top + (rect.height / 2); - var focusable = focusableElements || container.querySelectorAll(focusableQuery); + const focusable = focusableElements || container.querySelectorAll(focusableQuery); - var maxDistance = Infinity; - var minDistance = maxDistance; - var nearestElement; + const maxDistance = Infinity; + let minDistance = maxDistance; + let nearestElement; - for (var i = 0, length = focusable.length; i < length; i++) { - var curr = focusable[i]; + for (let i = 0, length = focusable.length; i < length; i++) { + const curr = focusable[i]; if (curr === activeElement) { continue; @@ -285,7 +285,7 @@ import scrollManager from 'scrollManager'; continue; } - var elementRect = getOffset(curr); + const elementRect = getOffset(curr); // not currently visible if (!elementRect.width && !elementRect.height) { @@ -333,16 +333,16 @@ import scrollManager from 'scrollManager'; break; } - var x = elementRect.left; - var y = elementRect.top; - var x2 = x + elementRect.width - 1; - var y2 = y + elementRect.height - 1; + const x = elementRect.left; + const y = elementRect.top; + const x2 = x + elementRect.width - 1; + const y2 = y + elementRect.height - 1; - var intersectX = intersects(point1x, point2x, x, x2); - var intersectY = intersects(point1y, point2y, y, y2); + const intersectX = intersects(point1x, point2x, x, x2); + const intersectY = intersects(point1y, point2y, y, y2); - var midX = elementRect.left + (elementRect.width / 2); - var midY = elementRect.top + (elementRect.height / 2); + const midX = elementRect.left + (elementRect.width / 2); + const midY = elementRect.top + (elementRect.height / 2); var distX; var distY; @@ -372,7 +372,7 @@ import scrollManager from 'scrollManager'; break; } - var dist = Math.sqrt(distX * distX + distY * distY); + const dist = Math.sqrt(distX * distX + distY * distY); if (dist < minDistance) { nearestElement = curr; @@ -383,7 +383,7 @@ import scrollManager from 'scrollManager'; if (nearestElement) { // See if there's a focusable container, and if so, send the focus command to that if (activeElement) { - var nearestElementFocusableParent = dom.parentWithClass(nearestElement, 'focusable'); + const nearestElementFocusableParent = dom.parentWithClass(nearestElement, 'focusable'); if (nearestElementFocusableParent && nearestElementFocusableParent !== nearestElement) { if (focusableContainer !== nearestElementFocusableParent) { nearestElement = nearestElementFocusableParent; @@ -403,16 +403,16 @@ import scrollManager from 'scrollManager'; } function sendText(text) { - var elem = document.activeElement; + const elem = document.activeElement; elem.value = text; } function focusFirst(container, focusableSelector) { - var elems = container.querySelectorAll(focusableSelector); + const elems = container.querySelectorAll(focusableSelector); - for (var i = 0, length = elems.length; i < length; i++) { - var elem = elems[i]; + for (let i = 0, length = elems.length; i < length; i++) { + const elem = elems[i]; if (isCurrentlyFocusableInternal(elem)) { focus(elem); @@ -422,10 +422,10 @@ import scrollManager from 'scrollManager'; } function focusLast(container, focusableSelector) { - var elems = [].slice.call(container.querySelectorAll(focusableSelector), 0).reverse(); + const elems = [].slice.call(container.querySelectorAll(focusableSelector), 0).reverse(); - for (var i = 0, length = elems.length; i < length; i++) { - var elem = elems[i]; + for (let i = 0, length = elems.length; i < length; i++) { + const elem = elems[i]; if (isCurrentlyFocusableInternal(elem)) { focus(elem); @@ -435,11 +435,11 @@ import scrollManager from 'scrollManager'; } function moveFocus(sourceElement, container, focusableSelector, offset) { - var elems = container.querySelectorAll(focusableSelector); - var list = []; - var i; - var length; - var elem; + const elems = container.querySelectorAll(focusableSelector); + const list = []; + let i; + let length; + let elem; for (i = 0, length = elems.length; i < length; i++) { elem = elems[i]; @@ -449,7 +449,7 @@ import scrollManager from 'scrollManager'; } } - var currentIndex = -1; + let currentIndex = -1; for (i = 0, length = list.length; i < length; i++) { elem = list[i]; @@ -464,11 +464,11 @@ import scrollManager from 'scrollManager'; return; } - var newIndex = currentIndex + offset; + let newIndex = currentIndex + offset; newIndex = Math.max(0, newIndex); newIndex = Math.min(newIndex, list.length - 1); - var newElem = list[newIndex]; + const newElem = list[newIndex]; if (newElem) { focus(newElem); } @@ -482,23 +482,23 @@ export default { focusableParent: focusableParent, getFocusableElements: getFocusableElements, moveLeft: function (sourceElement, options) { - var container = options ? options.container : null; - var focusableElements = options ? options.focusableElements : null; + const container = options ? options.container : null; + const focusableElements = options ? options.focusableElements : null; nav(sourceElement, 0, container, focusableElements); }, moveRight: function (sourceElement, options) { - var container = options ? options.container : null; - var focusableElements = options ? options.focusableElements : null; + const container = options ? options.container : null; + const focusableElements = options ? options.focusableElements : null; nav(sourceElement, 1, container, focusableElements); }, moveUp: function (sourceElement, options) { - var container = options ? options.container : null; - var focusableElements = options ? options.focusableElements : null; + const container = options ? options.container : null; + const focusableElements = options ? options.focusableElements : null; nav(sourceElement, 2, container, focusableElements); }, moveDown: function (sourceElement, options) { - var container = options ? options.container : null; - var focusableElements = options ? options.focusableElements : null; + const container = options ? options.container : null; + const focusableElements = options ? options.focusableElements : null; nav(sourceElement, 3, container, focusableElements); }, sendText: sendText, diff --git a/src/components/groupedcards.js b/src/components/groupedcards.js index 38d08d129b..947b3b8569 100644 --- a/src/components/groupedcards.js +++ b/src/components/groupedcards.js @@ -4,19 +4,19 @@ import dom from 'dom'; import appRouter from 'appRouter'; function onGroupedCardClick(e, card) { - var itemId = card.getAttribute('data-id'); - var serverId = card.getAttribute('data-serverid'); - var apiClient = window.connectionManager.getApiClient(serverId); - var userId = apiClient.getCurrentUserId(); - var playedIndicator = card.querySelector('.playedIndicator'); - var playedIndicatorHtml = playedIndicator ? playedIndicator.innerHTML : null; - var options = { + const itemId = card.getAttribute('data-id'); + const serverId = card.getAttribute('data-serverid'); + const apiClient = window.connectionManager.getApiClient(serverId); + const userId = apiClient.getCurrentUserId(); + const playedIndicator = card.querySelector('.playedIndicator'); + const playedIndicatorHtml = playedIndicator ? playedIndicator.innerHTML : null; + const options = { Limit: parseInt(playedIndicatorHtml || '10'), Fields: 'PrimaryImageAspectRatio,DateCreated', ParentId: itemId, GroupItems: false }; - var actionableParent = dom.parentWithTag(e.target, ['A', 'BUTTON', 'INPUT']); + const actionableParent = dom.parentWithTag(e.target, ['A', 'BUTTON', 'INPUT']); if (!actionableParent || actionableParent.classList.contains('cardContent')) { apiClient.getJSON(apiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) { @@ -24,7 +24,7 @@ import appRouter from 'appRouter'; return void appRouter.showItem(items[0]); } - var url = 'details?id=' + itemId + '&serverId=' + serverId; + const url = 'details?id=' + itemId + '&serverId=' + serverId; Dashboard.navigate(url); }); e.stopPropagation(); @@ -34,7 +34,7 @@ import appRouter from 'appRouter'; } export default function onItemsContainerClick(e) { - var groupedCard = dom.parentWithClass(e.target, 'groupedCard'); + const groupedCard = dom.parentWithClass(e.target, 'groupedCard'); if (groupedCard) { onGroupedCardClick(e, groupedCard); diff --git a/src/components/htmlMediaHelper.js b/src/components/htmlMediaHelper.js index 4095502aae..31fc4c29c8 100644 --- a/src/components/htmlMediaHelper.js +++ b/src/components/htmlMediaHelper.js @@ -23,7 +23,7 @@ import events from 'events'; } function canPlayNativeHls() { - var media = document.createElement('video'); + const media = document.createElement('video'); if (media.canPlayType('application/x-mpegURL').replace(/no/, '') || media.canPlayType('application/vnd.apple.mpegURL').replace(/no/, '')) { @@ -71,16 +71,16 @@ import events from 'events'; return true; } - var recoverDecodingErrorDate; - var recoverSwapAudioCodecDate; + let recoverDecodingErrorDate; + let recoverSwapAudioCodecDate; export function handleHlsJsMediaError(instance, reject) { - var hlsPlayer = instance._hlsPlayer; + const hlsPlayer = instance._hlsPlayer; if (!hlsPlayer) { return; } - var now = Date.now(); + let now = Date.now(); if (window.performance && window.performance.now) { now = performance.now(); // eslint-disable-line compat/compat @@ -136,7 +136,7 @@ import events from 'events'; } export function seekOnPlaybackStart(instance, element, ticks, onMediaReady) { - var seconds = (ticks || 0) / 10000000; + const seconds = (ticks || 0) / 10000000; if (seconds) { // Appending #t=xxx to the query string doesn't seem to work with HLS @@ -148,7 +148,7 @@ import events from 'events'; if (onMediaReady) onMediaReady(); } else { // update video player position when media is ready to be sought - var events = ['durationchange', 'loadeddata', 'play', 'loadedmetadata']; + const events = ['durationchange', 'loadeddata', 'play', 'loadedmetadata']; var onMediaChange = function(e) { if (element.currentTime === 0 && element.duration >= seconds) { // seek only when video position is exactly zero, @@ -173,10 +173,10 @@ import events from 'events'; export function applySrc(elem, src, options) { if (window.Windows && options.mediaSource && options.mediaSource.IsLocal) { return Windows.Storage.StorageFile.getFileFromPathAsync(options.url).then(function (file) { - var playlist = new Windows.Media.Playback.MediaPlaybackList(); + const playlist = new Windows.Media.Playback.MediaPlaybackList(); - var source1 = Windows.Media.Core.MediaSource.createFromStorageFile(file); - var startTime = (options.playerStartPositionTicks || 0) / 10000; + const source1 = Windows.Media.Core.MediaSource.createFromStorageFile(file); + const startTime = (options.playerStartPositionTicks || 0) / 10000; playlist.items.append(new Windows.Media.Playback.MediaPlaybackItem(source1, startTime)); elem.src = URL.createObjectURL(playlist, { oneTimeOnly: true }); return Promise.resolve(); @@ -194,11 +194,11 @@ import events from 'events'; export function playWithPromise(elem, onErrorFn) { try { - var promise = elem.play(); + const promise = elem.play(); if (promise && promise.then) { // Chrome now returns a promise return promise.catch(function (e) { - var errorName = (e.name || '').toLowerCase(); + const errorName = (e.name || '').toLowerCase(); // safari uses aborterror if (errorName === 'notallowederror' || errorName === 'aborterror') { @@ -219,7 +219,7 @@ import events from 'events'; } export function destroyCastPlayer(instance) { - var player = instance._castPlayer; + const player = instance._castPlayer; if (player) { try { player.unload(); @@ -232,7 +232,7 @@ import events from 'events'; } export function destroyHlsPlayer(instance) { - var player = instance._hlsPlayer; + const player = instance._hlsPlayer; if (player) { try { player.destroy(); @@ -245,7 +245,7 @@ import events from 'events'; } export function destroyFlvPlayer(instance) { - var player = instance._flvPlayer; + const player = instance._flvPlayer; if (player) { try { player.unload(); @@ -356,7 +356,7 @@ import events from 'events'; destroyFlvPlayer(instance); destroyCastPlayer(instance); - var stopInfo = { + const stopInfo = { src: instance._currentSrc }; @@ -368,20 +368,20 @@ import events from 'events'; } export function getBufferedRanges(instance, elem) { - var ranges = []; - var seekable = elem.buffered || []; + const ranges = []; + const seekable = elem.buffered || []; - var offset; - var currentPlayOptions = instance._currentPlayOptions; + let offset; + const currentPlayOptions = instance._currentPlayOptions; if (currentPlayOptions) { offset = currentPlayOptions.transcodingOffsetTicks; } offset = offset || 0; - for (var i = 0, length = seekable.length; i < length; i++) { - var start = seekable.start(i); - var end = seekable.end(i); + for (let i = 0, length = seekable.length; i < length; i++) { + let start = seekable.start(i); + let end = seekable.end(i); if (!isValidDuration(start)) { start = 0; diff --git a/src/components/imageOptionsEditor/imageOptionsEditor.js b/src/components/imageOptionsEditor/imageOptionsEditor.js index 41fe9b4c94..d112dd65cc 100644 --- a/src/components/imageOptionsEditor/imageOptionsEditor.js +++ b/src/components/imageOptionsEditor/imageOptionsEditor.js @@ -93,7 +93,7 @@ import 'emby-input'; const response = await fetch('components/imageOptionsEditor/imageOptionsEditor.template.html'); const template = await response.text(); - var dlg = dialogHelper.createDialog({ + const dlg = dialogHelper.createDialog({ size: 'small', removeOnClose: true, scrollY: false diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index a21fb76270..e5b59cfb22 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -58,8 +58,8 @@ import 'css!./imageeditor'; currentItem = item; apiClient.getRemoteImageProviders(getBaseRemoteOptions()).then(function (providers) { - var btnBrowseAllImages = page.querySelectorAll('.btnBrowseAllImages'); - for (var i = 0, length = btnBrowseAllImages.length; i < length; i++) { + const btnBrowseAllImages = page.querySelectorAll('.btnBrowseAllImages'); + for (let i = 0, length = btnBrowseAllImages.length; i < length; i++) { if (providers.length) { btnBrowseAllImages[i].classList.remove('hide'); } else { diff --git a/src/components/images/imageLoader.js b/src/components/images/imageLoader.js index b0ffecd64f..9dc708098d 100644 --- a/src/components/images/imageLoader.js +++ b/src/components/images/imageLoader.js @@ -56,7 +56,7 @@ import 'css!./style'; throw new Error('entry cannot be null'); } const target = entry.target; - var source = undefined; + let source = undefined; if (target) { source = target.getAttribute('data-src'); @@ -106,7 +106,7 @@ import 'css!./style'; } function emptyImageElement(elem) { - var url; + let url; if (elem.tagName !== 'IMG') { url = elem.style.backgroundImage.slice(4, -1).replace(/"/g, ''); @@ -137,10 +137,10 @@ import 'css!./style'; } export function getPrimaryImageAspectRatio(items) { - var values = []; + const values = []; - for (var i = 0, length = items.length; i < length; i++) { - var ratio = items[i].PrimaryImageAspectRatio || 0; + for (let i = 0, length = items.length; i < length; i++) { + const ratio = items[i].PrimaryImageAspectRatio || 0; if (!ratio) { continue; @@ -158,9 +158,9 @@ import 'css!./style'; return a - b; }); - var half = Math.floor(values.length / 2); + const half = Math.floor(values.length / 2); - var result; + let result; if (values.length % 2) { result = values[half]; @@ -169,13 +169,13 @@ import 'css!./style'; } // If really close to 2:3 (poster image), just return 2:3 - var aspect2x3 = 2 / 3; + const aspect2x3 = 2 / 3; if (Math.abs(aspect2x3 - result) <= 0.15) { return aspect2x3; } // If really close to 16:9 (episode image), just return 16:9 - var aspect16x9 = 16 / 9; + const aspect16x9 = 16 / 9; if (Math.abs(aspect16x9 - result) <= 0.2) { return aspect16x9; } @@ -186,7 +186,7 @@ import 'css!./style'; } // If really close to 4:3 (poster image), just return 2:3 - var aspect4x3 = 4 / 3; + const aspect4x3 = 4 / 3; if (Math.abs(aspect4x3 - result) <= 0.15) { return aspect4x3; } @@ -195,8 +195,8 @@ import 'css!./style'; } export function fillImages(elems) { - for (var i = 0, length = elems.length; i < length; i++) { - var elem = elems[0]; + for (let i = 0, length = elems.length; i < length; i++) { + const elem = elems[0]; fillImage(elem); } } diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 7837003250..e0fbc2fd2e 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -256,8 +256,8 @@ import 'emby-playstatebutton'; } if (options.image !== false) { - var imgUrl = options.imageSource === 'channel' ? getChannelImageUrl(item, downloadWidth) : getImageUrl(item, downloadWidth); - var imageClass = isLargeStyle ? 'listItemImage listItemImage-large' : 'listItemImage'; + const imgUrl = options.imageSource === 'channel' ? getChannelImageUrl(item, downloadWidth) : getImageUrl(item, downloadWidth); + let imageClass = isLargeStyle ? 'listItemImage listItemImage-large' : 'listItemImage'; if (isLargeStyle && layoutManager.tv) { imageClass += ' listItemImage-large-tv'; diff --git a/src/components/metadataEditor/metadataEditor.js b/src/components/metadataEditor/metadataEditor.js index e2ff2a6b56..b768e77c4f 100644 --- a/src/components/metadataEditor/metadataEditor.js +++ b/src/components/metadataEditor/metadataEditor.js @@ -239,7 +239,7 @@ import 'flexStyles'; } function afterDeleted(context, item) { - var parentId = item.ParentId || item.SeasonId || item.SeriesId; + const parentId = item.ParentId || item.SeasonId || item.SeriesId; if (parentId) { reload(context, parentId, item.ServerId); @@ -252,7 +252,7 @@ import 'flexStyles'; function showMoreMenu(context, button, user) { import('itemContextMenu').then(({default: itemContextMenu}) => { - var item = currentItem; + const item = currentItem; itemContextMenu.show({ item: item, diff --git a/src/components/nowPlayingBar/nowPlayingBar.js b/src/components/nowPlayingBar/nowPlayingBar.js index d9521c4c9e..6218197700 100644 --- a/src/components/nowPlayingBar/nowPlayingBar.js +++ b/src/components/nowPlayingBar/nowPlayingBar.js @@ -582,7 +582,7 @@ import 'emby-ratingbutton'; function onPlaybackStart(e, state) { console.debug('nowplaying event: ' + e.type); - var player = this; + const player = this; onStateChanged.call(player, e, state); } diff --git a/src/components/packageManager.js b/src/components/packageManager.js index 2a15a14f34..c4b4701e9d 100644 --- a/src/components/packageManager.js +++ b/src/components/packageManager.js @@ -8,7 +8,7 @@ import pluginManager from 'pluginManager'; init() { console.groupCollapsed('loading packages'); - var manifestUrls = JSON.parse(appSettings.get(this.#settingsKey) || '[]'); + const manifestUrls = JSON.parse(appSettings.get(this.#settingsKey) || '[]'); return Promise.all(manifestUrls.map((url) => { return this.loadPackage(url); @@ -30,7 +30,7 @@ import pluginManager from 'pluginManager'; install(url) { return this.loadPackage(url, true).then((pkg) => { - var manifestUrls = JSON.parse(appSettings.get(this.#settingsKey) || '[]'); + const manifestUrls = JSON.parse(appSettings.get(this.#settingsKey) || '[]'); if (!manifestUrls.includes(url)) { manifestUrls.push(url); @@ -42,7 +42,7 @@ import pluginManager from 'pluginManager'; } uninstall(name) { - var pkg = this.#packagesList.filter((p) => { + const pkg = this.#packagesList.filter((p) => { return p.name === name; })[0]; @@ -58,12 +58,12 @@ import pluginManager from 'pluginManager'; } mapPath(pkg, pluginUrl) { - var urlLower = pluginUrl.toLowerCase(); + const urlLower = pluginUrl.toLowerCase(); if (urlLower.startsWith('http:') || urlLower.startsWith('https:') || urlLower.startsWith('file:')) { return pluginUrl; } - var packageUrl = pkg.url; + let packageUrl = pkg.url; packageUrl = packageUrl.substring(0, packageUrl.lastIndexOf('/')); packageUrl += '/'; @@ -81,7 +81,7 @@ import pluginManager from 'pluginManager'; } removeUrl(url) { - var manifestUrls = JSON.parse(appSettings.get(this.#settingsKey) || '[]'); + let manifestUrls = JSON.parse(appSettings.get(this.#settingsKey) || '[]'); manifestUrls = manifestUrls.filter((i) => { return i !== url; @@ -92,14 +92,14 @@ import pluginManager from 'pluginManager'; loadPackage(url, throwError = false) { return new Promise((resolve, reject) => { - var xhr = new XMLHttpRequest(); - var originalUrl = url; + const xhr = new XMLHttpRequest(); + const originalUrl = url; url += url.indexOf('?') === -1 ? '?' : '&'; url += 't=' + new Date().getTime(); xhr.open('GET', url, true); - var onError = () => { + const onError = () => { if (throwError === true) { reject(); } else { @@ -110,16 +110,16 @@ import pluginManager from 'pluginManager'; xhr.onload = () => { if (this.status < 400) { - var pkg = JSON.parse(this.response); + const pkg = JSON.parse(this.response); pkg.url = originalUrl; this.addPackage(pkg); - var plugins = pkg.plugins || []; + const plugins = pkg.plugins || []; if (pkg.plugin) { plugins.push(pkg.plugin); } - var promises = plugins.map((pluginUrl) => { + const promises = plugins.map((pluginUrl) => { return pluginManager.loadPlugin(this.mapPath(pkg, pluginUrl)); }); Promise.all(promises).then(resolve, resolve); diff --git a/src/components/playback/brightnessosd.js b/src/components/playback/brightnessosd.js index 9d5db62fe0..78c40d10c1 100644 --- a/src/components/playback/brightnessosd.js +++ b/src/components/playback/brightnessosd.js @@ -5,15 +5,15 @@ import browser from 'browser'; import 'css!./iconosd'; import 'material-icons'; -var currentPlayer; -var osdElement; -var iconElement; -var progressElement; +let currentPlayer; +let osdElement; +let iconElement; +let progressElement; -var enableAnimation; +let enableAnimation; function getOsdElementHtml() { - var html = ''; + let html = ''; html += ''; @@ -23,7 +23,7 @@ function getOsdElementHtml() { } function ensureOsdElement() { - var elem = osdElement; + let elem = osdElement; if (!elem) { enableAnimation = browser.supportsCssAnimation(); @@ -46,11 +46,11 @@ function onHideComplete() { this.classList.add('hide'); } -var hideTimeout; +let hideTimeout; function showOsd() { clearHideTimeout(); - var elem = osdElement; + const elem = osdElement; dom.removeEventListener(elem, dom.whichTransitionEvent(), onHideComplete, { once: true @@ -78,7 +78,7 @@ function clearHideTimeout() { function hideOsd() { clearHideTimeout(); - var elem = osdElement; + const elem = osdElement; if (elem) { if (enableAnimation) { // trigger reflow @@ -118,7 +118,7 @@ function updateElementsFromPlayer(brightness) { } function releaseCurrentPlayer() { - var player = currentPlayer; + const player = currentPlayer; if (player) { events.off(player, 'brightnesschange', onBrightnessChanged); @@ -128,7 +128,7 @@ function releaseCurrentPlayer() { } function onBrightnessChanged(e) { - var player = this; + const player = this; ensureOsdElement(); diff --git a/src/components/playback/nowplayinghelper.js b/src/components/playback/nowplayinghelper.js index d7f9d04865..a2b72ca84f 100644 --- a/src/components/playback/nowplayinghelper.js +++ b/src/components/playback/nowplayinghelper.js @@ -1,7 +1,7 @@ export function getNowPlayingNames(nowPlayingItem, includeNonNameInfo) { - var topItem = nowPlayingItem; - var bottomItem = null; - var topText = nowPlayingItem.Name; + let topItem = nowPlayingItem; + let bottomItem = null; + let topText = nowPlayingItem.Name; if (nowPlayingItem.AlbumId && nowPlayingItem.MediaType === 'Audio') { topItem = { @@ -21,7 +21,7 @@ export function getNowPlayingNames(nowPlayingItem, includeNonNameInfo) { } } - var bottomText = ''; + let bottomText = ''; if (nowPlayingItem.ArtistItems && nowPlayingItem.ArtistItems.length) { bottomItem = { @@ -56,7 +56,7 @@ export function getNowPlayingNames(nowPlayingItem, includeNonNameInfo) { bottomText = nowPlayingItem.ProductionYear; } - var list = []; + const list = []; list.push({ text: topText, diff --git a/src/components/playback/playbackorientation.js b/src/components/playback/playbackorientation.js index b73377bade..f585f25ae1 100644 --- a/src/components/playback/playbackorientation.js +++ b/src/components/playback/playbackorientation.js @@ -2,7 +2,7 @@ import playbackManager from 'playbackManager'; import layoutManager from 'layoutManager'; import events from 'events'; -var orientationLocked; +let orientationLocked; function onOrientationChangeSuccess() { orientationLocked = true; @@ -14,15 +14,15 @@ function onOrientationChangeError(err) { } events.on(playbackManager, 'playbackstart', function (e, player, state) { - var isLocalVideo = player.isLocalPlayer && !player.isExternalPlayer && playbackManager.isPlayingVideo(player); + const isLocalVideo = player.isLocalPlayer && !player.isExternalPlayer && playbackManager.isPlayingVideo(player); if (isLocalVideo && layoutManager.mobile) { /* eslint-disable-next-line compat/compat */ - var lockOrientation = window.screen.lockOrientation || window.screen.mozLockOrientation || window.screen.msLockOrientation || (window.screen.orientation && window.screen.orientation.lock); + const lockOrientation = window.screen.lockOrientation || window.screen.mozLockOrientation || window.screen.msLockOrientation || (window.screen.orientation && window.screen.orientation.lock); if (lockOrientation) { try { - var promise = lockOrientation('landscape'); + const promise = lockOrientation('landscape'); if (promise.then) { promise.then(onOrientationChangeSuccess, onOrientationChangeError); } else { @@ -39,7 +39,7 @@ events.on(playbackManager, 'playbackstart', function (e, player, state) { events.on(playbackManager, 'playbackstop', function (e, playbackStopInfo) { if (orientationLocked && !playbackStopInfo.nextMediaType) { /* eslint-disable-next-line compat/compat */ - var unlockOrientation = window.screen.unlockOrientation || window.screen.mozUnlockOrientation || window.screen.msUnlockOrientation || (window.screen.orientation && window.screen.orientation.unlock); + const unlockOrientation = window.screen.unlockOrientation || window.screen.mozUnlockOrientation || window.screen.msUnlockOrientation || (window.screen.orientation && window.screen.orientation.unlock); if (unlockOrientation) { try { diff --git a/src/components/playback/playerSelectionMenu.js b/src/components/playback/playerSelectionMenu.js index 0afa56faf4..38ff399a9e 100644 --- a/src/components/playback/playerSelectionMenu.js +++ b/src/components/playback/playerSelectionMenu.js @@ -9,7 +9,7 @@ import appHost from 'apphost'; import * as autocast from 'autocast'; function mirrorItem(info, player) { - var item = info.item; + const item = info.item; playbackManager.displayContent({ @@ -22,7 +22,7 @@ function mirrorItem(info, player) { function mirrorIfEnabled(info) { if (info && playbackManager.enableDisplayMirroring()) { - var getPlayerInfo = playbackManager.getPlayerInfo(); + const getPlayerInfo = playbackManager.getPlayerInfo(); if (getPlayerInfo) { if (!getPlayerInfo.isLocalPlayer && getPlayerInfo.supportedCommands.indexOf('DisplayContent') !== -1) { @@ -45,7 +45,7 @@ function getTargetSecondaryText(target) { } function getIcon(target) { - var deviceType = target.deviceType; + let deviceType = target.deviceType; if (!deviceType && target.isLocalPlayer) { if (browser.tv) { @@ -78,7 +78,7 @@ function getIcon(target) { } export function show(button) { - var currentPlayerInfo = playbackManager.getPlayerInfo(); + const currentPlayerInfo = playbackManager.getPlayerInfo(); if (currentPlayerInfo) { if (!currentPlayerInfo.isLocalPlayer) { @@ -87,13 +87,13 @@ export function show(button) { } } - var currentPlayerId = currentPlayerInfo ? currentPlayerInfo.id : null; + const currentPlayerId = currentPlayerInfo ? currentPlayerInfo.id : null; loading.show(); playbackManager.getTargets().then(function (targets) { - var menuItems = targets.map(function (t) { - var name = t.name; + const menuItems = targets.map(function (t) { + let name = t.name; if (t.appName && t.appName !== t.name) { name += ' - ' + t.appName; @@ -111,7 +111,7 @@ export function show(button) { import('actionsheet').then(({default: actionsheet}) => { loading.hide(); - var menuOptions = { + const menuOptions = { title: globalize.translate('HeaderPlayOn'), items: menuItems, positionTo: button, @@ -127,7 +127,7 @@ export function show(button) { } actionsheet.show(menuOptions).then(function (id) { - var target = targets.filter(function (t) { + const target = targets.filter(function (t) { return t.id === id; })[0]; @@ -153,7 +153,7 @@ function showActivePlayerMenu(playerInfo) { function disconnectFromPlayer(currentDeviceName) { if (playbackManager.getSupportedCommands().indexOf('EndSession') !== -1) { import('dialog').then(({default: dialog}) => { - var menuItems = []; + const menuItems = []; menuItems.push({ name: globalize.translate('Yes'), @@ -188,9 +188,9 @@ function disconnectFromPlayer(currentDeviceName) { } function showActivePlayerMenuInternal(dialogHelper, playerInfo) { - var html = ''; + let html = ''; - var dialogOptions = { + const dialogOptions = { removeOnClose: true }; @@ -199,11 +199,11 @@ function showActivePlayerMenuInternal(dialogHelper, playerInfo) { dialogOptions.exitAnimationDuration = 160; dialogOptions.autoFocus = false; - var dlg = dialogHelper.createDialog(dialogOptions); + const dlg = dialogHelper.createDialog(dialogOptions); dlg.classList.add('promptDialog'); - var currentDeviceName = (playerInfo.deviceName || playerInfo.name); + const currentDeviceName = (playerInfo.deviceName || playerInfo.name); html += '
    '; html += '

    '; @@ -214,7 +214,7 @@ function showActivePlayerMenuInternal(dialogHelper, playerInfo) { if (playerInfo.supportedCommands.indexOf('DisplayContent') !== -1) { html += ''; @@ -224,7 +224,7 @@ function showActivePlayerMenuInternal(dialogHelper, playerInfo) { if (autocast.supported()) { html += '
    '; @@ -240,21 +240,21 @@ function showActivePlayerMenuInternal(dialogHelper, playerInfo) { html += '

    '; dlg.innerHTML = html; - var chkMirror = dlg.querySelector('.chkMirror'); + const chkMirror = dlg.querySelector('.chkMirror'); if (chkMirror) { chkMirror.addEventListener('change', onMirrorChange); } - var chkAutoCast = dlg.querySelector('.chkAutoCast'); + const chkAutoCast = dlg.querySelector('.chkAutoCast'); if (chkAutoCast) { chkAutoCast.addEventListener('change', onAutoCastChange); } - var destination = ''; + let destination = ''; - var btnRemoteControl = dlg.querySelector('.btnRemoteControl'); + const btnRemoteControl = dlg.querySelector('.btnRemoteControl'); if (btnRemoteControl) { btnRemoteControl.addEventListener('click', function () { destination = 'nowplaying'; @@ -289,8 +289,8 @@ function onAutoCastChange() { } document.addEventListener('viewshow', function (e) { - var state = e.detail.state || {}; - var item = state.item; + const state = e.detail.state || {}; + const item = state.item; if (item && item.ServerId) { mirrorIfEnabled({ diff --git a/src/components/playback/playersettingsmenu.js b/src/components/playback/playersettingsmenu.js index 77f22b6b6c..40819f62ea 100644 --- a/src/components/playback/playersettingsmenu.js +++ b/src/components/playback/playersettingsmenu.js @@ -4,13 +4,13 @@ import globalize from 'globalize'; import qualityoptions from 'qualityoptions'; function showQualityMenu(player, btn) { - var videoStream = playbackManager.currentMediaSource(player).MediaStreams.filter(function (stream) { + const videoStream = playbackManager.currentMediaSource(player).MediaStreams.filter(function (stream) { return stream.Type === 'Video'; })[0]; - var videoWidth = videoStream ? videoStream.Width : null; - var videoHeight = videoStream ? videoStream.Height : null; + const videoWidth = videoStream ? videoStream.Width : null; + const videoHeight = videoStream ? videoStream.Height : null; - var options = qualityoptions.getVideoQualityOptions({ + const options = qualityoptions.getVideoQualityOptions({ currentMaxBitrate: playbackManager.getMaxStreamingBitrate(player), isAutomaticBitrateEnabled: playbackManager.enableAutomaticBitrateDetection(player), videoWidth: videoWidth, @@ -18,8 +18,8 @@ function showQualityMenu(player, btn) { enableAuto: true }); - var menuItems = options.map(function (o) { - var opt = { + const menuItems = options.map(function (o) { + const opt = { name: o.name, id: o.bitrate, asideText: o.secondaryText @@ -32,7 +32,7 @@ function showQualityMenu(player, btn) { return opt; }); - var selectedId = options.filter(function (o) { + let selectedId = options.filter(function (o) { return o.selected; }); @@ -42,7 +42,7 @@ function showQualityMenu(player, btn) { items: menuItems, positionTo: btn }).then(function (id) { - var bitrate = parseInt(id); + const bitrate = parseInt(id); if (bitrate !== selectedId) { playbackManager.setMaxStreamingBitrate({ enableAutomaticBitrateDetection: bitrate ? false : true, @@ -53,8 +53,8 @@ function showQualityMenu(player, btn) { } function showRepeatModeMenu(player, btn) { - var menuItems = []; - var currentValue = playbackManager.getRepeatMode(player); + const menuItems = []; + const currentValue = playbackManager.getRepeatMode(player); menuItems.push({ name: globalize.translate('RepeatAll'), @@ -85,16 +85,16 @@ function showRepeatModeMenu(player, btn) { } function getQualitySecondaryText(player) { - var state = playbackManager.getPlayerState(player); + const state = playbackManager.getPlayerState(player); - var videoStream = playbackManager.currentMediaSource(player).MediaStreams.filter(function (stream) { + const videoStream = playbackManager.currentMediaSource(player).MediaStreams.filter(function (stream) { return stream.Type === 'Video'; })[0]; - var videoWidth = videoStream ? videoStream.Width : null; - var videoHeight = videoStream ? videoStream.Height : null; + const videoWidth = videoStream ? videoStream.Width : null; + const videoHeight = videoStream ? videoStream.Height : null; - var options = qualityoptions.getVideoQualityOptions({ + const options = qualityoptions.getVideoQualityOptions({ currentMaxBitrate: playbackManager.getMaxStreamingBitrate(player), isAutomaticBitrateEnabled: playbackManager.enableAutomaticBitrateDetection(player), videoWidth: videoWidth, @@ -102,7 +102,7 @@ function getQualitySecondaryText(player) { enableAuto: true }); - var selectedOption = options.filter(function (o) { + let selectedOption = options.filter(function (o) { return o.selected; }); @@ -111,7 +111,7 @@ function getQualitySecondaryText(player) { } selectedOption = selectedOption[0]; - var text = selectedOption.name; + let text = selectedOption.name; if (selectedOption.autoText) { if (state.PlayState && state.PlayState.PlayMethod !== 'Transcode') { @@ -126,8 +126,8 @@ function getQualitySecondaryText(player) { function showAspectRatioMenu(player, btn) { // each has a name and id - var currentId = playbackManager.getAspectRatio(player); - var menuItems = playbackManager.getSupportedAspectRatios(player).map(function (i) { + const currentId = playbackManager.getAspectRatio(player); + const menuItems = playbackManager.getSupportedAspectRatios(player).map(function (i) { return { id: i.id, name: i.name, @@ -171,12 +171,12 @@ function showPlaybackRateMenu(player, btn) { } function showWithUser(options, player, user) { - var supportedCommands = playbackManager.getSupportedCommands(player); + const supportedCommands = playbackManager.getSupportedCommands(player); - var menuItems = []; + const menuItems = []; if (supportedCommands.indexOf('SetAspectRatio') !== -1) { - var currentAspectRatioId = playbackManager.getAspectRatio(player); - var currentAspectRatio = playbackManager.getSupportedAspectRatios(player).filter(function (i) { + const currentAspectRatioId = playbackManager.getAspectRatio(player); + const currentAspectRatio = playbackManager.getSupportedAspectRatios(player).filter(function (i) { return i.id === currentAspectRatioId; })[0]; @@ -199,7 +199,7 @@ function showWithUser(options, player, user) { } if (user && user.Policy.EnableVideoPlaybackTranscoding) { - var secondaryQualityText = getQualitySecondaryText(player); + const secondaryQualityText = getQualitySecondaryText(player); menuItems.push({ name: globalize.translate('Quality'), @@ -208,7 +208,7 @@ function showWithUser(options, player, user) { }); } - var repeatMode = playbackManager.getRepeatMode(player); + const repeatMode = playbackManager.getRepeatMode(player); if (supportedCommands.indexOf('SetRepeatMode') !== -1 && playbackManager.currentMediaSource(player).RunTimeTicks) { menuItems.push({ @@ -243,14 +243,14 @@ function showWithUser(options, player, user) { } export function show(options) { - var player = options.player; - var currentItem = playbackManager.currentItem(player); + const player = options.player; + const currentItem = playbackManager.currentItem(player); if (!currentItem || !currentItem.ServerId) { return showWithUser(options, player, null); } - var apiClient = window.connectionManager.getApiClient(currentItem.ServerId); + const apiClient = window.connectionManager.getApiClient(currentItem.ServerId); return apiClient.getCurrentUser().then(function (user) { return showWithUser(options, player, user); }); diff --git a/src/components/playback/volumeosd.js b/src/components/playback/volumeosd.js index 8a6f534b52..c35914b192 100644 --- a/src/components/playback/volumeosd.js +++ b/src/components/playback/volumeosd.js @@ -5,15 +5,15 @@ import browser from 'browser'; import 'css!./iconosd'; import 'material-icons'; -var currentPlayer; -var osdElement; -var iconElement; -var progressElement; +let currentPlayer; +let osdElement; +let iconElement; +let progressElement; -var enableAnimation; +let enableAnimation; function getOsdElementHtml() { - var html = ''; + let html = ''; html += ''; @@ -23,7 +23,7 @@ function getOsdElementHtml() { } function ensureOsdElement() { - var elem = osdElement; + let elem = osdElement; if (!elem) { enableAnimation = browser.supportsCssAnimation(); @@ -46,11 +46,11 @@ function onHideComplete() { this.classList.add('hide'); } -var hideTimeout; +let hideTimeout; function showOsd() { clearHideTimeout(); - var elem = osdElement; + const elem = osdElement; dom.removeEventListener(elem, dom.whichTransitionEvent(), onHideComplete, { once: true @@ -78,7 +78,7 @@ function clearHideTimeout() { function hideOsd() { clearHideTimeout(); - var elem = osdElement; + const elem = osdElement; if (elem) { if (enableAnimation) { // trigger reflow @@ -108,7 +108,7 @@ function updatePlayerVolumeState(isMuted, volume) { } function releaseCurrentPlayer() { - var player = currentPlayer; + const player = currentPlayer; if (player) { events.off(player, 'volumechange', onVolumeChanged); @@ -118,7 +118,7 @@ function releaseCurrentPlayer() { } function onVolumeChanged(e) { - var player = this; + const player = this; ensureOsdElement(); diff --git a/src/components/playerstats/playerstats.js b/src/components/playerstats/playerstats.js index 5345ed8bcc..e100dee594 100644 --- a/src/components/playerstats/playerstats.js +++ b/src/components/playerstats/playerstats.js @@ -413,7 +413,7 @@ import 'css!./playerstats'; name: 'Original Media Info' }); - var apiClient = window.connectionManager.getApiClient(playbackManager.currentItem(player).ServerId); + const apiClient = window.connectionManager.getApiClient(playbackManager.currentItem(player).ServerId); if (syncPlayManager.isSyncPlayEnabled() && apiClient.isMinServerVersion('10.6.0')) { categories.push({ stats: getSyncPlayStats(), diff --git a/src/components/playmenu.js b/src/components/playmenu.js index c537993ef6..57ee5ca6e3 100644 --- a/src/components/playmenu.js +++ b/src/components/playmenu.js @@ -4,11 +4,11 @@ import playbackManager from 'playbackManager'; import globalize from 'globalize'; export function show(options) { - var item = options.item; + const item = options.item; - var resumePositionTicks = item.UserData ? item.UserData.PlaybackPositionTicks : null; + const resumePositionTicks = item.UserData ? item.UserData.PlaybackPositionTicks : null; - var playableItemId = item.Type === 'Program' ? item.ChannelId : item.Id; + const playableItemId = item.Type === 'Program' ? item.ChannelId : item.Id; if (!resumePositionTicks || item.IsFolder) { playbackManager.play({ @@ -18,7 +18,7 @@ export function show(options) { return; } - var menuItems = []; + const menuItems = []; menuItems.push({ name: globalize.translate('ResumeAt', datetime.getDisplayRunningTime(resumePositionTicks)), diff --git a/src/components/pluginManager.js b/src/components/pluginManager.js index 55a5c230ff..c07c77b736 100644 --- a/src/components/pluginManager.js +++ b/src/components/pluginManager.js @@ -3,7 +3,7 @@ import globalize from 'globalize'; /* eslint-disable indent */ // TODO: replace with each plugin version - var cacheParam = new Date().getTime(); + const cacheParam = new Date().getTime(); class PluginManager { pluginsList = []; @@ -13,7 +13,7 @@ import globalize from 'globalize'; } #loadStrings(plugin) { - var strings = plugin.getTranslations ? plugin.getTranslations() : []; + const strings = plugin.getTranslations ? plugin.getTranslations() : []; return globalize.loadStrings({ name: plugin.id || plugin.packageName, strings: strings @@ -56,10 +56,10 @@ import globalize from 'globalize'; return new Promise((resolve, reject) => { require([pluginSpec], (pluginFactory) => { - var plugin = pluginFactory.default ? new pluginFactory.default() : new pluginFactory(); + const plugin = pluginFactory.default ? new pluginFactory.default() : new pluginFactory(); // See if it's already installed - var existing = this.pluginsList.filter(function (p) { + const existing = this.pluginsList.filter(function (p) { return p.id === plugin.id; })[0]; @@ -69,10 +69,10 @@ import globalize from 'globalize'; plugin.installUrl = pluginSpec; - var separatorIndex = Math.max(pluginSpec.lastIndexOf('/'), pluginSpec.lastIndexOf('\\')); + const separatorIndex = Math.max(pluginSpec.lastIndexOf('/'), pluginSpec.lastIndexOf('\\')); plugin.baseUrl = pluginSpec.substring(0, separatorIndex); - var paths = {}; + const paths = {}; paths[plugin.id] = plugin.baseUrl; requirejs.config({ @@ -135,7 +135,7 @@ import globalize from 'globalize'; })[0]; } - var url = plugin.baseUrl + '/' + path; + let url = plugin.baseUrl + '/' + path; if (addCacheParam) { url += url.includes('?') ? '&' : '?'; diff --git a/src/components/qualityOptions.js b/src/components/qualityOptions.js index 63d9557c7b..93a8d5fe73 100644 --- a/src/components/qualityOptions.js +++ b/src/components/qualityOptions.js @@ -1,9 +1,9 @@ import globalize from 'globalize'; export function getVideoQualityOptions(options) { - var maxStreamingBitrate = options.currentMaxBitrate; - var videoWidth = options.videoWidth; - var videoHeight = options.videoHeight; + const maxStreamingBitrate = options.currentMaxBitrate; + let videoWidth = options.videoWidth; + const videoHeight = options.videoHeight; // If the aspect ratio is less than 16/9 (1.77), set the width as if it were pillarboxed. // 4:3 1440x1080 -> 1920x1080 @@ -11,9 +11,9 @@ export function getVideoQualityOptions(options) { videoWidth = videoHeight * (16 / 9); } - var maxAllowedWidth = videoWidth || 4096; + const maxAllowedWidth = videoWidth || 4096; - var qualityOptions = []; + const qualityOptions = []; if (maxAllowedWidth >= 3800) { qualityOptions.push({ name: '4K - 120 Mbps', maxHeight: 2160, bitrate: 120000000 }); @@ -65,7 +65,7 @@ export function getVideoQualityOptions(options) { qualityOptions.push({ name: '240p', maxHeight: 240, bitrate: 320000 }); qualityOptions.push({ name: '144p', maxHeight: 144, bitrate: 192000 }); - var autoQualityOption = { + const autoQualityOption = { name: globalize.translate('Auto'), bitrate: 0, selected: options.isAutomaticBitrateEnabled @@ -76,9 +76,9 @@ export function getVideoQualityOptions(options) { } if (maxStreamingBitrate) { - var selectedIndex = -1; - for (var i = 0, length = qualityOptions.length; i < length; i++) { - var option = qualityOptions[i]; + let selectedIndex = -1; + for (let i = 0, length = qualityOptions.length; i < length; i++) { + const option = qualityOptions[i]; if (selectedIndex === -1 && option.bitrate <= maxStreamingBitrate) { selectedIndex = i; @@ -89,7 +89,7 @@ export function getVideoQualityOptions(options) { selectedIndex = qualityOptions.length - 1; } - var currentQualityOption = qualityOptions[selectedIndex]; + const currentQualityOption = qualityOptions[selectedIndex]; if (!options.isAutomaticBitrateEnabled) { currentQualityOption.selected = true; @@ -102,9 +102,9 @@ export function getVideoQualityOptions(options) { } export function getAudioQualityOptions(options) { - var maxStreamingBitrate = options.currentMaxBitrate; + const maxStreamingBitrate = options.currentMaxBitrate; - var qualityOptions = []; + const qualityOptions = []; qualityOptions.push({ name: '2 Mbps', bitrate: 2000000 }); qualityOptions.push({ name: '1.5 Mbps', bitrate: 1500000 }); @@ -116,7 +116,7 @@ export function getAudioQualityOptions(options) { qualityOptions.push({ name: '96 kbps', bitrate: 96000 }); qualityOptions.push({ name: '64 kbps', bitrate: 64000 }); - var autoQualityOption = { + const autoQualityOption = { name: globalize.translate('Auto'), bitrate: 0, selected: options.isAutomaticBitrateEnabled @@ -127,9 +127,9 @@ export function getAudioQualityOptions(options) { } if (maxStreamingBitrate) { - var selectedIndex = -1; - for (var i = 0, length = qualityOptions.length; i < length; i++) { - var option = qualityOptions[i]; + let selectedIndex = -1; + for (let i = 0, length = qualityOptions.length; i < length; i++) { + const option = qualityOptions[i]; if (selectedIndex === -1 && option.bitrate <= maxStreamingBitrate) { selectedIndex = i; @@ -140,7 +140,7 @@ export function getAudioQualityOptions(options) { selectedIndex = qualityOptions.length - 1; } - var currentQualityOption = qualityOptions[selectedIndex]; + const currentQualityOption = qualityOptions[selectedIndex]; if (!options.isAutomaticBitrateEnabled) { currentQualityOption.selected = true; diff --git a/src/components/require/requirecss.js b/src/components/require/requirecss.js index 8aaa04d689..ca6910e319 100644 --- a/src/components/require/requirecss.js +++ b/src/components/require/requirecss.js @@ -1,7 +1,7 @@ define(function () { 'use strict'; - var requireCss = {}; + const requireCss = {}; requireCss.normalize = function (name, normalize) { if (name.substr(name.length - 4, 4) === '.css') { @@ -11,7 +11,7 @@ define(function () { return normalize(name); }; - var importedCss = []; + let importedCss = []; function isLoaded(url) { return importedCss.indexOf(url) !== -1; @@ -27,14 +27,14 @@ define(function () { requireCss.load = function (cssId, req, load, config) { // Somehow if the url starts with /css, require will get all screwed up since this extension is also called css - var srch = 'components/require/requirecss'; - var index = cssId.indexOf(srch); + const srch = 'components/require/requirecss'; + const index = cssId.indexOf(srch); if (index !== -1) { cssId = 'css' + cssId.substring(index + srch.length); } - var url = cssId + '.css'; + let url = cssId + '.css'; if (url.indexOf('://') === -1) { url = config.baseUrl + url; @@ -43,13 +43,13 @@ define(function () { if (!isLoaded(url)) { importedCss.push(url); - var link = document.createElement('link'); + const link = document.createElement('link'); link.setAttribute('rel', 'stylesheet'); link.setAttribute('type', 'text/css'); link.onload = load; - var linkUrl = url; + let linkUrl = url; if (config.urlArgs) { linkUrl += config.urlArgs(cssId, url); diff --git a/src/components/require/requiretext.js b/src/components/require/requiretext.js index 28ddeb21c8..12822a29e7 100644 --- a/src/components/require/requiretext.js +++ b/src/components/require/requiretext.js @@ -2,7 +2,7 @@ define(function () { 'use strict'; // hack to work around the server's auto-redirection feature - var addRedirectPrevention = window.dashboardVersion != null && window.Dashboard && !window.AppInfo.isNativeApp; + const addRedirectPrevention = window.dashboardVersion != null && window.Dashboard && !window.AppInfo.isNativeApp; return { @@ -25,7 +25,7 @@ define(function () { url += 'r=0'; } - var xhr = new XMLHttpRequest(); + const xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.onload = function (e) { diff --git a/src/components/serviceworker/notifications.js b/src/components/serviceworker/notifications.js index 9b50553244..cc2ee65320 100644 --- a/src/components/serviceworker/notifications.js +++ b/src/components/serviceworker/notifications.js @@ -2,7 +2,7 @@ (function () { 'use strict'; - var connectionManager; + let connectionManager; function getApiClient(serverId) { if (connectionManager) { @@ -28,12 +28,12 @@ /* eslint-disable-next-line no-restricted-globals -- self is valid in a serviceworker environment */ self.addEventListener('notificationclick', function (event) { - var notification = event.notification; + const notification = event.notification; notification.close(); - var data = notification.data; - var serverId = data.serverId; - var action = event.action; + const data = notification.data; + const serverId = data.serverId; + const action = event.action; if (!action) { clients.openWindow('/'); diff --git a/src/components/syncPlay/groupSelectionMenu.js b/src/components/syncPlay/groupSelectionMenu.js index 655dc76010..b554817b8c 100644 --- a/src/components/syncPlay/groupSelectionMenu.js +++ b/src/components/syncPlay/groupSelectionMenu.js @@ -12,7 +12,7 @@ import playbackPermissionManager from 'playbackPermissionManager'; * @returns {string} The player's id. */ function getActivePlayerId () { - var info = playbackManager.getPlayerInfo(); + const info = playbackManager.getPlayerInfo(); return info ? info.id : null; } @@ -38,7 +38,7 @@ function showNewJoinGroupSelection (button, user, apiClient) { apiClient.getSyncPlayGroups().then(function (response) { response.json().then(function (groups) { - var menuItems = groups.map(function (group) { + const menuItems = groups.map(function (group) { return { name: group.PlayingItemName, icon: 'group', @@ -72,7 +72,7 @@ function showNewJoinGroupSelection (button, user, apiClient) { return; } - var menuOptions = { + const menuOptions = { title: globalize.translate('HeaderSyncPlaySelectGroup'), items: menuItems, positionTo: button, @@ -129,7 +129,7 @@ function showLeaveGroupSelection (button, user, apiClient) { secondaryText: globalize.translate('LabelSyncPlayLeaveGroupDescription') }]; - var menuOptions = { + const menuOptions = { title: globalize.translate('HeaderSyncPlayEnabled'), items: menuItems, positionTo: button, diff --git a/src/components/syncPlay/syncPlayManager.js b/src/components/syncPlay/syncPlayManager.js index 3be3a3cedf..c72d20a111 100644 --- a/src/components/syncPlay/syncPlayManager.js +++ b/src/components/syncPlay/syncPlayManager.js @@ -40,7 +40,7 @@ function waitForEventOnce(emitter, eventType, timeout) { * @returns {string} The player's id. */ function getActivePlayerId() { - var info = playbackManager.getPlayerInfo(); + const info = playbackManager.getPlayerInfo(); return info ? info.id : null; } @@ -276,7 +276,7 @@ class SyncPlayManager { * Removes the bindings to the current player's events. */ releaseCurrentPlayer () { - var player = this.currentPlayer; + const player = this.currentPlayer; if (player) { events.off(player, 'unpause', this._onPlayerUnpause); events.off(player, 'pause', this._onPlayerPause); @@ -426,7 +426,7 @@ class SyncPlayManager { serverId: serverId }).then(() => { waitForEventOnce(this, 'playbackstart', WaitForEventDefaultTimeout).then(() => { - var sessionId = getActivePlayerId(); + const sessionId = getActivePlayerId(); if (!sessionId) { console.error('Missing sessionId!'); toast({ @@ -659,7 +659,7 @@ class SyncPlayManager { * Overrides PlaybackManager's unpause method. */ playRequest (player) { - var apiClient = window.connectionManager.currentApiClient(); + const apiClient = window.connectionManager.currentApiClient(); apiClient.requestSyncPlayStart(); } @@ -667,7 +667,7 @@ class SyncPlayManager { * Overrides PlaybackManager's pause method. */ pauseRequest (player) { - var apiClient = window.connectionManager.currentApiClient(); + const apiClient = window.connectionManager.currentApiClient(); apiClient.requestSyncPlayPause(); // Pause locally as well, to give the user some little control playbackManager._localUnpause(player); @@ -677,7 +677,7 @@ class SyncPlayManager { * Overrides PlaybackManager's seek method. */ seekRequest (PositionTicks, player) { - var apiClient = window.connectionManager.currentApiClient(); + const apiClient = window.connectionManager.currentApiClient(); apiClient.requestSyncPlaySeek({ PositionTicks: PositionTicks }); diff --git a/src/components/tabbedview/tabbedview.js b/src/components/tabbedview/tabbedview.js index 710a0e3c40..4e7ccb6529 100644 --- a/src/components/tabbedview/tabbedview.js +++ b/src/components/tabbedview/tabbedview.js @@ -4,7 +4,7 @@ import layoutManager from 'layoutManager'; import 'emby-tabs'; function onViewDestroy(e) { - var tabControllers = this.tabControllers; + const tabControllers = this.tabControllers; if (tabControllers) { tabControllers.forEach(function (t) { @@ -32,9 +32,9 @@ class TabbedView { this.view = view; this.params = params; - var self = this; + const self = this; - var currentTabIndex = parseInt(params.tab || this.getDefaultTabIndex(params.parentId)); + let currentTabIndex = parseInt(params.tab || this.getDefaultTabIndex(params.parentId)); this.initialTabIndex = currentTabIndex; function validateTabLoad(index) { @@ -44,7 +44,7 @@ class TabbedView { function loadTab(index, previousIndex) { validateTabLoad(index).then(function () { self.getTabController(index).then(function (controller) { - var refresh = !controller.refreshed; + const refresh = !controller.refreshed; controller.onResume({ autoFocus: previousIndex == null && layoutManager.tv, @@ -64,10 +64,10 @@ class TabbedView { } function onTabChange(e) { - var newIndex = parseInt(e.detail.selectedTabIndex); - var previousIndex = e.detail.previousIndex; + const newIndex = parseInt(e.detail.selectedTabIndex); + const previousIndex = e.detail.previousIndex; - var previousTabController = previousIndex == null ? null : self.tabControllers[previousIndex]; + const previousTabController = previousIndex == null ? null : self.tabControllers[previousIndex]; if (previousTabController && previousTabController.onPause) { previousTabController.onPause(); } @@ -92,7 +92,7 @@ class TabbedView { this.setTitle(); backdrop.clearBackdrop(); - var currentTabController = this.currentTabController; + const currentTabController = this.currentTabController; if (!currentTabController) { mainTabsManager.selectedTabIndex(this.initialTabIndex); @@ -102,7 +102,7 @@ class TabbedView { } onPause() { - var currentTabController = this.currentTabController; + const currentTabController = this.currentTabController; if (currentTabController && currentTabController.onPause) { currentTabController.onPause(); diff --git a/src/controllers/dashboard/logs.js b/src/controllers/dashboard/logs.js index 7bf2785d50..e28c2ac12f 100644 --- a/src/controllers/dashboard/logs.js +++ b/src/controllers/dashboard/logs.js @@ -9,21 +9,21 @@ import 'flexStyles'; export default function(view, params) { view.addEventListener('viewbeforeshow', function() { loading.show(); - var apiClient = ApiClient; + const apiClient = ApiClient; apiClient.getJSON(apiClient.getUrl('System/Logs')).then(function(logs) { - var html = ''; + let html = ''; html += '
    '; html += logs.map(function(log) { - var logUrl = apiClient.getUrl('System/Logs/Log', { + let logUrl = apiClient.getUrl('System/Logs/Log', { name: log.Name }); logUrl += '&api_key=' + apiClient.accessToken(); - var logHtml = ''; + let logHtml = ''; logHtml += ''; logHtml += '
    '; logHtml += "

    " + log.Name + '

    '; - var date = datetime.parseISO8601Date(log.DateModified, true); - var text = datetime.toLocaleDateString(date); + const date = datetime.parseISO8601Date(log.DateModified, true); + let text = datetime.toLocaleDateString(date); text += ' ' + datetime.getDisplayTime(date); logHtml += '
    ' + text + '
    '; logHtml += '
    '; diff --git a/src/controllers/dashboard/plugins/repositories/index.js b/src/controllers/dashboard/plugins/repositories/index.js index 8d1cbf3164..3abee6c90f 100644 --- a/src/controllers/dashboard/plugins/repositories/index.js +++ b/src/controllers/dashboard/plugins/repositories/index.js @@ -42,10 +42,10 @@ function saveList(page) { } function populateList(options) { - var html = ''; + let html = ''; html += '
    '; - for (var i = 0; i < options.repositories.length; i++) { + for (let i = 0; i < options.repositories.length; i++) { html += getRepositoryHtml(options.repositories[i]); } @@ -59,7 +59,7 @@ function populateList(options) { } function getRepositoryHtml(repository) { - var html = ''; + let html = ''; html += '
    '; html += ``; @@ -93,9 +93,9 @@ export default function(view, params) { libraryMenu.setTabs('plugins', 2, getTabs); reloadList(this); - var save = this; + const save = this; $('#repositories', view).on('click', '.btnDelete', function() { - var button = this; + const button = this; repositories = repositories.filter(function (r) { return r.Url !== button.id; }); diff --git a/src/controllers/edititemmetadata.js b/src/controllers/edititemmetadata.js index 57c72dda28..dd51ba2581 100644 --- a/src/controllers/edititemmetadata.js +++ b/src/controllers/edititemmetadata.js @@ -20,7 +20,7 @@ export default function (view, params) { }); MetadataEditor.setCurrentItemId(null); view.querySelector('.libraryTree').addEventListener('itemclicked', function (event) { - var data = event.detail; + const data = event.detail; if (data.id != MetadataEditor.getCurrentItemId()) { MetadataEditor.setCurrentItemId(data.id); diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 4036128b51..a53fa65437 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -395,7 +395,7 @@ import 'emby-button'; view.addEventListener('viewshow', function (e) { initTabs(); if (!view.getAttribute('data-title')) { - var parentId = params.topParentId; + const parentId = params.topParentId; if (parentId) { ApiClient.getItem(ApiClient.getCurrentUserId(), parentId).then(function (item) { diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index a93bfea4e3..580578e68d 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -56,7 +56,7 @@ import 'flexStyles'; EnableTotalRecordCount: false }; ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) { - var elem = page.querySelector('#recentlyAddedSongs'); + const elem = page.querySelector('#recentlyAddedSongs'); elem.innerHTML = cardBuilder.getCardsHtml({ items: items, showUnplayedIndicator: false, @@ -103,7 +103,7 @@ import 'flexStyles'; elem.classList.add('hide'); } - var itemsContainer = elem.querySelector('.itemsContainer'); + const itemsContainer = elem.querySelector('.itemsContainer'); itemsContainer.innerHTML = cardBuilder.getCardsHtml({ items: result.Items, showUnplayedIndicator: false, @@ -145,7 +145,7 @@ import 'flexStyles'; elem.classList.add('hide'); } - var itemsContainer = elem.querySelector('.itemsContainer'); + const itemsContainer = elem.querySelector('.itemsContainer'); itemsContainer.innerHTML = cardBuilder.getCardsHtml({ items: result.Items, showUnplayedIndicator: false, diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js index 274d752e49..1592e6b112 100644 --- a/src/controllers/session/login/index.js +++ b/src/controllers/session/login/index.js @@ -16,7 +16,7 @@ import 'emby-checkbox'; function authenticateUserByName(page, apiClient, username, password) { loading.show(); apiClient.authenticateUserByName(username, password).then(function (result) { - var user = result.User; + const user = result.User; loading.hide(); onLoginSuccessful(user.Id, result.AccessToken, apiClient); diff --git a/src/elements/emby-progressring/emby-progressring.js b/src/elements/emby-progressring/emby-progressring.js index 929b80a573..63b9f73f10 100644 --- a/src/elements/emby-progressring/emby-progressring.js +++ b/src/elements/emby-progressring/emby-progressring.js @@ -14,14 +14,14 @@ import 'webcomponents'; if (window.MutationObserver) { // create an observer instance - var observer = new MutationObserver(function (mutations) { + const observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { instance.setProgress(parseFloat(instance.getAttribute('data-progress') || '0')); }); }); // configuration of the observer: - var config = { attributes: true, childList: false, characterData: false }; + const config = { attributes: true, childList: false, characterData: false }; // pass in the target node, as well as the observer options observer.observe(instance, config); diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 40d2e69bbb..555394af0d 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -54,7 +54,7 @@ import 'emby-input'; // Snap to step if (range.step !== 'any') { - var step = range.step || 1; + const step = range.step || 1; value = Math.round(value / step) * step; } diff --git a/src/legacy/focusPreventScroll.js b/src/legacy/focusPreventScroll.js index 93f53dca29..8f912207b5 100644 --- a/src/legacy/focusPreventScroll.js +++ b/src/legacy/focusPreventScroll.js @@ -2,16 +2,16 @@ if (HTMLElement.prototype.nativeFocus === undefined) { (function () { - var supportsPreventScrollOption = false; + let supportsPreventScrollOption = false; try { - var focusElem = document.createElement('div'); + const focusElem = document.createElement('div'); focusElem.addEventListener('focus', function(event) { event.preventDefault(); event.stopPropagation(); }, true); - var opts = Object.defineProperty({}, 'preventScroll', { + const opts = Object.defineProperty({}, 'preventScroll', { // eslint-disable-next-line getter-return get: function () { supportsPreventScrollOption = true; @@ -27,8 +27,8 @@ if (HTMLElement.prototype.nativeFocus === undefined) { HTMLElement.prototype.nativeFocus = HTMLElement.prototype.focus; HTMLElement.prototype.focus = function(options) { - var scrollX = window.scrollX; - var scrollY = window.scrollY; + const scrollX = window.scrollX; + const scrollY = window.scrollY; this.nativeFocus(); diff --git a/src/libraries/navdrawer/navdrawer.js b/src/libraries/navdrawer/navdrawer.js index 965b68aee4..ab50ec5831 100644 --- a/src/libraries/navdrawer/navdrawer.js +++ b/src/libraries/navdrawer/navdrawer.js @@ -14,26 +14,26 @@ export default function (options) { function onMenuTouchStart(e) { options.target.classList.remove('transition'); - var touches = getTouches(e); - var touch = touches[0] || {}; + const touches = getTouches(e); + const touch = touches[0] || {}; menuTouchStartX = touch.clientX; menuTouchStartY = touch.clientY; menuTouchStartTime = new Date().getTime(); } function setVelocity(deltaX) { - var time = new Date().getTime() - (menuTouchStartTime || 0); + const time = new Date().getTime() - (menuTouchStartTime || 0); velocity = Math.abs(deltaX) / time; } function onMenuTouchMove(e) { - var isOpen = self.visible; - var touches = getTouches(e); - var touch = touches[0] || {}; - var endX = touch.clientX || 0; - var endY = touch.clientY || 0; - var deltaX = endX - (menuTouchStartX || 0); - var deltaY = endY - (menuTouchStartY || 0); + const isOpen = self.visible; + const touches = getTouches(e); + const touch = touches[0] || {}; + const endX = touch.clientX || 0; + const endY = touch.clientY || 0; + const deltaX = endX - (menuTouchStartX || 0); + const deltaY = endY - (menuTouchStartY || 0); setVelocity(deltaX); if (isOpen && dragMode !== 1 && deltaX > 0) { @@ -58,12 +58,12 @@ export default function (options) { options.target.classList.add('transition'); scrollContainer.removeEventListener('scroll', disableEvent); dragMode = 0; - var touches = getTouches(e); - var touch = touches[0] || {}; - var endX = touch.clientX || 0; - var endY = touch.clientY || 0; - var deltaX = endX - (menuTouchStartX || 0); - var deltaY = endY - (menuTouchStartY || 0); + const touches = getTouches(e); + const touch = touches[0] || {}; + const endX = touch.clientX || 0; + const endY = touch.clientY || 0; + const deltaX = endX - (menuTouchStartX || 0); + const deltaY = endY - (menuTouchStartY || 0); currentPos = deltaX; self.checkMenuState(deltaX, deltaY); } @@ -105,20 +105,20 @@ export default function (options) { } function onBackgroundTouchStart(e) { - var touches = getTouches(e); - var touch = touches[0] || {}; + const touches = getTouches(e); + const touch = touches[0] || {}; backgroundTouchStartX = touch.clientX; backgroundTouchStartTime = new Date().getTime(); } function onBackgroundTouchMove(e) { - var touches = getTouches(e); - var touch = touches[0] || {}; - var endX = touch.clientX || 0; + const touches = getTouches(e); + const touch = touches[0] || {}; + const endX = touch.clientX || 0; if (endX <= options.width && self.isVisible) { countStart++; - var deltaX = endX - (backgroundTouchStartX || 0); + const deltaX = endX - (backgroundTouchStartX || 0); if (countStart == 1) { startPoint = deltaX; @@ -127,7 +127,7 @@ export default function (options) { dragMode = 1; newPos = deltaX - startPoint + options.width; self.changeMenuPos(); - var time = new Date().getTime() - (backgroundTouchStartTime || 0); + const time = new Date().getTime() - (backgroundTouchStartTime || 0); velocity = Math.abs(deltaX) / time; } } @@ -137,25 +137,25 @@ export default function (options) { } function onBackgroundTouchEnd(e) { - var touches = getTouches(e); - var touch = touches[0] || {}; - var endX = touch.clientX || 0; - var deltaX = endX - (backgroundTouchStartX || 0); + const touches = getTouches(e); + const touch = touches[0] || {}; + const endX = touch.clientX || 0; + const deltaX = endX - (backgroundTouchStartX || 0); self.checkMenuState(deltaX); countStart = 0; } function onMaskTransitionEnd() { - var classList = mask.classList; + const classList = mask.classList; if (!classList.contains('backdrop')) { classList.add('hide'); } } - var self; - var defaults; - var mask; + let self; + let defaults; + let mask; var newPos = 0; var currentPos = 0; var startPoint = 0; @@ -166,7 +166,7 @@ export default function (options) { var scrollContainer = options.target.querySelector('.mainDrawer-scrollContainer'); scrollContainer.classList.add('scrollY'); - var TouchMenuLA = function () { + const TouchMenuLA = function () { self = this; defaults = { width: 260, @@ -193,9 +193,9 @@ export default function (options) { } }; - var menuTouchStartX; - var menuTouchStartY; - var menuTouchStartTime; + let menuTouchStartX; + let menuTouchStartY; + let menuTouchStartTime; var edgeContainer = document.querySelector('.mainDrawerHandle'); var isPeeking = false; @@ -261,8 +261,8 @@ export default function (options) { } }; - var backgroundTouchStartX; - var backgroundTouchStartTime; + let backgroundTouchStartX; + let backgroundTouchStartTime; TouchMenuLA.prototype.showMask = function () { mask.classList.remove('hide'); @@ -280,7 +280,7 @@ export default function (options) { } }; - var _edgeSwipeEnabled; + let _edgeSwipeEnabled; TouchMenuLA.prototype.setEdgeSwipeEnabled = function (enabled) { if (!options.disableEdgeSwipe) { diff --git a/src/libraries/scroller.js b/src/libraries/scroller.js index dbb3de16e3..de6469c743 100644 --- a/src/libraries/scroller.js +++ b/src/libraries/scroller.js @@ -56,14 +56,14 @@ function within(number, min, max) { } // Other global values -var dragMouseEvents = ['mousemove', 'mouseup']; -var dragTouchEvents = ['touchmove', 'touchend']; -var wheelEvent = (document.implementation.hasFeature('Event.wheel', '3.0') ? 'wheel' : 'mousewheel'); -var interactiveElements = ['INPUT', 'SELECT', 'TEXTAREA']; +const dragMouseEvents = ['mousemove', 'mouseup']; +const dragTouchEvents = ['touchmove', 'touchend']; +const wheelEvent = (document.implementation.hasFeature('Event.wheel', '3.0') ? 'wheel' : 'mousewheel'); +const interactiveElements = ['INPUT', 'SELECT', 'TEXTAREA']; -var scrollerFactory = function (frame, options) { +const scrollerFactory = function (frame, options) { // Extend options - var o = Object.assign({}, { + const o = Object.assign({}, { slidee: null, // Selector, DOM element, or jQuery object with DOM element representing SLIDEE. horizontal: false, // Switch to horizontal mode. @@ -83,7 +83,7 @@ var scrollerFactory = function (frame, options) { }, options); - var isSmoothScrollSupported = 'scrollBehavior' in document.documentElement.style; + const isSmoothScrollSupported = 'scrollBehavior' in document.documentElement.style; // native scroll is a must with touch input // also use native scroll when scrolling vertically in desktop mode - excluding horizontal because the mouse wheel support is choppy at the moment @@ -106,11 +106,11 @@ var scrollerFactory = function (frame, options) { } // Private variables - var self = this; + const self = this; self.options = o; // Frame - var slideeElement = o.slidee ? o.slidee : sibling(frame.firstChild)[0]; + const slideeElement = o.slidee ? o.slidee : sibling(frame.firstChild)[0]; self._pos = { start: 0, center: 0, @@ -119,15 +119,15 @@ var scrollerFactory = function (frame, options) { dest: 0 }; - var transform = !options.enableNativeScroll; + const transform = !options.enableNativeScroll; // Miscellaneous - var scrollSource = frame; - var dragSourceElement = o.dragSource ? o.dragSource : frame; - var dragging = { + const scrollSource = frame; + const dragSourceElement = o.dragSource ? o.dragSource : frame; + const dragging = { released: 1 }; - var scrolling = { + const scrolling = { last: 0, delta: 0, resetTime: 200 @@ -139,10 +139,10 @@ var scrollerFactory = function (frame, options) { self.options = o; self.dragging = dragging; - var nativeScrollElement = frame; + const nativeScrollElement = frame; function sibling(n, elem) { - var matched = []; + const matched = []; for (; n; n = n.nextSibling) { if (n.nodeType === 1 && n !== elem) { @@ -152,10 +152,10 @@ var scrollerFactory = function (frame, options) { return matched; } - var requiresReflow = true; + let requiresReflow = true; - var frameSize = 0; - var slideeSize = 0; + let frameSize = 0; + let slideeSize = 0; function ensureSizeInfo() { if (requiresReflow) { requiresReflow = false; @@ -185,13 +185,13 @@ var scrollerFactory = function (frame, options) { ensureSizeInfo(); // Fix possible overflowing - var pos = self._pos; + const pos = self._pos; self.slideTo(within(pos.dest, pos.start, pos.end)); } } function initFrameResizeObserver() { - var observerOptions = {}; + const observerOptions = {}; self.frameResizeObserver = new ResizeObserver(onResize, observerOptions); @@ -242,7 +242,7 @@ var scrollerFactory = function (frame, options) { } } - var lastAnimate; + let lastAnimate; /** * Animate to a position. @@ -254,7 +254,7 @@ var scrollerFactory = function (frame, options) { */ self.slideTo = function (newPos, immediate, fullItemPos) { ensureSizeInfo(); - var pos = self._pos; + const pos = self._pos; if (layoutManager.tv) { newPos = within(newPos, pos.start); @@ -268,10 +268,10 @@ var scrollerFactory = function (frame, options) { } // Update the animation object - var from = pos.cur; + const from = pos.cur; immediate = immediate || dragging.init || !o.speed; - var now = new Date().getTime(); + const now = new Date().getTime(); if (o.autoImmediate) { if (!immediate && (now - (lastAnimate || 0)) <= 50) { @@ -291,7 +291,7 @@ var scrollerFactory = function (frame, options) { }; function setStyleProperty(elem, name, value, speed, resetTransition) { - var style = elem.style; + const style = elem.style; if (resetTransition || browser.edge) { style.transition = 'none'; @@ -312,7 +312,7 @@ var scrollerFactory = function (frame, options) { } function renderAnimateWithTransform(fromPosition, toPosition, immediate) { - var speed = o.speed; + let speed = o.speed; if (immediate) { speed = o.immediateSpeed || 50; @@ -346,18 +346,18 @@ var scrollerFactory = function (frame, options) { * @return {Object} */ self.getPos = function (item) { - var scrollElement = transform ? slideeElement : nativeScrollElement; - var slideeOffset = getBoundingClientRect(scrollElement); - var itemOffset = getBoundingClientRect(item); + const scrollElement = transform ? slideeElement : nativeScrollElement; + const slideeOffset = getBoundingClientRect(scrollElement); + const itemOffset = getBoundingClientRect(item); - var offset = o.horizontal ? itemOffset.left - slideeOffset.left : itemOffset.top - slideeOffset.top; + let offset = o.horizontal ? itemOffset.left - slideeOffset.left : itemOffset.top - slideeOffset.top; - var size = o.horizontal ? itemOffset.width : itemOffset.height; + let size = o.horizontal ? itemOffset.width : itemOffset.height; if (!size && size !== 0) { size = item[o.horizontal ? 'offsetWidth' : 'offsetHeight']; } - var centerOffset = o.centerOffset || 0; + let centerOffset = o.centerOffset || 0; if (!transform) { centerOffset = 0; @@ -370,11 +370,11 @@ var scrollerFactory = function (frame, options) { ensureSizeInfo(); - var currentStart = self._pos.cur; - var currentEnd = currentStart + frameSize; + const currentStart = self._pos.cur; + const currentEnd = currentStart + frameSize; console.debug('offset:' + offset + ' currentStart:' + currentStart + ' currentEnd:' + currentEnd); - var isVisible = offset >= currentStart && (offset + size) <= currentEnd; + const isVisible = offset >= currentStart && (offset + size) <= currentEnd; return { start: offset, @@ -388,12 +388,12 @@ var scrollerFactory = function (frame, options) { self.getCenterPosition = function (item) { ensureSizeInfo(); - var pos = self.getPos(item); + const pos = self.getPos(item); return within(pos.center, pos.start, pos.end); }; function dragInitSlidee(event) { - var isTouch = event.type === 'touchstart'; + const isTouch = event.type === 'touchstart'; // Ignore when already in progress, or interactive element in non-touch navivagion if (dragging.init || !isTouch && isInteractive(event.target)) { @@ -417,7 +417,7 @@ var scrollerFactory = function (frame, options) { dragging.init = 0; dragging.source = event.target; dragging.touch = isTouch; - var pointer = isTouch ? event.touches[0] : event; + const pointer = isTouch ? event.touches[0] : event; dragging.initX = pointer.pageX; dragging.initY = pointer.pageY; dragging.initPos = self._pos.cur; @@ -455,7 +455,7 @@ var scrollerFactory = function (frame, options) { */ function dragHandler(event) { dragging.released = event.type === 'mouseup' || event.type === 'touchend'; - var pointer = dragging.touch ? event[dragging.released ? 'changedTouches' : 'touches'][0] : event; + const pointer = dragging.touch ? event[dragging.released ? 'changedTouches' : 'touches'][0] : event; dragging.pathX = pointer.pageX - dragging.initX; dragging.pathY = pointer.pageY - dragging.initY; dragging.path = Math.sqrt(Math.pow(dragging.pathX, 2) + Math.pow(dragging.pathY, 2)); @@ -570,12 +570,12 @@ var scrollerFactory = function (frame, options) { */ function scrollHandler(event) { ensureSizeInfo(); - var pos = self._pos; + const pos = self._pos; // Ignore if there is no scrolling to be done if (!o.scrollBy || pos.start === pos.end) { return; } - var delta = normalizeWheelDelta(event); + let delta = normalizeWheelDelta(event); if (transform) { // Trap scrolling only when necessary and/or requested @@ -635,13 +635,13 @@ var scrollerFactory = function (frame, options) { return self; }; - var contentRect = {}; + let contentRect = {}; function onResize(entries) { - var entry = entries[0]; + const entry = entries[0]; if (entry) { - var newRect = entry.contentRect; + const newRect = entry.contentRect; // handle element being hidden if (newRect.width === 0 || newRect.height === 0) { @@ -666,7 +666,7 @@ var scrollerFactory = function (frame, options) { function onFrameClick(e) { if (e.which === 1) { - var focusableParent = focusManager.focusableParent(e.target); + const focusableParent = focusManager.focusableParent(e.target); if (focusableParent && focusableParent !== document.activeElement) { focusableParent.focus(); } @@ -838,7 +838,7 @@ scrollerFactory.prototype.to = function (location, item, immediate) { if (item === undefined) { this.slideTo(this._pos[location], immediate); } else { - var itemPos = this.getPos(item); + const itemPos = this.getPos(item); if (itemPos) { this.slideTo(itemPos[location], immediate, itemPos); @@ -883,7 +883,7 @@ scrollerFactory.prototype.toCenter = function (item, immediate) { }; scrollerFactory.create = function (frame, options) { - var instance = new scrollerFactory(frame, options); + const instance = new scrollerFactory(frame, options); return Promise.resolve(instance); }; diff --git a/src/plugins/comicsPlayer/plugin.js b/src/plugins/comicsPlayer/plugin.js index 2928231391..8cdf3db5e6 100644 --- a/src/plugins/comicsPlayer/plugin.js +++ b/src/plugins/comicsPlayer/plugin.js @@ -103,7 +103,7 @@ export class ComicsPlayer { const downloadUrl = apiClient.getItemDownloadUrl(item.Id); const archiveSource = new ArchiveSource(downloadUrl); - var instance = this; + const instance = this; import('swiper').then(({default: Swiper}) => { archiveSource.load().then(() => { loading.hide(); diff --git a/src/plugins/photoPlayer/plugin.js b/src/plugins/photoPlayer/plugin.js index a7a4ab3760..c40477778e 100644 --- a/src/plugins/photoPlayer/plugin.js +++ b/src/plugins/photoPlayer/plugin.js @@ -10,11 +10,11 @@ export default class PhotoPlayer { play(options) { return new Promise(function (resolve, reject) { import('slideshow').then(({default: slideshow}) => { - var index = options.startIndex || 0; + const index = options.startIndex || 0; - var apiClient = window.connectionManager.currentApiClient(); + const apiClient = window.connectionManager.currentApiClient(); apiClient.getCurrentUser().then(function(result) { - var newSlideShow = new slideshow({ + const newSlideShow = new slideshow({ showTitle: false, cover: false, items: options.items, diff --git a/src/scripts/autocast.js b/src/scripts/autocast.js index 84e07b32cd..8d90451268 100644 --- a/src/scripts/autocast.js +++ b/src/scripts/autocast.js @@ -32,7 +32,7 @@ function onOpen() { const playerId = localStorage.getItem('autocastPlayerId'); playbackManager.getTargets().then(function (targets) { - for (var i = 0; i < targets.length; i++) { + for (let i = 0; i < targets.length; i++) { if (targets[i].id == playerId) { playbackManager.trySetActivePlayer(targets[i].playerName, targets[i]); break; diff --git a/src/scripts/browserDeviceProfile.js b/src/scripts/browserDeviceProfile.js index 9e4a410cea..03663b2884 100644 --- a/src/scripts/browserDeviceProfile.js +++ b/src/scripts/browserDeviceProfile.js @@ -23,7 +23,7 @@ define(['browser'], function (browser) { videoTestElement.canPlayType('video/mp4; codecs="hev1.1.0.L120"').replace(/no/, '')); } - var _supportsTextTracks; + let _supportsTextTracks; function supportsTextTracks() { if (browser.tizen) { return true; @@ -37,7 +37,7 @@ define(['browser'], function (browser) { return _supportsTextTracks; } - var _canPlayHls; + let _canPlayHls; function canPlayHls() { if (_canPlayHls == null) { _canPlayHls = canPlayNativeHls() || canPlayHlsWithMSE(); @@ -51,7 +51,7 @@ define(['browser'], function (browser) { return true; } - var media = document.createElement('video'); + const media = document.createElement('video'); if (media.canPlayType('application/x-mpegURL').replace(/no/, '') || media.canPlayType('application/vnd.apple.mpegURL').replace(/no/, '')) { return true; @@ -107,7 +107,7 @@ define(['browser'], function (browser) { } function canPlayAudioFormat(format) { - var typeString; + let typeString; if (format === 'flac') { if (browser.tizen || browser.web0s || browser.edgeUwp) { @@ -192,9 +192,9 @@ define(['browser'], function (browser) { } function getDirectPlayProfileForVideoContainer(container, videoAudioCodecs, videoTestElement, options) { - var supported = false; - var profileContainer = container; - var videoCodecs = []; + let supported = false; + let profileContainer = container; + const videoCodecs = []; switch (container) { case 'asf': @@ -277,10 +277,10 @@ define(['browser'], function (browser) { } function getGlobalMaxVideoBitrate() { - var isTizenFhd = false; + let isTizenFhd = false; if (browser.tizen) { try { - var isTizenUhd = webapis.productinfo.isUdPanelSupported(); + const isTizenUhd = webapis.productinfo.isUdPanelSupported(); isTizenFhd = !isTizenUhd; console.debug('isTizenFhd = ' + isTizenFhd); } catch (error) { @@ -297,19 +297,19 @@ define(['browser'], function (browser) { return function (options) { options = options || {}; - var physicalAudioChannels = options.audioChannels || (browser.tv || browser.ps4 || browser.xboxOne ? 6 : 2); + const physicalAudioChannels = options.audioChannels || (browser.tv || browser.ps4 || browser.xboxOne ? 6 : 2); - var bitrateSetting = getMaxBitrate(); + const bitrateSetting = getMaxBitrate(); - var videoTestElement = document.createElement('video'); + const videoTestElement = document.createElement('video'); - var canPlayVp8 = videoTestElement.canPlayType('video/webm; codecs="vp8"').replace(/no/, ''); - var canPlayVp9 = videoTestElement.canPlayType('video/webm; codecs="vp9"').replace(/no/, ''); - var webmAudioCodecs = ['vorbis']; + const canPlayVp8 = videoTestElement.canPlayType('video/webm; codecs="vp8"').replace(/no/, ''); + const canPlayVp9 = videoTestElement.canPlayType('video/webm; codecs="vp9"').replace(/no/, ''); + const webmAudioCodecs = ['vorbis']; - var canPlayMkv = testCanPlayMkv(videoTestElement); + const canPlayMkv = testCanPlayMkv(videoTestElement); - var profile = {}; + const profile = {}; profile.MaxStreamingBitrate = bitrateSetting; profile.MaxStaticBitrate = 100000000; @@ -317,18 +317,18 @@ define(['browser'], function (browser) { profile.DirectPlayProfiles = []; - var videoAudioCodecs = []; - var hlsVideoAudioCodecs = []; + let videoAudioCodecs = []; + let hlsVideoAudioCodecs = []; - var supportsMp3VideoAudio = videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.69"').replace(/no/, '') + const supportsMp3VideoAudio = videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.69"').replace(/no/, '') || videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.6B"').replace(/no/, '') || videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp3"').replace(/no/, ''); // Not sure how to test for this - var supportsMp2VideoAudio = browser.edgeUwp || browser.tizen || browser.web0s; + const supportsMp2VideoAudio = browser.edgeUwp || browser.tizen || browser.web0s; /* eslint-disable compat/compat */ - var maxVideoWidth = browser.xboxOne ? + let maxVideoWidth = browser.xboxOne ? (window.screen ? window.screen.width : null) : null; @@ -337,7 +337,7 @@ define(['browser'], function (browser) { maxVideoWidth = options.maxVideoWidth; } - var canPlayAacVideoAudio = videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.40.2"').replace(/no/, ''); + const canPlayAacVideoAudio = videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.40.2"').replace(/no/, ''); // Only put mp3 first if mkv support is there // Otherwise with HLS and mp3 audio we're seeing some browsers @@ -345,7 +345,7 @@ define(['browser'], function (browser) { if (supportsAc3(videoTestElement)) { videoAudioCodecs.push('ac3'); - var eAc3 = supportsEac3(videoTestElement); + const eAc3 = supportsEac3(videoTestElement); if (eAc3) { videoAudioCodecs.push('eac3'); } @@ -394,7 +394,7 @@ define(['browser'], function (browser) { videoAudioCodecs.push('mp2'); } - var supportsDts = browser.tizen || browser.web0s || options.supportsDts || videoTestElement.canPlayType('video/mp4; codecs="dts-"').replace(/no/, '') || videoTestElement.canPlayType('video/mp4; codecs="dts+"').replace(/no/, ''); + let supportsDts = browser.tizen || browser.web0s || options.supportsDts || videoTestElement.canPlayType('video/mp4; codecs="dts-"').replace(/no/, '') || videoTestElement.canPlayType('video/mp4; codecs="dts+"').replace(/no/, ''); // DTS audio not supported in 2018 models (Tizen 4.0) if (browser.tizenVersion >= 4) { @@ -437,9 +437,9 @@ define(['browser'], function (browser) { return (options.disableHlsVideoAudioCodecs || []).indexOf(c) === -1; }); - var mp4VideoCodecs = []; - var webmVideoCodecs = []; - var hlsVideoCodecs = []; + const mp4VideoCodecs = []; + const webmVideoCodecs = []; + const hlsVideoCodecs = []; if (canPlayH264(videoTestElement)) { mp4VideoCodecs.push('h264'); @@ -555,7 +555,7 @@ define(['browser'], function (browser) { profile.TranscodingProfiles = []; - var hlsBreakOnNonKeyFrames = browser.iOS || browser.osx || browser.edge || !canPlayNativeHls() ? true : false; + const hlsBreakOnNonKeyFrames = browser.iOS || browser.osx || browser.edge || !canPlayNativeHls() ? true : false; if (canPlayHls() && browser.enableHlsAudio !== false) { profile.TranscodingProfiles.push({ @@ -661,9 +661,9 @@ define(['browser'], function (browser) { profile.CodecProfiles = []; - var supportsSecondaryAudio = browser.tizen || videoTestElement.audioTracks; + const supportsSecondaryAudio = browser.tizen || videoTestElement.audioTracks; - var aacCodecProfileConditions = []; + const aacCodecProfileConditions = []; // Handle he-aac not supported if (!videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.40.5"').replace(/no/, '')) { @@ -706,8 +706,8 @@ define(['browser'], function (browser) { }); } - var maxH264Level = 42; - var h264Profiles = 'high|main|baseline|constrained baseline'; + let maxH264Level = 42; + let h264Profiles = 'high|main|baseline|constrained baseline'; if (browser.tizen || browser.web0s || videoTestElement.canPlayType('video/mp4; codecs="avc1.640833"').replace(/no/, '')) { @@ -766,9 +766,9 @@ define(['browser'], function (browser) { }); } - var globalMaxVideoBitrate = (getGlobalMaxVideoBitrate() || '').toString(); + const globalMaxVideoBitrate = (getGlobalMaxVideoBitrate() || '').toString(); - var h264MaxVideoBitrate = globalMaxVideoBitrate; + const h264MaxVideoBitrate = globalMaxVideoBitrate; if (h264MaxVideoBitrate) { h264CodecProfileConditions.push({ @@ -806,7 +806,7 @@ define(['browser'], function (browser) { Conditions: h264CodecProfileConditions }); - var globalVideoConditions = []; + const globalVideoConditions = []; if (globalMaxVideoBitrate) { globalVideoConditions.push({ diff --git a/src/scripts/editorsidebar.js b/src/scripts/editorsidebar.js index b6a45ccf2c..7e8abbe2f9 100644 --- a/src/scripts/editorsidebar.js +++ b/src/scripts/editorsidebar.js @@ -5,8 +5,8 @@ import 'material-icons'; /* eslint-disable indent */ function getNode(item, folderState, selected) { - var htmlName = getNodeInnerHtml(item); - var node = { + const htmlName = getNodeInnerHtml(item); + const node = { id: item.Id, text: htmlName, state: { @@ -37,14 +37,14 @@ import 'material-icons'; } function getNodeInnerHtml(item) { - var name = item.Name; + let name = item.Name; if (item.Number) { name = item.Number + ' - ' + name; } if (item.IndexNumber != null && item.Type != 'Season') { name = item.IndexNumber + ' - ' + name; } - var htmlName = "
    "; + let htmlName = "
    "; if (item.IsFolder) { htmlName += ''; } else if (item.MediaType === 'Video') { @@ -70,7 +70,7 @@ import 'material-icons'; ApiClient.getLiveTvChannels({ limit: 0 }).then(function (result) { - var nodes = []; + const nodes = []; nodes.push({ id: 'MediaFolders', text: globalize.translate('HeaderMediaFolders'), @@ -110,8 +110,8 @@ import 'material-icons'; ServiceName: service, AddCurrentProgram: false }).then(function (result) { - var nodes = result.Items.map(function (i) { - var state = openItems.indexOf(i.Id) == -1 ? 'closed' : 'open'; + const nodes = result.Items.map(function (i) { + const state = openItems.indexOf(i.Id) == -1 ? 'closed' : 'open'; return getNode(i, state, false); }); callback(nodes); @@ -120,12 +120,12 @@ import 'material-icons'; function loadMediaFolders(page, scope, openItems, callback) { ApiClient.getJSON(ApiClient.getUrl('Library/MediaFolders')).then(function (result) { - var nodes = result.Items.map(function (n) { - var state = openItems.indexOf(n.Id) == -1 ? 'closed' : 'open'; + const nodes = result.Items.map(function (n) { + const state = openItems.indexOf(n.Id) == -1 ? 'closed' : 'open'; return getNode(n, state, false); }); callback.call(scope, nodes); - for (var i = 0, length = nodes.length; i < length; i++) { + for (let i = 0, length = nodes.length; i < length; i++) { if (nodes[i].state.opened) { nodesToLoad.push(nodes[i].id); } @@ -134,7 +134,7 @@ import 'material-icons'; } function loadNode(page, scope, node, openItems, selectedId, currentUser, callback) { - var id = node.id; + const id = node.id; if (id == '#') { loadChildrenOfRootNode(page, scope, callback); return; @@ -147,7 +147,7 @@ import 'material-icons'; loadMediaFolders(page, scope, openItems, callback); return; } - var query = { + const query = { ParentId: id, Fields: 'Settings', IsVirtualUnaired: false, @@ -156,17 +156,17 @@ import 'material-icons'; EnableImages: false, EnableUserData: false }; - var itemtype = node.li_attr.itemtype; + const itemtype = node.li_attr.itemtype; if (itemtype != 'Season' && itemtype != 'Series') { query.SortBy = 'SortName'; } ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) { - var nodes = result.Items.map(function (n) { - var state = openItems.indexOf(n.Id) == -1 ? 'closed' : 'open'; + const nodes = result.Items.map(function (n) { + const state = openItems.indexOf(n.Id) == -1 ? 'closed' : 'open'; return getNode(n, state, n.Id == selectedId); }); callback.call(scope, nodes); - for (var i = 0, length = nodes.length; i < length; i++) { + for (let i = 0, length = nodes.length; i < length; i++) { if (nodes[i].state.opened) { nodesToLoad.push(nodes[i].id); } @@ -175,7 +175,7 @@ import 'material-icons'; } function scrollToNode(id) { - var elem = $('#' + id)[0]; + const elem = $('#' + id)[0]; if (elem) { elem.scrollIntoView(); } @@ -188,8 +188,8 @@ import 'material-icons'; } function onNodeSelect(event, data) { - var node = data.node; - var eventData = { + const node = data.node; + const eventData = { id: node.id, itemType: node.li_attr.itemtype, serverItemType: node.li_attr.serveritemtype, @@ -210,8 +210,8 @@ import 'material-icons'; } function onNodeOpen(event, data) { - var page = $(this).parents('.page')[0]; - var node = data.node; + const page = $(this).parents('.page')[0]; + const node = data.node; if (node.children) { loadNodesToLoad(page, node); } @@ -222,8 +222,8 @@ import 'material-icons'; } function onNodeLoad(event, data) { - var page = $(this).parents('.page')[0]; - var node = data.node; + const page = $(this).parents('.page')[0]; + const node = data.node; if (node.children) { loadNodesToLoad(page, node); } @@ -252,8 +252,8 @@ import 'material-icons'; } function loadNodesToLoad(page, node) { - var children = node.children; - for (var i = 0, length = children.length; i < length; i++) { + const children = node.children; + for (let i = 0, length = children.length; i < length; i++) { var child = children[i]; if (nodesToLoad.indexOf(child) != -1) { nodesToLoad = nodesToLoad.filter(function (n) { @@ -273,15 +273,15 @@ import 'material-icons'; } function updateEditorNode(page, item) { - var elem = $('#' + item.Id + '>a', page)[0]; + const elem = $('#' + item.Id + '>a', page)[0]; if (elem == null) { return; } $('.editorNode', elem).remove(); $(elem).append(getNodeInnerHtml(item)); if (item.IsFolder) { - var tree = jQuery.jstree._reference('.libraryTree'); - var currentNode = tree._get_node(null, false); + const tree = jQuery.jstree._reference('.libraryTree'); + const currentNode = tree._get_node(null, false); tree.refresh(currentNode); } } @@ -294,23 +294,23 @@ import 'material-icons'; if (itemId) { return itemId; } - var url = window.location.hash || window.location.href; + const url = window.location.hash || window.location.href; return getParameterByName('id', url); } var nodesToLoad = []; - var selectedNodeId; + let selectedNodeId; $(document).on('itemsaved', '.metadataEditorPage', function (e, item) { updateEditorNode(this, item); }).on('pagebeforeshow', '.metadataEditorPage', function () { /* eslint-disable-next-line @babel/no-unused-expressions */ import('css!assets/css/metadataeditor.css'); }).on('pagebeforeshow', '.metadataEditorPage', function () { - var page = this; + const page = this; Dashboard.getCurrentUser().then(function (user) { - var id = getCurrentItemId(); + const id = getCurrentItemId(); if (id) { ApiClient.getAncestorItems(id, user.Id).then(function (ancestors) { - var ids = ancestors.map(function (i) { + const ids = ancestors.map(function (i) { return i.Id; }); initializeTree(page, user, ids, id); @@ -320,13 +320,13 @@ import 'material-icons'; } }); }).on('pagebeforehide', '.metadataEditorPage', function () { - var page = this; + const page = this; $('.libraryTree', page).off('select_node.jstree', onNodeSelect).off('open_node.jstree', onNodeOpen).off('load_node.jstree', onNodeLoad); }); - var itemId; + let itemId; window.MetadataEditor = { getItemPromise: function () { - var currentItemId = getCurrentItemId(); + const currentItemId = getCurrentItemId(); if (currentItemId) { return ApiClient.getItem(Dashboard.getCurrentUserId(), currentItemId); } diff --git a/src/scripts/gamepadtokey.js b/src/scripts/gamepadtokey.js index b6f25f1eea..8451326974 100644 --- a/src/scripts/gamepadtokey.js +++ b/src/scripts/gamepadtokey.js @@ -22,47 +22,47 @@ import appHost from 'apphost'; -var _GAMEPAD_A_BUTTON_INDEX = 0; -var _GAMEPAD_B_BUTTON_INDEX = 1; -var _GAMEPAD_DPAD_UP_BUTTON_INDEX = 12; -var _GAMEPAD_DPAD_DOWN_BUTTON_INDEX = 13; -var _GAMEPAD_DPAD_LEFT_BUTTON_INDEX = 14; -var _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX = 15; -var _GAMEPAD_A_KEY = 'GamepadA'; -var _GAMEPAD_B_KEY = 'GamepadB'; -var _GAMEPAD_DPAD_UP_KEY = 'GamepadDPadUp'; -var _GAMEPAD_DPAD_DOWN_KEY = 'GamepadDPadDown'; -var _GAMEPAD_DPAD_LEFT_KEY = 'GamepadDPadLeft'; -var _GAMEPAD_DPAD_RIGHT_KEY = 'GamepadDPadRight'; -var _GAMEPAD_LEFT_THUMBSTICK_UP_KEY = 'GamepadLeftThumbStickUp'; -var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY = 'GamepadLeftThumbStickDown'; -var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY = 'GamepadLeftThumbStickLeft'; -var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY = 'GamepadLeftThumbStickRight'; -var _GAMEPAD_A_KEYCODE = 0; -var _GAMEPAD_B_KEYCODE = 27; -var _GAMEPAD_DPAD_UP_KEYCODE = 38; -var _GAMEPAD_DPAD_DOWN_KEYCODE = 40; -var _GAMEPAD_DPAD_LEFT_KEYCODE = 37; -var _GAMEPAD_DPAD_RIGHT_KEYCODE = 39; -var _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE = 38; -var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE = 40; -var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE = 37; -var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE = 39; -var _THUMB_STICK_THRESHOLD = 0.75; +const _GAMEPAD_A_BUTTON_INDEX = 0; +const _GAMEPAD_B_BUTTON_INDEX = 1; +const _GAMEPAD_DPAD_UP_BUTTON_INDEX = 12; +const _GAMEPAD_DPAD_DOWN_BUTTON_INDEX = 13; +const _GAMEPAD_DPAD_LEFT_BUTTON_INDEX = 14; +const _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX = 15; +const _GAMEPAD_A_KEY = 'GamepadA'; +const _GAMEPAD_B_KEY = 'GamepadB'; +const _GAMEPAD_DPAD_UP_KEY = 'GamepadDPadUp'; +const _GAMEPAD_DPAD_DOWN_KEY = 'GamepadDPadDown'; +const _GAMEPAD_DPAD_LEFT_KEY = 'GamepadDPadLeft'; +const _GAMEPAD_DPAD_RIGHT_KEY = 'GamepadDPadRight'; +const _GAMEPAD_LEFT_THUMBSTICK_UP_KEY = 'GamepadLeftThumbStickUp'; +const _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY = 'GamepadLeftThumbStickDown'; +const _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY = 'GamepadLeftThumbStickLeft'; +const _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY = 'GamepadLeftThumbStickRight'; +const _GAMEPAD_A_KEYCODE = 0; +const _GAMEPAD_B_KEYCODE = 27; +const _GAMEPAD_DPAD_UP_KEYCODE = 38; +const _GAMEPAD_DPAD_DOWN_KEYCODE = 40; +const _GAMEPAD_DPAD_LEFT_KEYCODE = 37; +const _GAMEPAD_DPAD_RIGHT_KEYCODE = 39; +const _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE = 38; +const _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE = 40; +const _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE = 37; +const _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE = 39; +const _THUMB_STICK_THRESHOLD = 0.75; -var _leftThumbstickUpPressed = false; -var _leftThumbstickDownPressed = false; -var _leftThumbstickLeftPressed = false; -var _leftThumbstickRightPressed = false; -var _dPadUpPressed = false; -var _dPadDownPressed = false; -var _dPadLeftPressed = false; -var _dPadRightPressed = false; -var _gamepadAPressed = false; -var _gamepadBPressed = false; +let _leftThumbstickUpPressed = false; +let _leftThumbstickDownPressed = false; +let _leftThumbstickLeftPressed = false; +let _leftThumbstickRightPressed = false; +let _dPadUpPressed = false; +let _dPadDownPressed = false; +let _dPadLeftPressed = false; +let _dPadRightPressed = false; +let _gamepadAPressed = false; +let _gamepadBPressed = false; // The set of buttons on the gamepad we listen for. -var ProcessedButtons = [ +const ProcessedButtons = [ _GAMEPAD_DPAD_UP_BUTTON_INDEX, _GAMEPAD_DPAD_DOWN_BUTTON_INDEX, _GAMEPAD_DPAD_LEFT_BUTTON_INDEX, @@ -71,7 +71,7 @@ var ProcessedButtons = [ _GAMEPAD_B_BUTTON_INDEX ]; -var _ButtonPressedState = {}; +const _ButtonPressedState = {}; _ButtonPressedState.getgamepadA = function () { return _gamepadAPressed; }; @@ -162,11 +162,11 @@ _ButtonPressedState.setdPadRight = function (newPressedState) { _dPadRightPressed = newPressedState; }; -var times = {}; +const times = {}; function throttle(key) { - var time = times[key] || 0; - var now = new Date().getTime(); + const time = times[key] || 0; + const now = new Date().getTime(); if ((now - time) >= 200) { //times[key] = now; @@ -180,7 +180,7 @@ function resetThrottle(key) { times[key] = new Date().getTime(); } -var isElectron = navigator.userAgent.toLowerCase().indexOf('electron') !== -1; +const isElectron = navigator.userAgent.toLowerCase().indexOf('electron') !== -1; function allowInput() { // This would be nice but always seems to return true with electron if (!isElectron && document.hidden) { /* eslint-disable-line compat/compat */ @@ -199,7 +199,7 @@ function raiseEvent(name, key, keyCode) { return; } - var event = document.createEvent('Event'); + const event = document.createEvent('Event'); event.initEvent(name, true, true); event.key = key; event.keyCode = keyCode; @@ -218,7 +218,7 @@ function raiseKeyEvent(oldPressedState, newPressedState, key, keyCode, enableRep // No-op if oldPressedState === newPressedState if (newPressedState === true) { // button down - var fire = false; + let fire = false; // always fire if this is the initial down press if (oldPressedState === false) { @@ -244,19 +244,19 @@ function raiseKeyEvent(oldPressedState, newPressedState, key, keyCode, enableRep } } -var inputLoopTimer; +let inputLoopTimer; function runInputLoop() { // Get the latest gamepad state. - var gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ + const gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ for (var i = 0, len = gamepads.length; i < len; i++) { - var gamepad = gamepads[i]; + const gamepad = gamepads[i]; if (!gamepad) { continue; } // Iterate through the axes - var axes = gamepad.axes; - var leftStickX = axes[0]; - var leftStickY = axes[1]; + const axes = gamepad.axes; + const leftStickX = axes[0]; + const leftStickY = axes[1]; if (leftStickX > _THUMB_STICK_THRESHOLD) { // Right _ButtonPressedState.setleftThumbstickRight(true); } else if (leftStickX < -_THUMB_STICK_THRESHOLD) { // Left @@ -272,7 +272,7 @@ function runInputLoop() { _ButtonPressedState.setleftThumbstickDown(false); } // Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed. - var buttons = gamepad.buttons; + const buttons = gamepad.buttons; for (var j = 0, len = buttons.length; j < len; j++) { if (ProcessedButtons.indexOf(j) !== -1) { if (buttons[j].pressed) { @@ -355,9 +355,9 @@ function stopInputLoop() { } function isGamepadConnected() { - var gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ - for (var i = 0, len = gamepads.length; i < len; i++) { - var gamepad = gamepads[i]; + const gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ + for (let i = 0, len = gamepads.length; i < len; i++) { + const gamepad = gamepads[i]; if (gamepad && gamepad.connected) { return true; } diff --git a/src/scripts/imagehelper.js b/src/scripts/imagehelper.js index c79f721738..9b356f0350 100644 --- a/src/scripts/imagehelper.js +++ b/src/scripts/imagehelper.js @@ -2,7 +2,7 @@ /* eslint-disable indent */ export function getDeviceIcon(device) { - var baseUrl = 'assets/img/devices/'; + const baseUrl = 'assets/img/devices/'; switch (device.AppName || device.Client) { case 'Samsung Smart TV': return baseUrl + 'samsung.svg'; diff --git a/src/scripts/libraryBrowser.js b/src/scripts/libraryBrowser.js index 151cb7ff57..5c6db19258 100644 --- a/src/scripts/libraryBrowser.js +++ b/src/scripts/libraryBrowser.js @@ -6,7 +6,7 @@ export function getSavedQueryKey(modifier) { } export function loadSavedQueryValues(key, query) { - var values = userSettings.get(key); + let values = userSettings.get(key); if (values) { values = JSON.parse(values); @@ -17,7 +17,7 @@ export function loadSavedQueryValues(key, query) { } export function saveQueryValues(key, query) { - var values = {}; + const values = {}; if (query.SortBy) { values.SortBy = query.SortBy; @@ -39,7 +39,7 @@ export function getSavedView (key) { } export function showLayoutMenu (button, currentLayout, views) { - var dispatchEvent = true; + let dispatchEvent = true; if (!views) { dispatchEvent = false; @@ -47,7 +47,7 @@ export function showLayoutMenu (button, currentLayout, views) { views = views ? views.split(',') : ['List', 'Poster', 'PosterCard', 'Thumb', 'ThumbCard']; } - var menuItems = views.map(function (v) { + const menuItems = views.map(function (v) { return { name: globalize.translate(v), id: v, @@ -79,12 +79,12 @@ export function showLayoutMenu (button, currentLayout, views) { } export function getQueryPagingHtml (options) { - var startIndex = options.startIndex; - var limit = options.limit; - var totalRecordCount = options.totalRecordCount; - var html = ''; - var recordsEnd = Math.min(startIndex + limit, totalRecordCount); - var showControls = limit < totalRecordCount; + const startIndex = options.startIndex; + const limit = options.limit; + const totalRecordCount = options.totalRecordCount; + let html = ''; + const recordsEnd = Math.min(startIndex + limit, totalRecordCount); + const showControls = limit < totalRecordCount; if (html += '
    ', showControls) { html += ''; @@ -124,10 +124,10 @@ export function showSortMenu (options) { import('emby-radio') ]).then(([{default: dialogHelper}]) => { function onSortByChange() { - var newValue = this.value; + const newValue = this.value; if (this.checked) { - var changed = options.query.SortBy != newValue; + const changed = options.query.SortBy != newValue; options.query.SortBy = newValue.replace('_', ','); options.query.StartIndex = 0; @@ -138,10 +138,10 @@ export function showSortMenu (options) { } function onSortOrderChange() { - var newValue = this.value; + const newValue = this.value; if (this.checked) { - var changed = options.query.SortOrder != newValue; + const changed = options.query.SortOrder != newValue; options.query.SortOrder = newValue; options.query.StartIndex = 0; @@ -151,7 +151,7 @@ export function showSortMenu (options) { } } - var dlg = dialogHelper.createDialog({ + const dlg = dialogHelper.createDialog({ removeOnClose: true, modal: false, entryAnimationDuration: 160, @@ -160,18 +160,18 @@ export function showSortMenu (options) { dlg.classList.add('ui-body-a'); dlg.classList.add('background-theme-a'); dlg.classList.add('formDialog'); - var html = ''; + let html = ''; html += '
    '; html += '

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

    '; - var i; - var length; - var isChecked; + let i; + let length; + let isChecked; html += '
    '; for (i = 0, length = options.items.length; i < length; i++) { - var option = options.items[i]; - var radioValue = option.id.replace(',', '_'); + const option = options.items[i]; + const radioValue = option.id.replace(',', '_'); isChecked = (options.query.SortBy || '').replace(',', '_') == radioValue ? ' checked' : ''; html += ''; } @@ -189,13 +189,13 @@ export function showSortMenu (options) { html += '
    '; dlg.innerHTML = html; dialogHelper.open(dlg); - var sortBys = dlg.querySelectorAll('.menuSortBy'); + const sortBys = dlg.querySelectorAll('.menuSortBy'); for (i = 0, length = sortBys.length; i < length; i++) { sortBys[i].addEventListener('change', onSortByChange); } - var sortOrders = dlg.querySelectorAll('.menuSortOrder'); + const sortOrders = dlg.querySelectorAll('.menuSortOrder'); for (i = 0, length = sortOrders.length; i < length; i++) { sortOrders[i].addEventListener('change', onSortOrderChange); diff --git a/src/scripts/multiDownload.js b/src/scripts/multiDownload.js index d1c717af0e..270c474965 100644 --- a/src/scripts/multiDownload.js +++ b/src/scripts/multiDownload.js @@ -1,10 +1,10 @@ import browser from 'browser'; function fallback(urls) { - var i = 0; + let i = 0; (function createIframe() { - var frame = document.createElement('iframe'); + const frame = document.createElement('iframe'); frame.style.display = 'none'; frame.src = urls[i++]; document.documentElement.appendChild(frame); @@ -28,14 +28,14 @@ function fallback(urls) { } function sameDomain(url) { - var a = document.createElement('a'); + const a = document.createElement('a'); a.href = url; return window.location.hostname === a.hostname && window.location.protocol === a.protocol; } function download(url) { - var a = document.createElement('a'); + const a = document.createElement('a'); a.download = ''; a.href = url; // firefox doesn't support `a.click()`... @@ -51,7 +51,7 @@ export default function (urls) { return fallback(urls); } - var delay = 0; + let delay = 0; urls.forEach(function (url) { // the download init has to be sequential for firefox if the urls are not on the same domain diff --git a/src/scripts/playlistedit.js b/src/scripts/playlistedit.js index 636a7ef056..a4b519e045 100644 --- a/src/scripts/playlistedit.js +++ b/src/scripts/playlistedit.js @@ -3,7 +3,7 @@ define(['listView'], function (listView) { function getFetchPlaylistItemsFn(itemId) { return function () { - var query = { + const query = { Fields: 'PrimaryImageAspectRatio,UserData', EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', UserId: ApiClient.getCurrentUserId() @@ -28,7 +28,7 @@ define(['listView'], function (listView) { } function init(page, item) { - var elem = page.querySelector('#childrenContent .itemsContainer'); + const elem = page.querySelector('#childrenContent .itemsContainer'); elem.classList.add('vertical-list'); elem.classList.remove('vertical-wrap'); elem.enableDragReordering(true); diff --git a/src/scripts/routes.js b/src/scripts/routes.js index 8e2440b140..5651102655 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -17,7 +17,7 @@ import 'detailtablecss'; console.groupCollapsed('defining core routes'); function defineRoute(newRoute) { - var path = newRoute.alias ? newRoute.alias : newRoute.path; + const path = newRoute.alias ? newRoute.alias : newRoute.path; console.debug('defining route: ' + path); newRoute.dictionary = 'core'; Emby.Page.addRoute(path, newRoute); diff --git a/src/scripts/site.js b/src/scripts/site.js index d386243138..0dbdcb4c61 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -1,10 +1,10 @@ window.getWindowLocationSearch = function(win) { 'use strict'; - var search = (win || window).location.search; + let search = (win || window).location.search; if (!search) { - var index = window.location.href.indexOf('?'); + const index = window.location.href.indexOf('?'); if (index != -1) { search = window.location.href.substring(index); @@ -18,9 +18,9 @@ window.getParameterByName = function(name, url) { 'use strict'; name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]'); - var regexS = '[\\?&]' + name + '=([^&#]*)'; - var regex = new RegExp(regexS, 'i'); - var results = regex.exec(url || getWindowLocationSearch()); + const regexS = '[\\?&]' + name + '=([^&#]*)'; + const regex = new RegExp(regexS, 'i'); + const results = regex.exec(url || getWindowLocationSearch()); if (results == null) { return ''; @@ -33,7 +33,7 @@ window.pageClassOn = function(eventName, className, fn) { 'use strict'; document.addEventListener(eventName, function (event) { - var target = event.target; + const target = event.target; if (target.classList.contains(className)) { fn.call(target, event); @@ -45,7 +45,7 @@ window.pageIdOn = function(eventName, id, fn) { 'use strict'; document.addEventListener(eventName, function (event) { - var target = event.target; + const target = event.target; if (target.id === id) { fn.call(target, event); @@ -53,7 +53,7 @@ window.pageIdOn = function(eventName, id, fn) { }); }; -var AppInfo = {}; +const AppInfo = {}; function initClient() { function bindConnectionManagerEvents(connectionManager, events, userSettings) { @@ -61,7 +61,7 @@ function initClient() { window.connectionManager.currentApiClient = function () { if (!localApiClient) { - var server = window.connectionManager.getLastUsedServer(); + const server = window.connectionManager.getLastUsedServer(); if (server) { localApiClient = window.connectionManager.getApiClient(server.Id); @@ -86,11 +86,11 @@ function initClient() { return require(['connectionManagerFactory', 'apphost', 'credentialprovider', 'events', 'userSettings'], function (ConnectionManager, appHost, credentialProvider, events, userSettings) { appHost = appHost.default || appHost; - var credentialProviderInstance = new credentialProvider(); - var promises = [appHost.init()]; + const credentialProviderInstance = new credentialProvider(); + const promises = [appHost.init()]; return Promise.all(promises).then(function (responses) { - var capabilities = Dashboard.capabilities(appHost); + const capabilities = Dashboard.capabilities(appHost); window.connectionManager = new ConnectionManager(credentialProviderInstance, appHost.appName(), appHost.appVersion(), appHost.deviceName(), appHost.deviceId(), capabilities); @@ -102,7 +102,7 @@ function initClient() { return require(['apiclient', 'clientUtils'], function (apiClientFactory, clientUtils) { console.debug('creating ApiClient singleton'); - var apiClient = new apiClientFactory(Dashboard.serverAddress(), appHost.appName(), appHost.appVersion(), appHost.deviceName(), appHost.deviceId()); + const apiClient = new apiClientFactory(Dashboard.serverAddress(), appHost.appName(), appHost.appVersion(), appHost.deviceName(), appHost.deviceId()); apiClient.enableAutomaticNetworking = false; apiClient.manualAddressOnly = true; @@ -194,7 +194,7 @@ function initClient() { require(['clientUtils']); - var promises = []; + const promises = []; if (!window.fetch) { promises.push(require(['fetch'])); } @@ -226,8 +226,8 @@ function initClient() { } function loadCoreDictionary(globalize) { - var languages = ['ar', 'be-by', 'bg-bg', 'ca', 'cs', 'da', 'de', 'el', 'en-gb', 'en-us', 'es', 'es-ar', 'es-mx', 'fa', 'fi', 'fr', 'fr-ca', 'gsw', 'he', 'hi-in', 'hr', 'hu', 'id', 'it', 'kk', 'ko', 'lt-lt', 'ms', 'nb', 'nl', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'sk', 'sl-si', 'sv', 'tr', 'uk', 'vi', 'zh-cn', 'zh-hk', 'zh-tw']; - var translations = languages.map(function (language) { + const languages = ['ar', 'be-by', 'bg-bg', 'ca', 'cs', 'da', 'de', 'el', 'en-gb', 'en-us', 'es', 'es-ar', 'es-mx', 'fa', 'fi', 'fr', 'fr-ca', 'gsw', 'he', 'hi-in', 'hr', 'hu', 'id', 'it', 'kk', 'ko', 'lt-lt', 'ms', 'nb', 'nl', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'sk', 'sl-si', 'sv', 'tr', 'uk', 'vi', 'zh-cn', 'zh-hk', 'zh-tw']; + const translations = languages.map(function (language) { return { lang: language, path: 'strings/' + language + '.json' @@ -367,7 +367,7 @@ function initClient() { require(['playerSelectionMenu']); - var apiClient = window.connectionManager && window.connectionManager.currentApiClient(); + const apiClient = window.connectionManager && window.connectionManager.currentApiClient(); if (apiClient) { fetch(apiClient.getUrl('Branding/Css')) .then(function(response) { @@ -410,8 +410,8 @@ function initClient() { } function onWebComponentsReady() { - var componentsPath = getComponentsPath(); - var scriptsPath = getScriptsPath(); + const componentsPath = getComponentsPath(); + const scriptsPath = getScriptsPath(); define('filesystem', [scriptsPath + '/filesystem'], returnFirstDependency); @@ -441,18 +441,18 @@ function initClient() { init(); } - var promise; - var localApiClient; + let promise; + let localApiClient; function initRequireJs() { - var urlArgs = 'v=' + (window.dashboardVersion || new Date().getDate()); + const urlArgs = 'v=' + (window.dashboardVersion || new Date().getDate()); - var bowerPath = getBowerPath(); - var componentsPath = getComponentsPath(); - var elementsPath = getElementsPath(); - var scriptsPath = getScriptsPath(); + const bowerPath = getBowerPath(); + const componentsPath = getComponentsPath(); + const elementsPath = getElementsPath(); + const scriptsPath = getScriptsPath(); - var paths = { + const paths = { browserdeviceprofile: 'scripts/browserDeviceProfile', browser: 'scripts/browser', libraryBrowser: 'scripts/libraryBrowser', diff --git a/src/scripts/themeManager.js b/src/scripts/themeManager.js index 03ca621749..56d3362219 100644 --- a/src/scripts/themeManager.js +++ b/src/scripts/themeManager.js @@ -1,10 +1,10 @@ import * as webSettings from 'webSettings'; -var themeStyleElement = document.querySelector('#cssTheme'); -var currentThemeId; +let themeStyleElement = document.querySelector('#cssTheme'); +let currentThemeId; function unloadTheme() { - var elem = themeStyleElement; + const elem = themeStyleElement; if (elem) { elem.removeAttribute('href'); currentThemeId = null; @@ -17,7 +17,7 @@ function getThemes() { function getThemeStylesheetInfo(id) { return getThemes().then(themes => { - var theme = themes.find(theme => { + const theme = themes.find(theme => { return id ? theme.id === id : theme.default; }); @@ -41,7 +41,7 @@ function setTheme(id) { return; } - var linkUrl = info.stylesheetPath; + const linkUrl = info.stylesheetPath; unloadTheme(); let link = themeStyleElement; From 237e8ddc4c60bd5d35f3691d91b4aa8f978a5cba Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 8 Oct 2020 00:47:23 +0900 Subject: [PATCH 467/582] manual changes for no-var eslint rule --- .eslintrc.js | 1 + src/components/focusManager.js | 4 ++-- src/components/htmlMediaHelper.js | 5 ++--- src/components/serviceworker/notifications.js | 3 +-- src/libraries/navdrawer/navdrawer.js | 2 ++ src/scripts/editorsidebar.js | 4 ++-- src/scripts/gamepadtokey.js | 4 ++-- src/scripts/multiDownload.js | 2 +- 8 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index dc8729fb2a..e5ee2dfe86 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -49,6 +49,7 @@ module.exports = { 'prefer-const': ['error', {'destructuring': 'all'}], 'quotes': ['error', 'single', { 'avoidEscape': true, 'allowTemplateLiterals': false }], '@babel/semi': ['error'], + 'no-var': ['error'], 'space-before-blocks': ['error'], 'space-infix-ops': 'error', 'yoda': 'error' diff --git a/src/components/focusManager.js b/src/components/focusManager.js index 90ff8b0703..d45984bf58 100644 --- a/src/components/focusManager.js +++ b/src/components/focusManager.js @@ -344,8 +344,8 @@ import scrollManager from 'scrollManager'; const midX = elementRect.left + (elementRect.width / 2); const midY = elementRect.top + (elementRect.height / 2); - var distX; - var distY; + let distX; + let distY; switch (direction) { case 0: diff --git a/src/components/htmlMediaHelper.js b/src/components/htmlMediaHelper.js index 31fc4c29c8..be506b449d 100644 --- a/src/components/htmlMediaHelper.js +++ b/src/components/htmlMediaHelper.js @@ -149,7 +149,7 @@ import events from 'events'; } else { // update video player position when media is ready to be sought const events = ['durationchange', 'loadeddata', 'play', 'loadedmetadata']; - var onMediaChange = function(e) { + const onMediaChange = function(e) { if (element.currentTime === 0 && element.duration >= seconds) { // seek only when video position is exactly zero, // as this is true only if video hasn't started yet or @@ -322,9 +322,8 @@ import events from 'events'; break; case Hls.ErrorTypes.MEDIA_ERROR: console.debug('fatal media error encountered, try to recover'); - var currentReject = reject; + handleHlsJsMediaError(instance, reject); reject = null; - handleHlsJsMediaError(instance, currentReject); break; default: diff --git a/src/components/serviceworker/notifications.js b/src/components/serviceworker/notifications.js index cc2ee65320..51623b56f7 100644 --- a/src/components/serviceworker/notifications.js +++ b/src/components/serviceworker/notifications.js @@ -15,8 +15,7 @@ return getApiClient(serverId).then(function (apiClient) { switch (action) { case 'cancel-install': - var id = data.id; - return apiClient.cancelPackageInstallation(id); + return apiClient.cancelPackageInstallation(data.id); case 'restart': return apiClient.restartServer(); default: diff --git a/src/libraries/navdrawer/navdrawer.js b/src/libraries/navdrawer/navdrawer.js index ab50ec5831..6dcf6783d1 100644 --- a/src/libraries/navdrawer/navdrawer.js +++ b/src/libraries/navdrawer/navdrawer.js @@ -2,6 +2,7 @@ * and will be replaced soon by a Vue component. */ +/* eslint-disable no-var */ import browser from 'browser'; import dom from 'dom'; import 'css!./navdrawer'; @@ -355,3 +356,4 @@ export default function (options) { return new TouchMenuLA(); } +/* eslint-enable no-var */ diff --git a/src/scripts/editorsidebar.js b/src/scripts/editorsidebar.js index 7e8abbe2f9..3711520f02 100644 --- a/src/scripts/editorsidebar.js +++ b/src/scripts/editorsidebar.js @@ -254,7 +254,7 @@ import 'material-icons'; function loadNodesToLoad(page, node) { const children = node.children; for (let i = 0, length = children.length; i < length; i++) { - var child = children[i]; + const child = children[i]; if (nodesToLoad.indexOf(child) != -1) { nodesToLoad = nodesToLoad.filter(function (n) { return n != child; @@ -297,7 +297,7 @@ import 'material-icons'; const url = window.location.hash || window.location.href; return getParameterByName('id', url); } - var nodesToLoad = []; + let nodesToLoad = []; let selectedNodeId; $(document).on('itemsaved', '.metadataEditorPage', function (e, item) { updateEditorNode(this, item); diff --git a/src/scripts/gamepadtokey.js b/src/scripts/gamepadtokey.js index 8451326974..b1976e1f6b 100644 --- a/src/scripts/gamepadtokey.js +++ b/src/scripts/gamepadtokey.js @@ -248,7 +248,7 @@ let inputLoopTimer; function runInputLoop() { // Get the latest gamepad state. const gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ - for (var i = 0, len = gamepads.length; i < len; i++) { + for (let i = 0, len = gamepads.length; i < len; i++) { const gamepad = gamepads[i]; if (!gamepad) { continue; @@ -273,7 +273,7 @@ function runInputLoop() { } // Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed. const buttons = gamepad.buttons; - for (var j = 0, len = buttons.length; j < len; j++) { + for (let j = 0, len = buttons.length; j < len; j++) { if (ProcessedButtons.indexOf(j) !== -1) { if (buttons[j].pressed) { switch (j) { diff --git a/src/scripts/multiDownload.js b/src/scripts/multiDownload.js index 270c474965..6d47427ed8 100644 --- a/src/scripts/multiDownload.js +++ b/src/scripts/multiDownload.js @@ -10,7 +10,7 @@ function fallback(urls) { document.documentElement.appendChild(frame); // the download init has to be sequential otherwise IE only use the first - var interval = setInterval(function () { + const interval = setInterval(function () { if (frame.contentWindow.document.readyState === 'complete' || frame.contentWindow.document.readyState === 'interactive') { clearInterval(interval); From 33a60320a1b25d2d4b72428a93565224932780af Mon Sep 17 00:00:00 2001 From: SaddFox Date: Wed, 7 Oct 2020 22:49:50 +0000 Subject: [PATCH 468/582] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 652e3e77be..73500ac287 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -1332,11 +1332,20 @@ "Image": "Slika", "HeaderRecordingPostProcessing": "Obdelava snemanja", "Other": "Drugo", - "EnableQuickConnect": "Omogoči Quick Connect za ta server", + "EnableQuickConnect": "Omogoči Quick Connect za ta strežnik", "EnableAutoCast": "Nastavi kot privzeto", "Data": "Podatki", "ButtonUseQuickConnect": "Uporabi Quick Connect", "ButtonActivate": "Aktiviraj", "Authorize": "Pooblasti", - "HeaderBranding": "Promocija" + "HeaderBranding": "Promocija", + "UseDoubleRateDeinterlacing": "Podvoji hitrost sličic pri razpletanju", + "SystemDlnaProfilesHelp": "Sistemski profili so samo za branje. Spremembe sistemskega profila bodo shranjene kot nov profil po meri.", + "LabelColorSpace": "Barvni prostor:", + "MediaInfoColorSpace": "Barvni prostor", + "ButtonPlayer": "Predvajalnik", + "Whitelist": "Seznam želja", + "SubtitleVerticalPositionHelp": "Številka vrstice kjer se pojavi besedilo. Pozitivne številke predstavljajo od zgoraj navzdol. Negativne številke predstavljajo od spodaj navzgor.", + "TonemappingRangeHelp": "Izberite barvni razpon izhoda. Auto je isto kot razpon vhoda.", + "LabelOpenclDevice": "OpenCL naprava:" } From 7adc288ca63fa89a4fe349cb2f1a11ad311d0a25 Mon Sep 17 00:00:00 2001 From: Maxr1998 Date: Tue, 28 Jul 2020 23:54:27 +0200 Subject: [PATCH 469/582] Improve NativeShell integration - Move NativeShell calls into shell.js where possible to better group them - Add "updateVolumeLevel" API (not used yet) --- src/components/playback/mediasession.js | 6 ++-- src/scripts/fileDownloader.js | 7 ++--- src/scripts/shell.js | 37 ++++++++++++++++++++----- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/src/components/playback/mediasession.js b/src/components/playback/mediasession.js index 2478c52d6e..b75fa69a8c 100644 --- a/src/components/playback/mediasession.js +++ b/src/components/playback/mediasession.js @@ -1,5 +1,6 @@ import playbackManager from 'playbackManager'; import nowPlayingHelper from 'nowPlayingHelper'; +import shell from 'shell'; import events from 'events'; /* eslint-disable indent */ @@ -127,8 +128,7 @@ import events from 'events'; }); } else { const itemImageUrl = seriesImageUrl(item, { maxHeight: 3000 }) || imageUrl(item, { maxHeight: 3000 }); - - window.NativeShell.updateMediaSession({ + shell.updateMediaSession({ action: eventName, isLocalPlayer: isLocalPlayer, itemId: itemId, @@ -182,7 +182,7 @@ import events from 'events'; /* eslint-disable-next-line compat/compat */ navigator.mediaSession.metadata = null; } else { - window.NativeShell.hideMediaSession(); + shell.hideMediaSession(); } } diff --git a/src/scripts/fileDownloader.js b/src/scripts/fileDownloader.js index f4179dcef8..c99a6c3e35 100644 --- a/src/scripts/fileDownloader.js +++ b/src/scripts/fileDownloader.js @@ -1,11 +1,8 @@ import multiDownload from 'multi-download'; +import shell from 'shell'; export function download(items) { - if (window.NativeShell) { - items.map(function (item) { - window.NativeShell.downloadFile(item); - }); - } else { + if (!shell.downloadFiles(items)) { multiDownload(items.map(function (item) { return item.url; })); diff --git a/src/scripts/shell.js b/src/scripts/shell.js index e42c7792a0..3b3635c7f4 100644 --- a/src/scripts/shell.js +++ b/src/scripts/shell.js @@ -1,20 +1,43 @@ // TODO: This seems like a good candidate for deprecation export default { - openUrl: function (url, target) { + enableFullscreen: function() { + window.NativeShell?.enableFullscreen(); + }, + disableFullscreen: function() { + window.NativeShell?.disableFullscreen(); + }, + 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(); - } + updateMediaSession(mediaInfo) { + window.NativeShell?.updateMediaSession(mediaInfo); }, - disableFullscreen: function () { + hideMediaSession() { + window.NativeShell?.hideMediaSession(); + }, + /** + * Notify the NativeShell about volume level changes. + * Useful for e.g. remote playback. + */ + updateVolumeLevel(volume) { + window.NativeShell?.updateVolumeLevel(volume); + }, + /** + * Download specified files with NativeShell if possible + * + * @returns true on success + */ + downloadFiles(items) { if (window.NativeShell) { - window.NativeShell.disableFullscreen(); + items.map(function(item) { + window.NativeShell.downloadFile(item); + }); + return true; } + return false; } }; From bb97896868d2cb8bc0bc3883a386701d4a62cb08 Mon Sep 17 00:00:00 2001 From: millallo Date: Thu, 8 Oct 2020 12:28:06 +0000 Subject: [PATCH 470/582] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index e4641db41d..88fbaac2f1 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1380,7 +1380,7 @@ "PosterCard": "Locandina", "LabelOpenclDevice": "Dispositivo OpenCL:", "MediaInfoVideoRange": "Intervallo video", - "UseDoubleRateDeinterlacingHelp": "Questa opzione usa il campo frequenza durante il deinterlacciamento, detto anche \"bob deinterlacing\", il quale raddoppia il frame rate del video per fornire \"full motion\" come se guardassi un video interlacciato su una TV.", + "UseDoubleRateDeinterlacingHelp": "Questa opzione usa il campo frequenza durante il deinterlacciamento, detto anche \"bob deinterlacing\", il quale raddoppia il frame rate del video per fornire \"full motion\" come se guardassi un video interlacciato in TV.", "QuickConnectAuthorizeFail": "Codice Quick Connect sconosciuto", "QuickConnectAuthorizeCode": "Inserisci {0} per completare il login", "EnableQuickConnect": "Attiva Quick Connect su questo server", @@ -1388,13 +1388,19 @@ "QuickConnectNotActive": "Quick connect non è attivo in questo server", "QuickConnectNotAvailable": "Chiedi all'amministratore del server di abilitare Quick Connect", "QuickConnectInvalidCode": "Codice Quick Connect non valido", - "QuickConnectDescription": "Per registrarsi usando Quick Connect, seleziona il pulsante Quick Connect nel dispositivo che stai usando per accedere e inserisci il codice scritto sottostante.", - "QuickConnectDeactivated": "Quick Connect è stato disattivato prima che il login venisse approvato", + "QuickConnectDescription": "Per registrarsi usando Quick Connect, seleziona il pulsante Quick Connect nel dispositivo che stai usando per accedere ed inserisci il codice sottostante.", + "QuickConnectDeactivated": "Quick Connect è stato disattivato prima che la richiesta di login venisse approvata", "QuickConnectAuthorizeSuccess": "Richiesta autorizzata", "QuickConnectActivationSuccessful": "Attivato con successo", "QuickConnect": "Quick Connect", "LabelQuickConnectCode": "Codice Quick Connect:", "LabelCurrentStatus": "Stato attuale:", "ButtonActivate": "Attiva", - "Authorize": "Autorizza" + "Authorize": "Autorizza", + "LabelTonemappingAlgorithm": "Seleziona l'algoritmo di Tone mapping da usare:", + "EnableTonemapping": "Abilita il Tone mapping", + "OptionMaxActiveSessionsHelp": "Il valore 0 disabilita la funzionalità.", + "OptionMaxActiveSessions": "Imposta il numero massimo di connessioni utente simultanee.", + "LabelUserMaxActiveSessions": "Numero massimo di sessioni utente contemporanee:", + "EnableAutoCast": "Imposta come Default" } From c0e4f38738e98fe09d5ebb09157fce63da71d268 Mon Sep 17 00:00:00 2001 From: a a Date: Thu, 8 Oct 2020 18:48:22 +0000 Subject: [PATCH 471/582] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 9f4afd6cc0..707784509e 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -227,7 +227,7 @@ "HeaderConfirmPluginInstallation": "Bekräfta installation av tillägg", "HeaderConfirmProfileDeletion": "Bekräfta radering av profil", "HeaderConfirmRevokeApiKey": "Återkalla API-nyckel", - "HeaderConnectToServer": "Anslut till Server", + "HeaderConnectToServer": "Anslut till server", "HeaderConnectionFailure": "Misslyckad anslutning", "HeaderContainerProfile": "Behållareprofil", "HeaderContainerProfileHelp": "Behållareprofiler bestämmer begränsningarna hos en enhet när den spelar upp olika filformat. Om en begränsning är aktuell kommer innehållet att kodas om, även om formatet i sig är inställt för direkt avspelning.", @@ -1351,5 +1351,9 @@ "LabelUnstable": "Ostabil", "LabelIconMaxResHelp": "Högsta tillåtna upplösning för ikoner som visas via egenskapen upnp:icon.", "LabelAlbumArtMaxResHelp": "Högsta tillåtna upplösning för albumomslag som visas via egenskapen upnp:albumArtURI.", - "Image": "Bild" + "Image": "Bild", + "Data": "Data", + "ButtonUseQuickConnect": "Använd Quick Connect", + "ButtonActivate": "Aktivera", + "Authorize": "Auktorisera" } From 171a0485975fe2f9ca3463f776b2e56ac448ee23 Mon Sep 17 00:00:00 2001 From: hanka456 Date: Fri, 9 Oct 2020 09:31:09 +0000 Subject: [PATCH 472/582] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 707784509e..d5343d6051 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -1276,7 +1276,7 @@ "UnsupportedPlayback": "Jellyfin kan inte dekryptera inehåll skyddat av DRM men allt inehåll kommer ändå försökas, även skyddade titlar. Vissa filer kan se helt svarta ut på grund av kryptering eller andra funktioner som inte stöds, till exempel interaktiva titlar.", "LabelLibraryPageSizeHelp": "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.", + "DeinterlaceMethodHelp": "Välj metod för avflätning vid mjukvarukonvertering av inflätat innehåll. När hårdvaruacceleration med stöd för hårdvarustödd avflätning används så kommer hårdvarustödd avflätning användas istället.", "SaveChanges": "Spara ändringar", "LabelRequireHttps": "Kräv HTTPS", "LabelChromecastVersion": "Chromecast-version", @@ -1355,5 +1355,6 @@ "Data": "Data", "ButtonUseQuickConnect": "Använd Quick Connect", "ButtonActivate": "Aktivera", - "Authorize": "Auktorisera" + "Authorize": "Auktorisera", + "EnableAutoCast": "Markera som standard" } From 62e226a3868b921488e3d5894ec55f63703c2755 Mon Sep 17 00:00:00 2001 From: Page Asgardius Date: Fri, 9 Oct 2020 21:15:32 +0000 Subject: [PATCH 473/582] Translated using Weblate (Spanish (Mexico)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_MX/ --- src/strings/es-mx.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 6b7c5ed6f1..5542131a7b 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -1418,5 +1418,8 @@ "LabelUnstable": "Inestable", "LabelKnownProxies": "Proxies conocidos:", "LabelIconMaxResHelp": "Resolución máxima de los íconos expuestos por medio de la propiedad upnp:icon.", - "LabelCurrentStatus": "Estatus actual:" + "LabelCurrentStatus": "Estatus actual:", + "OptionMaxActiveSessionsHelp": "Fijar este valor en 0 desactivará esta característica.", + "OptionMaxActiveSessions": "Determina la cantidad máxima de sesiones simultaneas que puede tener cada usuario.", + "LabelUserMaxActiveSessions": "Límite de sesiones simultaneas:" } From 5d7705d4ab4f5648277645a073ff688c5c9e2c66 Mon Sep 17 00:00:00 2001 From: Page Asgardius Date: Fri, 9 Oct 2020 21:08:25 +0000 Subject: [PATCH 474/582] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index 0ca1c361b3..dbe062078a 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1418,5 +1418,8 @@ "LabelOpenclDeviceHelp": "Este es el dispositivo OpenCL que se usará para el mapeo de tonos. La parte izquierda del punto es el número de plataforma, la derecha es el número de dispositivo en la plataforma. El valor predeterminado es 0.0. Se requiere especificar el archivo ejecutable ffmpeg con el método de aceleración por Hardware para OpenCL.", "LabelMaxMuxingQueueSizeHelp": "El número máximo de paquetes que se pueden almacenar en buffer mientras se espera a que se inicialicen todos los flujos. Intente aumentar este valor si aún encuentra el mensaje de error \"Demasiados paquetes en buffer para transmitir\" en las bitácoras de ffmpeg. El valor recomendado es 2048.", "LabelTonemappingPeakHelp": "Se omitirán los picos de referencia con este valor. Util cuando la información de pico incrustada en los metadatos de imagen no es confiable o cuando se hace un mapeo de tonos de un rango bajo a uno más alto. Se recomienda el valor predeterminado 0.", - "LabelTonemappingThresholdHelp": "Los parámetros del algoritmo de mapeo de tonos se ajustan en cada escena. Se usa un umbral para detectar si la escena ha cambiado o no. Si el brillo promedio se sale del umbral entre el fotograma actual y el próximo, se volveran a calcular los valores de brillo promedio y de pico. Se recomiendan los valores predeterminados 0.8 y 0.2." + "LabelTonemappingThresholdHelp": "Los parámetros del algoritmo de mapeo de tonos se ajustan en cada escena. Se usa un umbral para detectar si la escena ha cambiado o no. Si el brillo promedio se sale del umbral entre el fotograma actual y el próximo, se volveran a calcular los valores de brillo promedio y de pico. Se recomiendan los valores predeterminados 0.8 y 0.2.", + "OptionMaxActiveSessionsHelp": "Un valor de 0 desactivará esta característica.", + "OptionMaxActiveSessions": "Fija el número máximo de sesiones que puede tener cada usuario.", + "LabelUserMaxActiveSessions": "Número máximo de sesiones simultaneas por usuario:" } From ffbda03e3261754130a7b6c456165ae2f566beb8 Mon Sep 17 00:00:00 2001 From: GoldyyDev Date: Fri, 9 Oct 2020 16:30:23 +0000 Subject: [PATCH 475/582] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/he.json b/src/strings/he.json index aa9e89590b..86cad06f80 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -827,5 +827,7 @@ "Data": "נתונים", "ColorPrimaries": "צבעים ראשיים", "ClientSettings": "הגדרות לקוח", - "BoxSet": "מארז" + "BoxSet": "מארז", + "ButtonActivate": "הפעל", + "Authorize": "הרשה" } From 96226172a7146c8e3d8837ddde41f0a29d6b8f17 Mon Sep 17 00:00:00 2001 From: GoldyyDev Date: Fri, 9 Oct 2020 16:29:46 +0000 Subject: [PATCH 476/582] Translated using Weblate (Galician) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/gl/ --- src/strings/gl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/gl.json b/src/strings/gl.json index 534ed0b4eb..d8f8e427b4 100644 --- a/src/strings/gl.json +++ b/src/strings/gl.json @@ -16,5 +16,6 @@ "Collections": "Colecións", "Channels": "Canles", "Books": "Libros", - "Artists": "Artistas" + "Artists": "Artistas", + "Absolute": "" } From c97de933be6ab9ea271e1db6842db0309c12229b Mon Sep 17 00:00:00 2001 From: Page Asgardius Date: Fri, 9 Oct 2020 21:11:30 +0000 Subject: [PATCH 477/582] 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 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 23940195e6..0d2c8b1610 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -1418,5 +1418,8 @@ "LabelQuickConnectCode": "Código conexión rápida:", "LabelKnownProxies": "Proxies conocidos:", "LabelIconMaxResHelp": "Resolución maxima de los iconos por medio de la función upnp:icon.", - "EnableAutoCast": "Establecer como Predeterminado" + "EnableAutoCast": "Establecer como Predeterminado", + "OptionMaxActiveSessionsHelp": "fijar esto en 0 desactivará esta característica.", + "OptionMaxActiveSessions": "Determina el número máximo de sesiones que puede tener cada usuario de forma simultnea.", + "LabelUserMaxActiveSessions": "Límite de sesiones simultaneas:" } From 470ae8f5e465247ccce819a0c9a1520502fd1bf6 Mon Sep 17 00:00:00 2001 From: shakesac Date: Sat, 10 Oct 2020 01:48:57 +0000 Subject: [PATCH 478/582] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_PT/ --- src/strings/pt-pt.json | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 502f2952ba..89cc8891d0 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -614,7 +614,7 @@ "Albums": "Álbuns", "Alerts": "Alertas", "AllChannels": "Todos os canais", - "AllComplexFormats": "Todos os formatos complexos (ASS, SSA, VOBSUB, PGS, SUB/IDX, etc.)", + "AllComplexFormats": "Todos os Formatos Complexos (ASS, SSA, VOBSUB, PGS, SUB/IDX, etc.)", "AllEpisodes": "Todos os episódios", "AllLanguages": "Todos os idiomas", "AllLibraries": "Todas as bibliotecas", @@ -623,7 +623,7 @@ "AllowMediaConversionHelp": "Permitir ou negar acesso à funcionalidade de conversão multimédia.", "AllowOnTheFlySubtitleExtraction": "Permitir a extração de legendas em tempo real", "AllowOnTheFlySubtitleExtractionHelp": "Legendas integradas podem ser extraídas do vídeo e enviadas como texto simples para os clientes para evitar transcodificação. Em certos dispositivos, esta poderá ser uma operação demorada e pode causar interrupções de reprodução durante o processo de extração. Desative esta opção para que as legendas sejam integradas no vídeo durante a conversão para um formato suportado pelo dispositivo de destino.", - "AllowRemoteAccess": "Permitir ligações remotas a este Jellyfin Server.", + "AllowRemoteAccess": "Permitir ligações remotas a este servidor.", "AllowRemoteAccessHelp": "Se inativo, todas as ligações remotas serão bloqueadas.", "AllowedRemoteAddressesHelp": "Lista de IP ou IP/Máscara, separados por vírgulas, com permissão para se ligar remotamente. Se deixado em branco, todos os endereços remotos serão permitidos.", "AlwaysPlaySubtitles": "Reproduzir Sempre", @@ -656,7 +656,7 @@ "ContinueWatching": "Continuar a ver", "ConfirmEndPlayerSession": "Deseja encerrar o Servidor Jellyfin em {0}?", "ConfirmDeleteImage": "Apagar a imagem?", - "ConfigureDateAdded": "Configure a forma como é atribuída a data de adição, no painel de controlo do Servidor Jellyfin, em definições da Biblioteca", + "ConfigureDateAdded": "Configure a forma como é atribuída a data de adição, no painel de controlo, nas definições de biblioteca", "CommunityRating": "Avaliação da comunidade", "ChannelNumber": "Número do canal", "ChannelNameOnly": "Apenas canal {0}", @@ -813,7 +813,7 @@ "HeaderLiveTvTunerSetup": "Configurar Sintonizador de TV", "RecordSeries": "Gravar série", "LabelKeepUpTo": "Manter, no máximo:", - "AroundTime": "Por volta das {0}", + "AroundTime": "Por volta de {0}", "SeriesDisplayOrderHelp": "Ordenar episódios por data de estreia, ordem no DVD ou numeração absoluta.", "SearchResults": "Resultados da Pesquisa", "SearchForMissingMetadata": "Procurar metadados em falta", @@ -1278,5 +1278,9 @@ "BoxSet": "Coleção", "Artist": "Artista", "AlbumArtist": "Artista do Álbum", - "Album": "Álbum" + "Album": "Álbum", + "Data": "Dados", + "ButtonUseQuickConnect": "Usar Quick Connect", + "ButtonActivate": "Ativar", + "Authorize": "Autorizar" } From c1945d058062cfa3ed9cb6f9f2994df0dd1f8aca Mon Sep 17 00:00:00 2001 From: shakesac Date: Sat, 10 Oct 2020 08:57:23 +0000 Subject: [PATCH 479/582] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_PT/ --- src/strings/pt-pt.json | 257 ++++++++++++++++++++++++++++++----------- 1 file changed, 188 insertions(+), 69 deletions(-) diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 89cc8891d0..ad2a45c381 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -66,7 +66,7 @@ "Edit": "Editar", "EnableCinemaMode": "Modo cinema", "Ended": "Terminado", - "ErrorAddingMediaPathToVirtualFolder": "Ocorreu um erro ao adicionar a localização dos seus ficheiros. Por favor, assegure-se que o local é valido e que o processo do Jellyfin Server tenha acesso a essa localização.", + "ErrorAddingMediaPathToVirtualFolder": "Ocorreu um erro ao adicionar o caminho dos ficheiros. Por favor, assegure-se que o caminho é valido e que o Jellyfin tem acesso a ele.", "ErrorGettingTvLineups": "Ocorreu um erro ao transferir a programação de TV. Por favor, certifique-se que a sua informação está correta e tente novamente.", "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 corretos.", "ExitFullscreen": "Sair do ecrã inteiro", @@ -87,7 +87,7 @@ "HeaderAdditionalParts": "Partes Adicionais", "HeaderApiKey": "Chave da API", "HeaderApiKeys": "Chaves da API", - "HeaderApiKeysHelp": "As aplicações externas necessitam de uma chave da API para comunicar com o Jellyfin Server. As chaves são emitidas ao entrar com uma conta Jellyfin ou concedendo manualmente a chave à aplicação.", + "HeaderApiKeysHelp": "As aplicações externas necessitam de uma chave da API para comunicar com o servidor. As chaves são emitidas ao entrar com uma conta Jellyfin ou concedendo manualmente a chave à aplicação.", "HeaderApp": "Aplicação", "HeaderAudioSettings": "Configurações de Áudio", "HeaderBlockItemsWithNoRating": "Bloquear conteúdo sem informação de classificação etária ou com informação desconhecida:", @@ -153,7 +153,7 @@ "HeaderPleaseSignIn": "Iniciar Sessão", "HeaderPreferredMetadataLanguage": "Idioma Preferencial dos Metadados", "HeaderProfileInformation": "Informação do Perfil", - "HeaderProfileServerSettingsHelp": "Estes valores controlam como o Servidor Jellyfin se apresenta a si mesmo para o dispositivo.", + "HeaderProfileServerSettingsHelp": "Estes valores controlam a forma como o servidor se apresenta ao dispositivo.", "HeaderRecentlyPlayed": "Reproduzido Recentemente", "HeaderRemoteControl": "Controlo Remoto", "HeaderRemoveMediaFolder": "Remover Pasta Multimédia", @@ -165,12 +165,12 @@ "HeaderScenes": "Cenas", "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.", + "HeaderSelectMetadataPathHelp": "Procure ou introduza a localização da pasta para guardar os metadados. A pasta deve ter permissões de escrita.", "HeaderSelectPath": "Selecione o Local", "HeaderSelectServerCachePath": "Selecione a Localização da Cache do Servidor", "HeaderSelectServerCachePathHelp": "Procure ou introduza a localização da pasta para guardar a cache do servidor. O Servidor Jellyfin deve ter acesso de escrita a essa pasta.", "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.", + "HeaderSelectTranscodingPathHelp": "Procure ou introduza a localização da pasta para guardar os ficheiros temporários de transcodificação. A pasta deve ter permissões de escrita.", "HeaderSendMessage": "Enviar mensagem", "HeaderServerSettings": "Configurações do Servidor", "HeaderSetupLibrary": "Configurar Bibliotecas Multimédia", @@ -197,8 +197,8 @@ "Help": "Ajuda", "Identify": "Identificar", "Images": "Imagens", - "ImportFavoriteChannelsHelp": "Se ativado, apenas canais que estão marcados como favoritos no sintonizador serão importados.", - "ImportMissingEpisodesHelp": "Se ativado, a informação acerca dos episódios em falta será importada para a base de dados do Servidor Jellyfin e mostrada dentro das temporadas e séries. Isto pode aumentar significativamente a duração da análise da biblioteca.", + "ImportFavoriteChannelsHelp": "Apenas serão importados canais marcados como favoritos no sintonizador.", + "ImportMissingEpisodesHelp": "Informação sobre episódios em falta será importada para a base de dados e estará visível entre as temporadas e séries. Poderá aumentar a duração da análise de bibliotecas.", "InstantMix": "Mix instântaneo", "ItemCount": "{0} itens", "Label3DFormat": "Formato 3D:", @@ -218,9 +218,9 @@ "LabelAppName": "Nome da aplicação", "LabelAppNameExample": "Exemplo: Sickbeard, Sonarr", "LabelArtists": "Artistas:", - "LabelArtistsHelp": "Separe múltiplos com ;", + "LabelArtistsHelp": "Separe múltiplos artistas com ponto e virgula (;).", "LabelAudioLanguagePreference": "Idioma de áudio preferido:", - "LabelBlastMessageInterval": "Intervalo para envio de mensagens de reconhecimento (segundos)", + "LabelBlastMessageInterval": "Intervalo para envio de mensagens de reconhecimento", "LabelBlastMessageIntervalHelp": "Determina a duração em segundos entre as mensagens de exploração enviadas pelo servidor.", "LabelBlockContentWithTags": "Bloquear conteúdo com as tags:", "LabelCachePath": "Localização da cache:", @@ -235,12 +235,12 @@ "LabelCustomCertificatePath": "Localização do certificado SSL personalizado:", "LabelCustomCertificatePathHelp": "Localização do ficheiro PKCS #12 que contém um certificado e um chave privada, que permite ativar o suporte a ligações TLS em domínios privados.", "LabelCustomCss": "CSS personalizado:", - "LabelCustomCssHelp": "Aplica um ficheiro de estilos customizado à interface web.", + "LabelCustomCssHelp": "Aplique um ficheiro de estilo personalizado à interface web.", "LabelCustomDeviceDisplayNameHelp": "Forneça um nome a ser mostrado, ou deixe em branco para utilizar o nome reportado pelo dispositivo.", "LabelCustomRating": "Classificação personalizada:", "LabelDateAdded": "Adicionado a:", "LabelDateAddedBehavior": "Comportamento da data de adição para conteúdo novo:", - "LabelDateAddedBehaviorHelp": "Se um valor estiver presente nos metadados, será utilizado antes destas opções.", + "LabelDateAddedBehaviorHelp": "Caso os metadados tenham um valor presente, este terá prioridade sobre estas opções.", "LabelDay": "Dia:", "LabelDefaultUser": "Utilizador por defeito:", "LabelDefaultUserHelp": "Determina que biblioteca será apresentada aos dispositivos ligados. Pode ser redefinido para cada dispositivo utilizando perfis.", @@ -259,17 +259,17 @@ "LabelEnableAutomaticPortMapHelp": "Automaticamente encaminha o porto público para o porto local através de UPnP. Isto poderá não funcionar em alguns modelos de routers ou devido às configurações da rede. As alterações só serão aplicadas após o reiniciar do servidor", "LabelEnableBlastAliveMessages": "Enviar mensagens de reconhecimento", "LabelEnableBlastAliveMessagesHelp": "Ativar esta opção se o servidor não for convenientemente detetado por outros dispositivos UPnP na rede.", - "LabelEnableDlnaClientDiscoveryInterval": "Intervalo para descoberta de clientes (segundos)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina o tempo em segundos entre procuras SSDP executadas pelo Servidor Jellyfin.", + "LabelEnableDlnaClientDiscoveryInterval": "Intervalo para descoberta de clientes", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina o tempo em segundos entre procuras SSDP.", "LabelEnableDlnaDebugLogging": "Ativar log de depuração do DLNA", "LabelEnableDlnaDebugLoggingHelp": "Esta opção irá criar ficheiros de log grandes e deve apenas ser usado quando é necessário para depurar problemas.", "LabelEnableDlnaPlayTo": "Ativar DLNA Play-To", - "LabelEnableDlnaPlayToHelp": "Detetar dispositivos na rede e oferecer a possibilidade de os controlar.", + "LabelEnableDlnaPlayToHelp": "Detetar dispositivos na rede e oferecer a possibilidade de os controla remotamente.", "LabelEnableDlnaServer": "Ativar servidor DLNA", "LabelEnableDlnaServerHelp": "Permite que dispositivos UPnP na rede naveguem e reproduzam conteúdo.", "LabelEnableHardwareDecodingFor": "Ativar descodificação por hardware para:", "LabelEnableRealtimeMonitor": "Ativar monitorização em tempo real", - "LabelEnableRealtimeMonitorHelp": "As alterações serão processadas imediatamente em sistemas de ficheiros suportados.", + "LabelEnableRealtimeMonitorHelp": "Alterações aos ficheiros serão processadas imediatamente em sistemas de ficheiros suportados.", "LabelEnableSingleImageInDidlLimit": "Limitar a uma imagem incorporada", "LabelEnableSingleImageInDidlLimitHelp": "Alguns dispositivos não interpretarão apropriadamente se múltiplas imagens estiverem incorporadas no DIDL.", "LabelEndDate": "Data de fim:", @@ -283,13 +283,13 @@ "LabelForgotPasswordUsernameHelp": "Introduza o seu nome de utilizador, se se recordar.", "LabelFormat": "Formato:", "LabelFriendlyName": "Nome amigável:", - "LabelServerNameHelp": "Este nome será utilizado para identificar o servidor. Por defeito, é usado o nome do computador.", + "LabelServerNameHelp": "Este nome será utilizado para identificar o servidor. Hostname do servidor usado por defeito.", "LabelGroupMoviesIntoCollections": "Agrupar filmes em coleções", - "LabelGroupMoviesIntoCollectionsHelp": "Ao mostrar listas de filmes, filmes que pertençam a uma coleção serão mostrados como um único item agrupado.", + "LabelGroupMoviesIntoCollectionsHelp": "Ao mostrar listas de filmes, aqueles que pertençam a uma coleção serão apresentados como um único item agrupado.", "LabelHardwareAccelerationType": "Aceleração por hardware:", "LabelHardwareAccelerationTypeHelp": "Aceleração via hardware requer configurações adicionais.", "LabelHttpsPort": "Número do porto HTTPS local:", - "LabelHttpsPortHelp": "Número do porto TCP em que o servidor HTTPS do Jellyfin ficará à escuta.", + "LabelHttpsPortHelp": "Número do porto TCP do servidor HTTPS.", "LabelIconMaxHeight": "Altura máxima do ícone:", "LabelIconMaxWidth": "Largura máxima do ícone:", "LabelIdentificationFieldHelp": "Uma substring ou expressão regex que não diferencia maiúscula de minúsculas.", @@ -308,7 +308,7 @@ "LabelLanguage": "Idioma:", "LabelLineup": "Programação:", "LabelLocalHttpServerPortNumber": "Número do porto HTTP local:", - "LabelLocalHttpServerPortNumberHelp": "Número do porto TCP em que o servidor HTTP do Jellyfin ficará à escuta.", + "LabelLocalHttpServerPortNumberHelp": "Número do porto TCP do servidor HTTP.", "LabelLockItemToPreventChanges": "Bloquear este item para evitar alterações futuras", "LabelLoginDisclaimer": "Aviso legal de login:", "LabelLoginDisclaimerHelp": "Este aviso será mostrado na parte inferior da página de login.", @@ -340,7 +340,7 @@ "LabelModelUrl": "URL do modelo", "LabelMonitorUsers": "Monitorizar atividade de:", "LabelMusicStreamingTranscodingBitrate": "Taxa de transcodificação de música:", - "LabelMusicStreamingTranscodingBitrateHelp": "Defina a taxa máxima ao fazer transmissão de música.", + "LabelMusicStreamingTranscodingBitrateHelp": "Defina a taxa máxima de transmissão de música.", "LabelName": "Nome:", "LabelNewPassword": "Nova palavra-passe:", "LabelNewPasswordConfirm": "Confirmar nova palavra-passe:", @@ -373,7 +373,7 @@ "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):", - "LabelRuntimeMinutes": "Duração (minutos):", + "LabelRuntimeMinutes": "Tempo de execução:", "LabelSaveLocalMetadata": "Guardar capas de álbum nas pastas multimédia", "LabelSaveLocalMetadataHelp": "Guardar capas de álbum diretamente nas pastas multimédia, vai colocá-las num local de fácil acesso para edição.", "LabelScheduledTaskLastRan": "Última execução há {0}. Tempo de execução {1}.", @@ -426,11 +426,11 @@ "MessageAreYouSureYouWishToRemoveMediaFolder": "Tem a certeza de que deseja remover esta pasta?", "MessageConfirmProfileDeletion": "Tem a certeza de que deseja remover este perfil?", "MessageConfirmRecordingCancellation": "Cancelar a gravação?", - "MessageConfirmRestart": "Tem a certeza de que deseja reiniciar o Servidor Jellyfin?", - "MessageConfirmRevokeApiKey": "Tem a certeza de que deseja revogar esta chave da API? A ligação da aplicação ao Servidor Jellyfin vai ser terminada de imediato.", + "MessageConfirmRestart": "Tem a certeza de que deseja reiniciar o Jellyfin?", + "MessageConfirmRevokeApiKey": "Tem a certeza de que deseja revogar esta chave da API? A ligação da aplicação ao servidor terminará abruptamente.", "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.", + "MessageDirectoryPickerBSDInstruction": "Num sistema operativo BSD, é necessário configurar o disco Jail FreeNAS para permitir o acesso aos conteúdos.", "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.", @@ -441,7 +441,7 @@ "MessageNoAvailablePlugins": "Não existem extensões disponíveis.", "MessageNoMovieSuggestionsAvailable": "De momento, não existem sugestões de filmes disponíveis. Veja filmes e avalie-os, e regresse para ver as recomendações.", "MessageNoPluginsInstalled": "Não existe nenhuma extensão instalada.", - "MessageNoTrailersFound": "Nenhum trailer encontrado. Instale o canal Trailer para melhorar sua experiência com filmes, adicionando uma biblioteca de trailers da Internet.", + "MessageNoTrailersFound": "Instale o canal de trailers para melhorar a sua experiência, adicionando uma biblioteca de trailers da internet.", "MessageNothingHere": "Nada aqui.", "MessagePasswordResetForUsers": "As palavras-passe dos utilizadores seguintes foram repostas. Deverão utilizar o PIN de reposição de palavra-passe para fazer login.", "MessagePleaseEnsureInternetMetadata": "Certifique-se que a transferência de metadados da Internet está ativa.", @@ -450,7 +450,7 @@ "MinutesAfter": "minutos depois", "MinutesBefore": "minutos antes", "Monday": "Segunda", - "MoreUsersCanBeAddedLater": "É possível adicionar utilizadores mais tarde no Painel Principal.", + "MoreUsersCanBeAddedLater": "É possível adicionar utilizadores posteriormente através do Painel Principal.", "Mute": "Desativar Som", "NewCollection": "Nova Coleção", "NewCollectionNameExample": "Exemplo: Coleção Guerra das Estrelas", @@ -463,7 +463,7 @@ "OptionAllowLinkSharing": "Permitir partilha nas redes sociais", "OptionAllowManageLiveTv": "Permitir gestão de gravações de TV em Direto", "OptionAllowMediaPlayback": "Permitir reprodução de média", - "OptionAllowMediaPlaybackTranscodingHelp": "Restringir o acesso à transcodificação pode causar falhas de reprodução nas aplicações do Jellyfin devido a formatos multimédia não suportados.", + "OptionAllowMediaPlaybackTranscodingHelp": "Restringir o acesso à transcodificação pode causar falhas de reprodução nos clientes Jellyfin devido a formatos multimédia não suportados.", "OptionAllowRemoteControlOthers": "Permitir controlo remoto de outros utilizadores", "OptionAllowRemoteSharedDevices": "Permitir controlo remoto de dispositivos compartilhados", "OptionAllowRemoteSharedDevicesHelp": "Dispositivos DLNA são considerados como partilhados até que um utilizador comece a controlá-lo.", @@ -478,9 +478,9 @@ "OptionDateAddedImportTime": "Usar a data de importação para a biblioteca", "OptionDatePlayed": "Data de reprodução", "OptionDisableUser": "Desativar este utilizador", - "OptionDisableUserHelp": "Se desativado, o servidor não permite nenhuma ligação com este nome de utilizador. Ligações existentes serão terminadas.", + "OptionDisableUserHelp": "O servidor não permitirá nenhuma ligação com este nome de utilizador. Ligações existentes serão terminadas.", "OptionDislikes": "Não gostos", - "OptionDownloadImagesInAdvanceHelp": "Por defeito, a maioria das imagens são transferidas só quando uma aplicação do Jellyfin as solicita. Ative esta opção para descarregar todas as imagens antencipadamente, assim que os novos ficheiros multimédia são importados. Isto pode aumentar significativamente a duração da análise da biblioteca.", + "OptionDownloadImagesInAdvanceHelp": "Por defeito, a maioria das imagens só são transferidas quando solicitadas por um cliente Jellyfin. Ative esta opção para descarregar todas as imagens durante a importação de novos ficheiros multimédia. Isto pode aumentar significativamente a duração da análise da biblioteca.", "OptionDvd": "DVD", "OptionEmbedSubtitles": "Incorporar no contentor", "OptionEnableAccessFromAllDevices": "Ativar acesso de todos os dispositivos", @@ -498,7 +498,7 @@ "OptionHideUserFromLoginHelp": "Útil para contas de administrador privadas ou ocultas. O utilizador necessita de entrar manualmente, introduzindo o seu nome de utilizador e palavra-passe.", "OptionHlsSegmentedSubtitles": "Legendas segmentadas HLS", "OptionIgnoreTranscodeByteRangeRequests": "Ignorar requisições de extensão do byte de transcodificação", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "Se ativadas, estas requisições serão honradas mas irão ignorar o cabeçalho da extensão do byte.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Estes pedidos serão cumpridos mas irão ignorar o cabeçalho da extensão do byte.", "OptionImdbRating": "Classificação no IMDb", "OptionLikes": "Gostos", "OptionMax": "Máx", @@ -507,9 +507,9 @@ "OptionOnInterval": "Num intervalo", "OptionParentalRating": "Classificação Parental", "OptionPlainStorageFolders": "Mostrar todas as pastas como pastas de armazenamento simples", - "OptionPlainStorageFoldersHelp": "Se ativado, todas as pastas são representadas no DIDL como \"object.container.storageFolder\" ao invés de um tipo mais específico como, por exemplo, \"object.container.person.musicArtist\".", + "OptionPlainStorageFoldersHelp": "Todas as pastas são representadas no DIDL como \"object.container.storageFolder\" ao invés de um tipo mais específico como, por exemplo, \"object.container.person.musicArtist\".", "OptionPlainVideoItems": "Mostrar todos os vídeos como itens de vídeo simples", - "OptionPlainVideoItemsHelp": "Se ativado, todos os vídeos são representados no DIDL como \"object.item.videoItem\" ao invés de um tipo mais específico como, por exemplo, \"object.item.videoItem.movie\".", + "OptionPlainVideoItemsHelp": "Todos os vídeos são representados no DIDL como \"object.item.videoItem\" ao invés de um tipo mais específico como, por exemplo, \"object.item.videoItem.movie\".", "OptionPlayCount": "N.º de Visualizações", "OptionPremiereDate": "Data de Estreia", "OptionReleaseDate": "Data de Lançamento", @@ -557,7 +557,7 @@ "SearchForSubtitles": "Procurar Legendas", "SendMessage": "Enviar mensagem", "Series": "Séries", - "ServerUpdateNeeded": "Este Servidor Jellyfin precisa de ser atualizado. Para transferir a versão mais recente, por favor visite {0}", + "ServerUpdateNeeded": "Este servidor tem que ser atualizado. Para transferir a versão mais recente, por favor visite {0}", "Settings": "Configurações", "SettingsSaved": "Configurações guardadas.", "Share": "Partilhar", @@ -651,7 +651,7 @@ "Shows": "Séries", "Songs": "Músicas", "Sync": "Sincronização", - "Absolute": "Absoluto", + "Absolute": "Completo", "CriticRating": "Avaliação da crítica", "ContinueWatching": "Continuar a ver", "ConfirmEndPlayerSession": "Deseja encerrar o Servidor Jellyfin em {0}?", @@ -675,7 +675,7 @@ "Browse": "Procurar", "BoxRear": "Caixa (verso)", "Box": "Caixa", - "BookLibraryHelp": "Livros digitais e áudio livros são suportados. Consulte o guia de nomenclatura de livros{1}.", + "BookLibraryHelp": "Livros digitais e áudio livros são suportados. Consulte o {0} guia de nomenclatura de livros{1}.", "BirthLocation": "Local de nascimento", "AsManyAsPossible": "Tantos quanto possível", "Art": "Capa", @@ -721,7 +721,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.", "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.", + "ErrorDeletingItem": "Ocorreu um erro ao apagar o item do servidor. Por favor, verifique o acesso de escrita do Jellyfin à pasta e tente de novamente.", "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.", "Episodes": "Episódios", @@ -742,14 +742,14 @@ "DownloadsValue": "{0} transferências", "Download": "Transferir", "DoNotRecord": "Não gravar", - "DisplayModeHelp": "Selecione o tipo de ecrã onde o Jellyfin será utilizado.", + "DisplayModeHelp": "Selecione o estilo de apresentação da interface.", "DisplayMissingEpisodesWithinSeasonsHelp": "Deve também ser ativado para as bibliotecas de TV nas configurações do servidor.", "DisplayMissingEpisodesWithinSeasons": "Mostrar episódios em falta numa série", "DisplayInOtherHomeScreenSections": "Mostrar no ecrã principal em secções como multimédia recente ou continue a ver", "DisplayInMyMedia": "Mostrar no ecrã principal", "Disconnect": "Desligar", "DirectStreaming": "Reprodução direta", - "DirectStreamHelp2": "Reprodução direta de um ficheiro requer pouco processamento e não implica perda de qualidade num vídeo.", + "DirectStreamHelp2": "Reprodução direta de um ficheiro requer pouco processamento e implica uma perda de qualidade mínima.", "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.", "ErrorDefault": "Ocorreu um erro a processar o pedido. Por favor, tente novamente mais tarde.", @@ -783,7 +783,7 @@ "LabelBurnSubtitles": "Integrar legendas:", "LabelBirthYear": "Ano de nascimento:", "LabelBirthDate": "Data de nascimento:", - "LabelBindToLocalNetworkAddressHelp": "Opcional. Indique um endereço IP de uma interface de rede local para colocar o servidor à escuta. Se deixado em branco, o servidor ficará à escuta em todas as interfaces de rede disponíveis. Alterar este parâmetro implica reiniciar o Servidor Jellyfin.", + "LabelBindToLocalNetworkAddressHelp": "Indique um endereço IP de uma interface de rede local para colocar o servidor à escuta. Caso deixe em branco, o servidor ficará à escuta em todas as interfaces de rede disponíveis. Alterar este parâmetro requer reinicio do servidor.", "LabelBindToLocalNetworkAddress": "Endereço local para colocar o servidor à escuta:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Atualizar metadados automaticamente a partir da Internet:", "LabelAuthProvider": "Provedor de autenticação:", @@ -796,7 +796,7 @@ "Items": "Itens", "InstallingPackage": "A instalar {0} (version {1})", "HttpsRequiresCert": "Para activar ligações seguras, é necessário fornecer um certificado SSL confiável. Forneça um certificado SSL ou desactive as ligações seguras.", - "DirectStreamHelp1": "O tipo de multimédia (H.264, AC3, etc.) e a sua resolução são compatíveis com o dispositivo, no entanto, o formato (mkv, avi, wmv, etc.) não é. O conteúdo é reempacotado em tempo real antes de ser enviado para o dispositivo.", + "DirectStreamHelp1": "O tipo de multimédia (H.264, AC3, etc.) e a sua resolução são compatíveis com o dispositivo, no entanto, o formato (mkv, avi, wmv, etc.) não é. O conteúdo será reempacotado em tempo real antes de ser enviado para o dispositivo.", "DirectPlaying": "Reprodução direta", "Backdrop": "Imagem de Fundo", "SortChannelsBy": "Ordenar canais por:", @@ -828,13 +828,13 @@ "ReplaceAllMetadata": "Substituir todos os metadados", "RepeatOne": "Repetir este", "RepeatMode": "Modo de Repetição", - "ServerRestartNeededAfterPluginInstall": "O Servidor Jellyfin necessitará de reiniciar depois de instalar uma extensão.", + "ServerRestartNeededAfterPluginInstall": "O Jellyfin terá que reiniciar após instalar uma extensão.", "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.", + "MessagePluginInstallDisclaimer": "As extensões desenvolvidas por membros da comunidade são uma ótima maneira de melhorar a experiência com funcionalidades adicionais. Antes de proceder à instalação, tenha em atenção que estas podem alterar determinados comportamentos no servidor, como o aumento da duração de análise de bibliotecas, processamento adicional em segundo plano e redução da estabilidade do sistema.", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar esta extensão, inicie sessão localmente no servidor.", "HeaderPluginInstallation": "Instalação de Extensão", - "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}.", + "MessagePluginInstalled": "A extensão foi instalada com sucesso. O servidor terá que reiniciar para aplicar as alterações.", + "PleaseRestartServerName": "Por favor, reinicie o Jellyfin no {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.", "Played": "Reproduzido", @@ -845,10 +845,10 @@ "PlayAllFromHere": "Reproduzir todos a partir daqui", "PerfectMatch": "Correspondência perfeita", "People": "Pessoas", - "PasswordResetProviderHelp": "Selecione um provedor de reposição de palavra-passe a ser usado quando um utilizador requisita uma reposição de palavra-passe", - "PackageInstallFailed": "Instalação de {0} falhada.", - "PackageInstallCompleted": "Instalação de {0} terminada.", - "PackageInstallCancelled": "Instalação de {0} cancelada.", + "PasswordResetProviderHelp": "Selecione um fornecedor de reposição de senha a ser usado quando um utilizador solicitar a reposição da sua senha.", + "PackageInstallFailed": "Instalação de {0} (version {1}) falhou.", + "PackageInstallCompleted": "Instalação de {0} (version {1}) terminada.", + "PackageInstallCancelled": "Instalação de {0} (version {1}) cancelada.", "Overview": "Resumo", "OriginalAirDateValue": "Data de estreia original: {0}", "OptionSubstring": "Parte de palavra", @@ -917,13 +917,13 @@ "HeaderVideoQuality": "Qualidade do Vídeo", "HeaderVideoType": "Tipo de Vídeo", "LabelFolder": "Pasta:", - "LabelOptionalNetworkPath": "(Opcional) Pasta partilhada de rede:", + "LabelOptionalNetworkPath": "Pasta de rede partilhada:", "ColorSpace": "Espaço de cores", "HeaderMyMediaSmall": "O Meu Conteúdo (pequeno)", "HeaderNewDevices": "Novos Dispositivos", "HeaderRecordingOptions": "Opções de Gravação", "HeaderSortOrder": "Direção de Ordenação", - "LabelBaseUrlHelp": "Adiciona uma sub-pasta personalizada ao URL do servidor. Por exemplo: http://exemplo.com/<baseurl>", + "LabelBaseUrlHelp": "Adiciona uma sub-pasta personalizada ao URL do servidor. Por exemplo: http://exemplo.com/<baseurl>", "LabelMoviePrefixHelp": "Se aplicar um prefixo aos títulos dos filmes, introduza-o aqui para que o servidor consiga tratá-los corretamente.", "LabelPleaseRestart": "As alterações produzirão efeito depois de recarregar a página web.", "LabelRecordingPathHelp": "Especifique a localização por defeito para guardar as gravações. Se for deixado em branco, será utilizada a pasta base do servidor.", @@ -933,7 +933,7 @@ "HeaderMusicQuality": "Qualidade da Música", "HeaderMyDevice": "O Meu Dispositivo", "HeaderSortBy": "Ordenar Por", - "LabelOptionalNetworkPathHelp": "Se esta pasta estiver partilhada na rede, fornecer o caminho de rede pode permitir aos clientes aceder diretamente aos ficheiros multimédia. For example, {0} or {1}.", + "LabelOptionalNetworkPathHelp": "Caso a pasta esteja partilhada, fornecer o caminho de rede pode permitir aos clientes aceder diretamente aos ficheiros multimédia. For example, {0} or {1}.", "LabelPersonRoleHelp": "Exemplo: motorista da carrinha de gelados", "LabelPlayer": "Reprodutor:", "LabelServerName": "Nome do servidor:", @@ -959,7 +959,7 @@ "LabelKidsCategories": "Categorias para crianças:", "LabelMovieCategories": "Categorias para filmes:", "LabelMoviePrefix": "Prefixo para filmes:", - "LabelMovieRecordingPath": "Caminho para gravação de filmes (opcional):", + "LabelMovieRecordingPath": "Caminho para gravação de filmes:", "LabelNewsCategories": "Categorias para notícias:", "LabelNumber": "Número:", "LabelPlayMethod": "Método de reprodução:", @@ -969,7 +969,7 @@ "LabelProfileCodecs": "Codecs:", "LabelReasonForTranscoding": "Razão para transcodificação:", "LabelScreensaver": "Proteção de Ecrã:", - "LabelSeriesRecordingPath": "Caminho para gravação de séries (opcional):", + "LabelSeriesRecordingPath": "Caminho para gravação de séries:", "ColorPrimaries": "Cores primárias", "MessageInvalidForgotPasswordPin": "Foi inserido um código PIN inválido ou expirado. Por favor, tente de novo.", "MessageImageTypeNotSelected": "Por favor, selecione um tipo de imagem da lista.", @@ -1001,7 +1001,7 @@ "HeaderTypeImageFetchers": "{0} fornecedores de imagens", "LabelImageFetchersHelp": "Active e ordene os fornecedores de imagens por ordem de preferência.", "LabelKodiMetadataUserHelp": "Autorizar que outras aplicações usem dados de visualização gaurdados em ficheiros NFO.", - "LabelMetadataSaversHelp": "Escolha o formato em que deseja guardar metadados.", + "LabelMetadataSaversHelp": "Escolha o formato a utilizar ao guardar metadados.", "LabelRefreshMode": "Modo de actualização:", "LabelRemoteClientBitrateLimitHelp": "Valor-limite de taxa de transmissão para todos os dispositivos fora da rede local. Este valor é opcional e aplica-se a cada transmissão individual. Ao definir este valor previne que dispositivos peçam uma taxa de transmissão acima da sua ligação à internet. Pedir uma taxa de transmissão acima do limite da ligação implica a necessidade de transcodificar o vídeo e num aumento da carga da CPU.", "Home": "Início", @@ -1031,15 +1031,15 @@ "OptionEnableForAllTuners": "Ativar para todos os sintonizadores", "OptionEnableExternalContentInSuggestions": "Ativar conteúdo externo nas sugestões", "OptionBluray": "Blu-Ray", - "OptionAutomaticallyGroupSeriesHelp": "Se ativado, sérias que estejam espalhadas por várias pastas nesta biblioteca, serão automaticamente combinadas numa única série.", + "OptionAutomaticallyGroupSeriesHelp": "Séries que estejam espalhadas por várias pastas nesta biblioteca, serão automaticamente combinadas numa única série.", "OptionAutomaticallyGroupSeries": "Combinar automaticamente séries que estejam espalhadas por várias pastas", "OptionAllowVideoPlaybackRemuxing": "Permitir a reprodução de vídeo que requeira conversão sem transcodificação", "OptionAllowSyncTranscoding": "Permitir a transferência e sincronização de conteúdos que requeiram transcodificação", "OptionAllowLinkSharingHelp": "Apenas serão partilhadas páginas que contenham informação sobre os conteúdos. Os conteúdos nunca serão partilhados. As partilhas são limitadas no tempo e expiram após {0} dias.", "Option3D": "3D", - "OnlyImageFormats": "Apenas formatos de imagem (VOBSUB, PGS, SUB, etc)", + "OnlyImageFormats": "Apenas Formatos de Imagem (VOBSUB, PGS, SUB, etc)", "OnlyForcedSubtitlesHelp": "Só serão carregadas legendas marcadas como forçadas.", - "OnlyForcedSubtitles": "Apenas legendas forçadas", + "OnlyForcedSubtitles": "Apenas Legendas Forçadas", "Off": "Desligado", "NumLocationsValue": "{0} pastas", "Normal": "Normal", @@ -1077,7 +1077,7 @@ "MoveLeft": "Mover para a esquerda", "MoreFromValue": "Mais de {0}", "Mobile": "Móvel", - "MetadataSettingChangeHelp": "Alterar as definições de metadados irá afetar conteúdo adicionado futuramente. Para refrescar o conteúdo existente, abra o painel de detalhes e clique no botão Refrescar, ou execute refrescamentos em massa utilizando o gestor de metadados.", + "MetadataSettingChangeHelp": "Alterar as definições de metadados afetarão conteúdos adicionados futuramente. Para atualizar o conteúdo existente, abra o painel de detalhes e clique no botão Recarregar metadados, ou execute atualizações em massa utilizando o gestor de metadados.", "MetadataManager": "Gestor de Metadados", "Metadata": "Metadados", "MessageYouHaveVersionInstalled": "Neste momento está instalada a versão {0}.", @@ -1098,7 +1098,7 @@ "LearnHowYouCanContribute": "Veja como pode contribuir.", "Large": "Grande", "LanNetworksHelp": "Lista separada por vírgulas de endereços IP ou IP/máscara que serão considerados como locais quando se aplicam restrições de largura de banda. Se preenchido, todos os outros endereços serão considerados externos e estarão sujeitos às restrições de largura de banda para dispositivos externos. Se deixado em branco, apenas serão consideradas locais as sub-redes do servidor.", - "LabelffmpegPathHelp": "Caminho para o binário ffmpeg, ou para a pasta que o contém.", + "LabelffmpegPathHelp": "Caminho para a aplicação ou pasta que contém o ffmgeg.", "LabelffmpegPath": "Caminho FFmpeg:", "LabelYear": "Ano:", "LabelWeb": "Web:", @@ -1131,7 +1131,7 @@ "NewEpisodes": "Novos episódios", "Never": "Nunca", "Name": "Nome", - "MusicVideo": "Videoclip", + "MusicVideo": "Videoclipe", "MusicArtist": "Artista de Música", "MusicAlbum": "Álbum de Música", "MoreMediaInfo": "Informações", @@ -1171,8 +1171,8 @@ "Small": "Pequeno", "ShowTitle": "Mostrar título", "ShowIndicatorsFor": "Mostrar indicadores para:", - "ServerNameIsShuttingDown": "Jellyfin Server - {0} está a desligar.", - "ServerNameIsRestarting": "Jellyfin Server - {0} está a reiniciar.", + "ServerNameIsShuttingDown": "O servidor {0} está a desligar.", + "ServerNameIsRestarting": "O servidor {0} está a reiniciar.", "SeriesYearToPresent": "{0} - Presente", "SeriesSettings": "Configuração de série", "SeriesCancelled": "Série cancelada.", @@ -1196,8 +1196,8 @@ "PictureInPicture": "Imagem em imagem", "OptionDisplayFolderView": "Mostre em vista de pasta para ver pastas de mídia", "NewCollectionHelp": "Coleções permitem criar grupos personalizados de filmes e outros tipos de conteúdo.", - "MusicLibraryHelp": "Reveja o {0}guia de nomeação de música{1}.", - "MovieLibraryHelp": "Reveja o {0} guia de nomeação de filmes {1}.", + "MusicLibraryHelp": "Consulte o {0}guia de nomenclatura de música{1}.", + "MovieLibraryHelp": "Consulte o {0}guia de nomenclatura de filmes{1}.", "MessageConfirmAppExit": "Quer sair?", "MediaInfoRefFrames": "Ref quadros", "MediaInfoLayout": "Disposição", @@ -1219,7 +1219,7 @@ "EnableStreamLooping": "Auto-cíclico de streams ao vivo", "Down": "Baixo", "ButtonSplit": "Dividir", - "NoCreatedLibraries": "Parece que ainda não foi criada nenhuma biblioteca por enquanto. {0} Gostaria de criar uma biblioteca agora? {1}", + "NoCreatedLibraries": "Parece que ainda não foi criada nenhuma biblioteca. {0} Deseja criar uma biblioteca agora? {1}", "AskAdminToCreateLibrary": "Pergunte a um administrador para criar uma biblioteca.", "LabelVideoResolution": "Resolução de vídeo:", "LabelPlayerDimensions": "Dimensões de leitor:", @@ -1232,7 +1232,7 @@ "AllowFfmpegThrottlingHelp": "Suspende o processo de transcodificação assim que este avance o suficiente após o ponto de reprodução atual, para poupança de recursos. Esta funcionalidade é mais útil quando a reprodução é maioritariamente contínua, sem avançar ou recuar manualmente. Desative esta opção caso haja problemas de reprodução.", "AllowFfmpegThrottling": "Reduzir Taxa de Transcodificação", "PreferEmbeddedTitlesOverFileNamesHelp": "Determina o título a apresentar por defeito quando não é possível carregar metadados locais nem da Internet.", - "OptionSaveMetadataAsHiddenHelp": "Alterar esta definição apenas afetará metadados guardados futuramente. Ficheiros existentes serão atualizados assim que forem alterados pelo Servidor Jellyfin.", + "OptionSaveMetadataAsHiddenHelp": "Alterar esta definição apenas afetará metadados guardados futuramente. Ficheiros existentes serão atualizados assim que forem alterados pelo servidor.", "ButtonSyncPlay": "SyncPlay", "LabelRepositoryUrl": "URL do Repositório", "HeaderNewRepository": "Novo Repositório", @@ -1257,7 +1257,7 @@ "LabelChromecastVersion": "Versão do \"Chromecast\"", "LabelLibraryPageSizeHelp": "Define a quantidade de items a apresentar na página de uma Biblioteca. Para desativar a existência de paginação, introduza o valor 0.", "LabelLibraryPageSize": "Tamanho da página da Biblioteca:", - "LabelEnableHttpsHelp": "Permite que o servidor escute na porta HTTPS configurada. Um certificado válido também deve ser configurado para que isso entre em vigor.", + "LabelEnableHttpsHelp": "Escuta na porta HTTPS configurada. Um certificado válido também deverá ser configurado para funcionar.", "LabelEnableHttps": "Ativar HTTPS", "LabelDeinterlaceMethod": "Método de desentrelaçamento:", "HeaderSyncPlayEnabled": "SyncPlay ativado", @@ -1272,7 +1272,7 @@ "EnableDetailsBanner": "Cartaz de Detalhes", "EnableDecodingColorDepth10Vp9": "Ativar descodificação de hardware de 10-Bits para VP9", "EnableDecodingColorDepth10Hevc": "Ativar descodificação de hardware de 10-Bits para HEVC", - "DeinterlaceMethodHelp": "Selecionar um método de desentrelaçamento para converter conteúdo entrelaçado.", + "DeinterlaceMethodHelp": "Selecionar um método de desentrelaçamento ao transcodificar conteúdo entrelaçado através de software. Caso esteja ativo, o desentrelaçamento através de aceleração por hardware terá prioridade sobre esta opção.", "ClientSettings": "Definições do Cliente", "ButtonTogglePlaylist": "Lista de Reprodução", "BoxSet": "Coleção", @@ -1282,5 +1282,124 @@ "Data": "Dados", "ButtonUseQuickConnect": "Usar Quick Connect", "ButtonActivate": "Ativar", - "Authorize": "Autorizar" + "Authorize": "Autorizar", + "LabelMaxMuxingQueueSize": "Tamanho máximo da fila de muxing:", + "Preview": "Pré-visualizar", + "SubtitleVerticalPositionHelp": "Número da linha onde o texto é exibido. Números positivos representam ordem descendente. Números negativos representam ordem ascendente.", + "LabelSubtitleVerticalPosition": "Posição vertical:", + "ClearQueue": "Limpar fila", + "StopPlayback": "Parar reprodução", + "LabelTonemappingAlgorithm": "Selecione o algoritmo de mapeamento de tonalidade a usar:", + "EnableTonemapping": "Ativar mapeamento de tonalidade", + "LabelOpenclDeviceHelp": "Este é o dispositivo OpenCL usado para o mapeamento de tonalidades. O lado esquerdo do ponto representa o número da plataforma e no lado direito é representado o número do dispositivo na plataforma. O valor padrão é 0.0. É necessário o ficheiro da aplicação ffmpeg que contêm o método de aceleração por hardware OpenCL.", + "LabelOpenclDevice": "Dispositivo OpenCL:", + "LabelColorPrimaries": "Cor primária:", + "LabelColorTransfer": "Transferência de cor:", + "LabelColorSpace": "Espaço de cor:", + "LabelVideoRange": "Intervalo do vídeo:", + "MediaInfoColorPrimaries": "Cores primárias", + "MediaInfoColorTransfer": "Transferência da cor", + "MediaInfoColorSpace": "Espaço de cor", + "MediaInfoVideoRange": "Intervalo do vídeo", + "ButtonPlayer": "Reprodutor", + "ButtonCast": "Elenco", + "EnableBlurHashHelp": "Imagens que ainda estão a ser descarregadas serão apresentadas num espaço reservado.", + "EnableBlurHash": "Ativar espaço desfocado para imagens", + "UnsupportedPlayback": "O Jellyfin não consegue descodificar conteúdo protegido por DRM, mas tentará de qualquer forma, incluindo títulos protegidos. Alguns ficheiros reproduziram um ecrã preto devido à encriptação ou a outras funcionalidades não suportadas, como títulos interativos.", + "OnApplicationStartup": "No arranque da aplicação", + "EveryXHours": "A cada {0} horas", + "EveryHour": "A cada hora", + "EveryXMinutes": "A cada {0} minutos", + "OnWakeFromSleep": "Ao acordar da suspensão", + "DailyAt": "Diariamente no {0}", + "LastSeen": "Última visita a {0}", + "PersonRole": "como {0}", + "ListPaging": "{0}-{1} de {2}", + "WriteAccessRequired": "O Jellyfin necessita de acesso de escrita a esta pasta. Garanta acesso de escrita e tente novamente.", + "PathNotFound": "O caminho não foi encontrado. Verifique se o caminho é válido e tente novamente.", + "Writers": "Argumentistas", + "ViewAlbumArtist": "Ver artista do álbum", + "Video": "Vídeo", + "UseDoubleRateDeinterlacingHelp": "Esta definição usa o field rate durante o desentrelaçamento, referido frequentemente como desentrelaçamento bob, que duplica a taxa de frames do vídeo de forma proporcionar um movimento fluído como quando visualiza um vídeo desentrelaçado numa televisão.", + "UseDoubleRateDeinterlacing": "Duplicar o frame rate durante desentrelaçamento", + "TvLibraryHelp": "Consulte o {0}guia de nomenclatura de TV{1}.", + "TabNetworking": "Rede", + "TabRepositories": "Repositórios", + "SyncPlayAccessHelp": "Selecione o nível de acesso deste utilizador à funcionalidade SyncPlay. O SyncPlay permite a reprodução sincronizada com outros dispositivos.", + "Subtitle": "Legenda", + "SubtitleOffset": "Desvio das Legendas", + "SubtitleDownloadersHelp": "Ative e classifique os fornecedores de legendas por ordem de prioridade.", + "SubtitleAppearanceSettingsDisclaimer": "Estas definições não se aplicam a legendas gráficas (PGS, DVD, etc) ou a legendas ASS/SSA com estilos próprios incorporados.", + "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Estas definições também se aplicam à reprodução através de um Chromecast iniciada por este dispositivo.", + "SpecialFeatures": "Funcionalidades Especiais", + "Filter": "Filtro", + "New": "Novo", + "ShowMore": "Mostrar mais", + "ShowLess": "Mostrar menos", + "SettingsWarning": "Alterar estes valores poderá causar instabilidade ou falhas de ligação. Caso ocorra algum problema recomendamos que volte a alterar para os valores padrão.", + "SelectServer": "Selecionar Servidor", + "Season": "Temporada", + "SaveChanges": "Guardar alterações", + "Restart": "Reiniciar", + "ResetPassword": "Repor Senha", + "RefreshDialogHelp": "Os metadados são atualizados consoante as configurações e serviços de internet ativos no Painel Principal.", + "QuickConnectNotActive": "O Quick Connect não está ativo neste servidor", + "QuickConnectNotAvailable": "Solicite a ativação do Quick Connect ao administrador do servidor", + "QuickConnectInvalidCode": "Código Quick Connect inválido", + "QuickConnectDescription": "Para iniciar sessão com o Quick Connect, prima o botão Quick Connect no dispositivo com o qual está a iniciar sessão e introduza o seguinte código.", + "QuickConnectDeactivated": "O Quick Connect foi desativado antes do pedido de inicio de sessão ser aprovado", + "QuickConnectAuthorizeFail": "Código de quick connect desconhecido", + "QuickConnectAuthorizeSuccess": "Pedido autorizado", + "QuickConnectAuthorizeCode": "Introduza o código {0} para iniciar sessão", + "QuickConnectActivationSuccessful": "Ativado com sucesso", + "Profile": "Perfil", + "PreviousTrack": "Voltar ao anterior", + "PreferEmbeddedEpisodeInfosOverFileNames": "Dar preferência à informação embutida em vez do nome do ficheiro", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Utiliza as informações do episódio dos metadados embutidos, caso existam.", + "MessageGetInstalledPluginsError": "Ocorreu um erro ao listar as extensões instaladas.", + "MessagePluginInstallError": "Ocorreu um erro durante a instalação da extensão.", + "PosterCard": "Cartão do Cartaz", + "Poster": "Cartaz", + "PlaybackErrorNoCompatibleStream": "Este cliente não é compatível com o formato multimédia e o servidor não envia um formato que seja compatível.", + "PlaybackRate": "Taxa de Reprodução", + "Photo": "Fotografia", + "Person": "Pessoa", + "OptionRequirePerfectSubtitleMatchHelp": "Solicitar uma combinação perfeita filtrará as legendas para apenas as que tenham sido testadas e verificadas com seu ficheiro de vídeo. Desmarcar esta opção aumenta a probabilidade de transferência de legendas, aumentando também o número de casos de dessincronia de tempos ou textos incorrectos.", + "OptionMaxActiveSessionsHelp": "O valor 0 desativa esta funcionalidade.", + "OptionMaxActiveSessions": "Atribuir número máximo de sessões de utilizador simultâneas.", + "LabelAlbumArtMaxResHelp": "Resolução máxima da arte do álbum exposta através da propriedade upnp:albumArtURI.", + "Other": "Outro", + "EnableQuickConnect": "Ativar quick connect neste servidor", + "EnableAutoCast": "Definir como padrão", + "NextTrack": "Ir para o próximo", + "MusicVideos": "Videoclipes", + "Movie": "Filme", + "MessageSyncPlayErrorMedia": "A ativação do SyncPlay falhou! Erro de média.", + "MessageSyncPlayErrorMissingSession": "A ativação do SyncPlay falhou! Sessão em falta.", + "MessageSyncPlayErrorNoActivePlayer": "Não foi encontrado nenhum reprodutor ativo. O SyncPlay foi desativado.", + "MessageSyncPlayErrorAccessingGroups": "Ocorreu um erro ao aceder à lista de grupos.", + "MessageSyncPlayLibraryAccessDenied": "Conteúdo de acesso restrito.", + "MessageSyncPlayJoinGroupDenied": "É necessário permissão para utilizar o SyncPlay.", + "MessageSyncPlayCreateGroupDenied": "É necessário permissão para criar um grupo.", + "MessageSyncPlayGroupDoesNotExist": "A entrada no grupo falhou porque não existe.", + "MessageSyncPlayPlaybackPermissionRequired": "É necessário permissão de reprodução.", + "MessageSyncPlayNoGroupsAvailable": "Não existem grupos disponíveis. Comece por reproduzir algo primeiro.", + "MessageSyncPlayGroupWait": "{0} está em buffering…", + "MessageSyncPlayUserLeft": "{0} saiu do grupo.", + "MessageSyncPlayUserJoined": "{0} juntou-se ao grupo.", + "MessageSyncPlayDisabled": "SyncPlay desativado.", + "MessageSyncPlayEnabled": "SyncPlay ativo.", + "MessageNoGenresAvailable": "Ative alguns fornecedores de metadados para obter géneros da internet.", + "MessageAddRepository": "Caso deseje adicionar um repositório, carregue no botão ao lado do cabeçalho e preencha a informação pedida.", + "LabelRepositoryNameHelp": "Nome personalizado para distinguir este repositório de outros presentes no servidor.", + "LabelRepositoryName": "Nome do Repositório", + "LabelRepositoryUrlHelp": "Localização do manifesto do repositório que deseja incluir.", + "LabelUserMaxActiveSessions": "Número máximo de sessões de utilizador em simultâneo:", + "LabelQuickConnectCode": "Código Quick Connect:", + "LabelUnstable": "Instável", + "LabelKnownProxies": "Proxies conhecidas:", + "LabelIconMaxResHelp": "Resolução máxima dos ícones expostos através da propriedade upnp:icon.", + "LabelCurrentStatus": "Ponto da situação:", + "KnownProxiesHelp": "Lista de endereços IP, separada por virgulas, de proxies conhecidas que são usadas ao ligar à sua instância Jellyfin. É necessário para usar adequadamente o cabeçalho X-Forwarded-For. Requer reinicio após alterar.", + "Image": "Imagem" } From a096f4d5138272008a3ad0b497d494b0053d9c92 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Sat, 10 Oct 2020 04:30:21 +0000 Subject: [PATCH 480/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 8acfbde253..084cbdf3e6 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -50,7 +50,7 @@ "OptionDvd": "DVD", "OptionHasThemeSong": "Hình nền bài hát", "OptionHasThemeVideo": "Hình nền Video", - "OptionHideUser": "Ẩn người dùng này từ màn hình đăng nhập", + "OptionHideUser": "Ẩn người dùng này khỏi màn hình đăng nhập", "OptionImdbRating": "Đánh giá IMDb", "OptionIsHD": "Độ nét cao", "OptionIsSD": "Độ nét tiêu chuẩn", @@ -164,7 +164,7 @@ "ButtonWebsite": "Trang web", "ButtonUninstall": "Gỡ cài đặt", "ButtonTrailer": "Tóm tắt", - "ButtonSubmit": "Đăng", + "ButtonSubmit": "Gửi đi", "ButtonSplit": "Tách", "ButtonStop": "Ngưng", "ButtonStart": "Bắt đầu", @@ -329,7 +329,7 @@ "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.", "ErrorAddingTunerDevice": "Đã xảy ra lỗi khi thêm thiết bị dò. Hãy đảm bảo rằng nó có thể truy cập được và thử lại.", "ErrorAddingMediaPathToVirtualFolder": "Có lỗi xảy ra khi thêm đường dẫn phương tiện này. Vui lòng đảm bảo đường dẫn chính xác và Jellyfin được phép truy cập vào vị trí đó.", - "ErrorAddingListingsToSchedulesDirect": "Có lỗi xảy ra khi thêm danh sách này vào tài khoản Schedules Direct của bạn. Schedules Direct chỉ cho phép một số lượng danh sách nhất định mỗi tài khoản. Bạn có thể cần phải đăng nhập vào trang web của Schedules Direct và xoá những danh sách khác trước khi có thể thêm danh sách mới.", + "ErrorAddingListingsToSchedulesDirect": "Có lỗi xảy ra khi thêm nội dung này vào tài khoản Schedules Direct của bạn. Lên lịch trực tiếp chỉ cho phép một số lượng danh sách nhất định mỗi tài khoản. Bạn có thể cần phải đăng nhập vào trang web của Schedules Direct và xoá những danh sách khác trước khi có thể thêm danh sách mới.", "Episodes": "Tập Phim", "Episode": "Tập", "EndsAtValue": "Kết thúc lúc {0}", @@ -375,7 +375,7 @@ "HeaderMetadataSettings": "Cài Đặt Dữ Liệu Mô Tả", "HeaderMediaFolders": "Thư Mục Chứa Nội Dung", "HeaderMedia": "Nội Dung", - "HeaderLoginFailure": "Đăng Nhập Không Thành Công", + "HeaderLoginFailure": "Đăng nhập thất bại", "HeaderLiveTvTunerSetup": "Thiết lập Bộ dò TV Trực tiếp", "HeaderLibrarySettings": "Cài Đặt Thư Viện", "HeaderLibraryOrder": "Thứ Tự Thư Viện", @@ -606,7 +606,7 @@ "LabelExtractChaptersDuringLibraryScanHelp": "Tạo hình ảnh phân cảnh khi video được nhập trong quá trình quét thư viện. Nếu không thì hình này này sẽ được trích xuất thông qua những tác vụ định kì, giúp cho quá trình quét thư viện diễn ra nhanh hơn.", "LabelExtractChaptersDuringLibraryScan": "Trích xuất hình ảnh phân cảnh khi quét thư viện", "LabelBaseUrlHelp": "Thêm một thư mục con tùy chỉnh vào đường dẫn máy chủ. Ví dụ: http://example.com/<baseurl>", - "LabelLoginDisclaimerHelp": "Một tin nhắn sẽ hiển thị ở phía cuối của trang đăng nhập.", + "LabelLoginDisclaimerHelp": "Một thông báo sẽ được hiển thị ở cuối trang đăng nhập.", "LabelLoginDisclaimer": "Hiển thị khi đăng nhập:", "LabelLockItemToPreventChanges": "Khoá mục này để ngăn những thay đổi trong tương lai", "LabelLocalHttpServerPortNumberHelp": "Số cổng TCP cho máy chủ HTTP.", @@ -982,7 +982,7 @@ "LabelVaapiDevice": "API Thiết bị tăng tốc Video:", "LabelUsername": "Tên đăng nhập:", "LabelUserRemoteClientBitrateLimitHelp": "Ghi đè giá trị chung mặc định được đặt trong cài đặt phát lại trên máy chủ.", - "LabelUserLoginAttemptsBeforeLockout": "Lần đăng nhập không thành công trước khi người dùng bị khóa:", + "LabelUserLoginAttemptsBeforeLockout": "Số lần đăng nhập thất bại trước khi người dùng bị khóa:", "LabelUserLibraryHelp": "Chọn thư viện người dùng để hiển thị cho thiết bị. Để trống để giữ nguyên cài đặt mặc định.", "LabelUserLibrary": "Thư viện người dùng:", "LabelUserAgent": "Hành động người dùng:", @@ -1028,7 +1028,7 @@ "OptionMissingEpisode": "Thiếu Tập Phim", "OptionMax": "Tối đa", "OptionLoginAttemptsBeforeLockoutHelp": "Giá trị bằng 0 có nghĩa là giữ mặc định ba lần thử đối với người dùng bình thường và năm lần thử đối với quản trị viên. Đặt giá trị này thành -1 sẽ tắt tính năng này.", - "OptionLoginAttemptsBeforeLockout": "Xác định số lần đăng nhập không chính xác có thể được thực hiện trước khi xảy ra khóa người dùng.", + "OptionLoginAttemptsBeforeLockout": "Xác định số lần đăng nhập thất bại có thể thử trước khi người dùng bị khóa.", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Các yêu cầu này sẽ được thực hiện nhưng sẽ bỏ qua phần đầu dải byte.", "OptionIgnoreTranscodeByteRangeRequests": "Bỏ qua các yêu cầu phạm vi byte chuyển mã", "OptionHlsSegmentedSubtitles": "Phụ đề phân đoạn HLS", @@ -1141,7 +1141,7 @@ "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Các vị trí phương tiện sau sẽ bị xóa khỏi thư viện của bạn:", "MessageReenableUser": "Xem bên dưới để kích hoạt lại", "MessagePluginInstallDisclaimer": "Các plugin do các thành viên cộng đồng xây dựng là một cách tuyệt vời để nâng cao trải nghiệm của bạn với các tính năng và lợi ích bổ sung. Trước khi cài đặt, hãy lưu ý về những ảnh hưởng mà chúng có thể có trên máy chủ của bạn, chẳng hạn như quét thư viện lâu hơn, xử lý nền bổ sung và giảm độ ổn định của hệ thống.", - "MessagePluginConfigurationRequiresLocalAccess": "Để cấu hình plugin này, vui lòng đăng nhập trực tiếp vào máy chủ cục bộ của bạn.", + "MessagePluginConfigurationRequiresLocalAccess": "Để cấu hình plugin này, hãy đăng nhập trực tiếp vào máy chủ của bạn.", "MessagePleaseWait": "Vui lòng đợi. Việc này có thể phải mất một ít thời gian.", "MessagePleaseEnsureInternetMetadata": "Hãy đảm bảo rằng việc tải xuống dữ liệu mô tả trên internet đã được bật.", "LabelSeriesRecordingPath": "Đường dẫn Ghi lại Phim Bộ:", From 75734a2a591b77ca10cb9d426febd30554e005d9 Mon Sep 17 00:00:00 2001 From: Tim Gels Date: Sat, 10 Oct 2020 16:05:05 +0000 Subject: [PATCH 481/582] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 4369f26f56..73af67d3b3 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -904,7 +904,7 @@ "PlaceFavoriteChannelsAtBeginning": "Plaats favoriete kanalen aan het begin", "Play": "Afspelen", "PlayAllFromHere": "Speel allemaal vanaf hier", - "PlayCount": "Aantal keer afsgespeeld", + "PlayCount": "Aantal keer afgespeeld", "PlayFromBeginning": "Afspelen vanaf begin", "PlayNext": "Volgende afspelen", "PlayNextEpisodeAutomatically": "Speel volgende aflevering automatisch", @@ -1238,7 +1238,7 @@ "AskAdminToCreateLibrary": "Vraag een beheerder om een bibliotheek te maken.", "Artist": "Artiest", "AllowFfmpegThrottlingHelp": "Wanneer een transcode of remux ver genoeg voorloopt op de huidige afspeelpositie, pauzeer het proces, zodat het minder middelen verbruikt. Dit is vooral handig wanneer u kijkt zonder vaak te zoeken. Schakel dit uit als u afspeelproblemen ondervindt.", - "AllowFfmpegThrottling": "Throttle Transcodes", + "AllowFfmpegThrottling": "Beperk transcoderingen", "LabelPlayerDimensions": "Mediaspeler afmetingen:", "LabelLibraryPageSizeHelp": "Kies het aantal artikelen dat wordt weergegeven op een bibliotheekpagina. Kies 0 om dit te verbergen.", "LabelLibraryPageSize": "Bibliotheekpagina grootte:", From d1afe8263f11df2cd01dd1bfbe4348eb2b1c673f Mon Sep 17 00:00:00 2001 From: shakesac Date: Sat, 10 Oct 2020 18:33:56 +0000 Subject: [PATCH 482/582] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_PT/ --- src/strings/pt-pt.json | 121 +++++++++++++++++++++++------------------ 1 file changed, 67 insertions(+), 54 deletions(-) diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index ad2a45c381..855b010abb 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -45,7 +45,7 @@ "ButtonSubmit": "Enviar", "ButtonUninstall": "Desinstalar", "ChannelAccessHelp": "Selecione os canais para partilhar com este utilizador. Os administradores poderão editar todos os canais utilizando o gestor de metadados.", - "CinemaModeConfigurationHelp": "O modo cinema traz a experiência do cinema para a sua sala, possibilitando reproduzir trailers e introduções personalizadas antes da longa-metragem.", + "CinemaModeConfigurationHelp": "O modo cinema traz a experiência do cinema para a sua sala, possibilitando a reprodução de trailers e introduções personalizadas antes da longa-metragem.", "Composer": "Compositor", "ConfirmDeleteItem": "Apagar este item irá removê-lo da biblioteca e do sistema de ficheiros. Tem a certeza de que deseja continuar?", "ConfirmDeleteItems": "Apagar estes itens irá removê-los da biblioteca e do sistema de ficheiros. Tem a certeza de que deseja continuar?", @@ -62,13 +62,13 @@ "DeleteUserConfirmation": "Tem a certeza de que deseja apagar este utilizador?", "DeviceAccessHelp": "Apenas se aplica a dispositivos que podem ser identificados como únicos e que não impedem o acesso ao navegador. Filtrar o acesso a dispositivos do utilizador, impede-o de utilizar novos dispositivos, até estes serem aprovados aqui.", "Director": "Realizador", - "EasyPasswordHelp": "O código PIN é utilizado para acesso off-line em clientes suportados e pode ser usado para um acesso fácil dentro da rede.", + "EasyPasswordHelp": "O código PIN é utilizado para acesso offline em clientes suportados e pode ser usado para um acesso fácil dentro da rede.", "Edit": "Editar", "EnableCinemaMode": "Modo cinema", "Ended": "Terminado", - "ErrorAddingMediaPathToVirtualFolder": "Ocorreu um erro ao adicionar o caminho dos ficheiros. Por favor, assegure-se que o caminho é valido e que o Jellyfin tem acesso a ele.", + "ErrorAddingMediaPathToVirtualFolder": "Ocorreu um erro ao adicionar a localização dos ficheiros. Por favor, assegure-se que o caminho é valido e que o Jellyfin tem acesso ao mesmo.", "ErrorGettingTvLineups": "Ocorreu um erro ao transferir a programação de TV. Por favor, certifique-se que a sua informação está correta e tente novamente.", - "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 corretos.", + "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, palavra-passe e código postal estão corretos.", "ExitFullscreen": "Sair do ecrã inteiro", "FastForward": "Avanço rápido", "FileNotFound": "Ficheiro não encontrado.", @@ -144,7 +144,7 @@ "HeaderNewApiKey": "Nova Chave da API", "HeaderParentalRatings": "Classificações Parentais", "HeaderPassword": "Palavra-passe", - "HeaderPasswordReset": "Redefinição de Palavra-Passe", + "HeaderPasswordReset": "Repor Palavra-Passe", "HeaderPaths": "Localizações", "HeaderPinCodeReset": "Redefinir Código PIN", "HeaderPlayAll": "Reproduzir Todos", @@ -168,7 +168,7 @@ "HeaderSelectMetadataPathHelp": "Procure ou introduza a localização da pasta para guardar os metadados. A pasta deve ter permissões de escrita.", "HeaderSelectPath": "Selecione o Local", "HeaderSelectServerCachePath": "Selecione a Localização da Cache do Servidor", - "HeaderSelectServerCachePathHelp": "Procure ou introduza a localização da pasta para guardar a cache do servidor. O Servidor Jellyfin deve ter acesso de escrita a essa pasta.", + "HeaderSelectServerCachePathHelp": "Procure ou introduza a localização da pasta para guardar a cache do servidor. A pasta deve ter permissões de escrita.", "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. A pasta deve ter permissões de escrita.", "HeaderSendMessage": "Enviar mensagem", @@ -242,7 +242,7 @@ "LabelDateAddedBehavior": "Comportamento da data de adição para conteúdo novo:", "LabelDateAddedBehaviorHelp": "Caso os metadados tenham um valor presente, este terá prioridade sobre estas opções.", "LabelDay": "Dia:", - "LabelDefaultUser": "Utilizador por defeito:", + "LabelDefaultUser": "Utilizador padrão:", "LabelDefaultUserHelp": "Determina que biblioteca será apresentada aos dispositivos ligados. Pode ser redefinido para cada dispositivo utilizando perfis.", "LabelDeviceDescription": "Descrição do dispositivo", "LabelDidlMode": "Modo DIDL:", @@ -256,7 +256,7 @@ "LabelEmbedAlbumArtDidl": "Incorporar a capa do álbum no DIDL", "LabelEmbedAlbumArtDidlHelp": "Alguns dispositivos preferem este método para obter a capa do álbum. Noutros pode falhar a reprodução com esta opção ativada.", "LabelEnableAutomaticPortMap": "Ativar mapeamento automático de portas", - "LabelEnableAutomaticPortMapHelp": "Automaticamente encaminha o porto público para o porto local através de UPnP. Isto poderá não funcionar em alguns modelos de routers ou devido às configurações da rede. As alterações só serão aplicadas após o reiniciar do servidor", + "LabelEnableAutomaticPortMapHelp": "Encaminha automaticamente o porto público para o porto local através de UPnP. Isto poderá não funcionar em alguns modelos de routers ou configurações da rede. As alterações só serão aplicadas após o reiniciar do servidor.", "LabelEnableBlastAliveMessages": "Enviar mensagens de reconhecimento", "LabelEnableBlastAliveMessagesHelp": "Ativar esta opção se o servidor não for convenientemente detetado por outros dispositivos UPnP na rede.", "LabelEnableDlnaClientDiscoveryInterval": "Intervalo para descoberta de clientes", @@ -280,7 +280,7 @@ "LabelExtractChaptersDuringLibraryScanHelp": "Gerar imagens dos capítulos quando os vídeos forem importados durante a atualização da biblioteca. Caso contrário, serão geradas durante a tarefa agendada de extração de imagens dos capítulos, permitindo que a atualização da biblioteca seja mais rápida.", "LabelFailed": "Falhou", "LabelFinish": "Terminar", - "LabelForgotPasswordUsernameHelp": "Introduza o seu nome de utilizador, se se recordar.", + "LabelForgotPasswordUsernameHelp": "Introduza o seu nome de utilizador, caso se recorde.", "LabelFormat": "Formato:", "LabelFriendlyName": "Nome amigável:", "LabelServerNameHelp": "Este nome será utilizado para identificar o servidor. Hostname do servidor usado por defeito.", @@ -401,7 +401,7 @@ "LabelTagline": "Slogan:", "LabelTime": "Tempo:", "LabelTimeLimitHours": "Limite de tempo (horas):", - "LabelTranscodingTempPathHelp": "Indique uma localização personalizada para os ficheiros de transcodificação em utilização, ou deixe em branco para utilizar o caminho por defeito.", + "LabelTranscodingTempPathHelp": "Indique uma localização personalizada para os ficheiros de transcodificação em utilização, ou deixe em branco para utilizar o caminho padrão.", "LabelTranscodingThreadCount": "Número de threads de transcodificação:", "LabelTranscodingThreadCountHelp": "Indique o número máximo de threads a ser utilizado para transcodificação. Reduzir o número de threads diminuirá a utilização do CPU, mas pode não converter rápido o suficiente para uma experiência de reprodução suave.", "LabelTriggerType": "Tipo do Acionador:", @@ -437,13 +437,13 @@ "MessageInvalidUser": "Nome de utilizador ou palavra-passe inválidos. Por favor, tente novamente.", "MessageItemSaved": "Item guardado.", "MessageItemsAdded": "Itens adicionados.", - "MessageLeaveEmptyToInherit": "Deixar em branco para herdar as configurações do item pai, ou o valor global por defeito.", + "MessageLeaveEmptyToInherit": "Deixar em branco para herdar as configurações do item pai, ou o valor global predefinido.", "MessageNoAvailablePlugins": "Não existem extensões disponíveis.", "MessageNoMovieSuggestionsAvailable": "De momento, não existem sugestões de filmes disponíveis. Veja filmes e avalie-os, e regresse para ver as recomendações.", "MessageNoPluginsInstalled": "Não existe nenhuma extensão instalada.", "MessageNoTrailersFound": "Instale o canal de trailers para melhorar a sua experiência, adicionando uma biblioteca de trailers da internet.", "MessageNothingHere": "Nada aqui.", - "MessagePasswordResetForUsers": "As palavras-passe dos utilizadores seguintes foram repostas. Deverão utilizar o PIN de reposição de palavra-passe para fazer login.", + "MessagePasswordResetForUsers": "As palavras-passe dos seguintes utilizadores foram repostas. Deverão utilizar o PIN de reposição de palavra-passe para iniciar sessão.", "MessagePleaseEnsureInternetMetadata": "Certifique-se que a transferência de metadados da Internet está ativa.", "MessageReenableUser": "Veja abaixo para reativar", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "As seguintes pastas multimédia serão removidas da Biblioteca:", @@ -513,7 +513,7 @@ "OptionPlayCount": "N.º de Visualizações", "OptionPremiereDate": "Data de Estreia", "OptionReleaseDate": "Data de Lançamento", - "OptionReportByteRangeSeekingWhenTranscoding": "Reportar que o servidor suporta busca de byte quando transcodificar", + "OptionReportByteRangeSeekingWhenTranscoding": "Reportar que o servidor suporta procura de byte durante transcodificação", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Isto é necessário para alguns dispositivos que não procuram o tempo muito bem.", "OptionResElement": "elemento res", "OptionResumable": "Retomável", @@ -552,7 +552,7 @@ "Saturday": "Sábado", "Save": "Guardar", "ScanLibrary": "Analisar biblioteca", - "Search": "Busca", + "Search": "Procurar", "SearchForCollectionInternetMetadata": "Procurar na Internet por capas de álbum e metadados", "SearchForSubtitles": "Procurar Legendas", "SendMessage": "Enviar mensagem", @@ -638,7 +638,7 @@ "BirthPlaceValue": "Local de nascimento: {0}", "Blacklist": "Lista Negra", "Books": "Livros", - "BurnSubtitlesHelp": "Determina se o servidor deve integrar as legendas durante a conversão de vídeo. Evitar a integração de legendas melhora o desempenho do servidor. Selecione Auto para que legendas baseadas em imagem (VOBSUB, PGS, SUB/IDX), e certos formatos ASS/SSA sejam integrados.", + "BurnSubtitlesHelp": "Determina se o servidor deve integrar as legendas durante a conversão de vídeo. Evitar a integração de legendas melhora o desempenho do servidor. Selecione Auto para que legendas baseadas em imagem (VOBSUB, PGS, SUB/IDX) e certos formatos ASS/SSA sejam integrados.", "Channels": "Canais", "Collections": "Coleções", "Favorites": "Favoritos", @@ -691,7 +691,7 @@ "HeaderDetectMyDevices": "Detetar os Meus Dispositivos", "HeaderDeleteProvider": "Apagar Provedor", "HeaderDeleteDevice": "Apagar Dispositivo", - "HeaderDefaultRecordingSettings": "Definições de Gravação por Defeito", + "HeaderDefaultRecordingSettings": "Definições Padrão de Gravação", "HeaderContinueListening": "Continuar a Ouvir", "HeaderConnectionFailure": "Falha de Ligação", "HeaderConfirmPluginInstallation": "Confirmar Instalação de Extensão", @@ -715,7 +715,7 @@ "Filters": "Filtros", "File": "Ficheiro", "Favorite": "Favoritos", - "FFmpegSavePathNotFound": "Não foi possível encontrar o binário FFmpeg na localização que introduziu. O binário FFprobe também é necessário, e deve estar na mesma pasta. Estes componentes são, por norma, instalados em conjunto. Por favor, verifique o caminho da localização e tente de novo.", + "FFmpegSavePathNotFound": "Não foi possível encontrar o binário FFmpeg na localização que introduziu. O binário FFprobe também é necessário, e deve estar na mesma pasta. Estes componentes são, por norma, instalados em conjunto. Por favor, verifique o caminho da localização e tente novamente.", "Extras": "Extras", "ExtraLarge": "Extra Grande", "EveryNDays": "A cada {0} dias", @@ -750,14 +750,14 @@ "Disconnect": "Desligar", "DirectStreaming": "Reprodução direta", "DirectStreamHelp2": "Reprodução direta de um ficheiro requer pouco processamento e implica uma perda de qualidade mínima.", - "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.", + "DefaultSubtitlesHelp": "As legendas são carregadas com base nas definições padrão 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 padrão que podem ser personalizados para cada uma das bibliotecas.", "ErrorDefault": "Ocorreu um erro a processar o pedido. Por favor, tente novamente mais tarde.", - "Default": "Por defeito", + "Default": "Padrão", "DeathDateValue": "Faleceu: {0}", "DatePlayed": "Reproduzido a", "DateAdded": "Adicionado a", - "MessageContactAdminToResetPassword": "Por favor, contacte o Administrador de sistema para repôr a sua password.", + "MessageContactAdminToResetPassword": "Por favor, contacte o Administrador de sistema para repor a sua palavra-passe.", "MessageConfirmRemoveMediaLocation": "Tem a certeza de que deseja remover esta localização?", "MessageConfirmDeleteTunerDevice": "Tem a certeza de que deseja remover este dispositivo?", "UserAgentHelp": "Forneça um user-agent HTTP personalizado.", @@ -805,7 +805,7 @@ "MediaInfoChannels": "Canais", "MapChannels": "Mapear Canais", "LabelChannels": "Canais:", - "XmlTvPathHelp": "Caminho para um ficheiro XMLTV. O Servidor Jellyfin vai ler o ficheiro periodicamente para atualizar a programação de TV. O utilizador é responsável pela crição e atualização do ficheiro.", + "XmlTvPathHelp": "Caminho para um ficheiro XMLTV. O Jellyfin vai ler o ficheiro periodicamente para atualizar a programação da TV. O utilizador é responsável pela criação e atualização do ficheiro.", "TV": "TV", "LiveTV": "TV em Direto", "LabelSelectFolderGroups": "Agrupar automaticamente o conteúdo das seguintes pastas em vistas como Filmes, Música e TV:", @@ -845,7 +845,7 @@ "PlayAllFromHere": "Reproduzir todos a partir daqui", "PerfectMatch": "Correspondência perfeita", "People": "Pessoas", - "PasswordResetProviderHelp": "Selecione um fornecedor de reposição de senha a ser usado quando um utilizador solicitar a reposição da sua senha.", + "PasswordResetProviderHelp": "Selecione um fornecedor de reposição de palavra-passe a ser usado quando um utilizador solicitar a reposição da sua palavra-passe.", "PackageInstallFailed": "Instalação de {0} (version {1}) falhou.", "PackageInstallCompleted": "Instalação de {0} (version {1}) terminada.", "PackageInstallCancelled": "Instalação de {0} (version {1}) cancelada.", @@ -859,7 +859,7 @@ "HeaderOnNow": "No Ar", "Unplayed": "Por reproduzir", "RemoveFromPlaylist": "Remover da lista de reprodução", - "LabelUserRemoteClientBitrateLimitHelp": "Esta opção irá sobrepor-se ao valor global por defeito nas definições de reprodução do servidor.", + "LabelUserRemoteClientBitrateLimitHelp": "Esta opção irá sobrepor-se ao valor global predefinido nas definições de reprodução do servidor.", "MarkUnplayed": "Marcar como Não Visto", "MarkPlayed": "Marcar como Visto", "LabelSelectFolderGroupsHelp": "Pastas não selecionadas serão apresentadas sozinhas, na sua própria vista.", @@ -888,7 +888,7 @@ "Raised": "Alto relevo", "Depressed": "Baixo relevo", "OptionEnableExternalContentInSuggestionsHelp": "Permitir que trailers da Internet e programas de TV em Direto sejam incluídos no conteúdo sugerido.", - "H264CrfHelp": "O parâmetro \\\"Constant Rate Factor (CRF)\\\" é o que define por defeito o nível de qualidade para o codificador x264. Os valores aceites são entre 0 e 51, em que valores mais baixos resultam em maior qualidade (com o custo de ficheiros maiores). Os valores considerados aceitáveis estão entre 18 e 28. O valor por defeito é 23, podendo ser considerado um ponto de partida para ajustes.", + "H264CrfHelp": "O parâmetro \\\"Constant Rate Factor (CRF)\\\" é o que define o nível de qualidade padrão para o codificador x264. Os valores aceites são entre 0 e 51, em que valores mais baixos resultam numa maior qualidade (a custo de ficheiros de maior dimensão). Os valores considerados aceitáveis estão entre 18 e 28. O valor padrão é 23, podendo ser considerado um ponto de partida para ajustes.", "TabStreaming": "Transmissão", "SimultaneousConnectionLimitHelp": "Número máximo de transmissões permitido. Zero equivale a sem limite.", "LabelSimultaneousConnectionLimit": "Limite de transmissões simultâneas:", @@ -903,7 +903,7 @@ "Directors": "Realização", "ButtonAddImage": "Adicionar Imagem", "LabelOriginalTitle": "Título original:", - "LabelPostProcessorArgumentsHelp": "Utilizar o caminho {path} como caminho para o ficheiro de gravação.", + "LabelPostProcessorArgumentsHelp": "Utilizar {path} como caminho para o ficheiro de gravação.", "Hide": "Esconder", "LabelBaseUrl": "URL Base:", "LabelNewName": "Novo nome:", @@ -926,14 +926,14 @@ "LabelBaseUrlHelp": "Adiciona uma sub-pasta personalizada ao URL do servidor. Por exemplo: http://exemplo.com/<baseurl>", "LabelMoviePrefixHelp": "Se aplicar um prefixo aos títulos dos filmes, introduza-o aqui para que o servidor consiga tratá-los corretamente.", "LabelPleaseRestart": "As alterações produzirão efeito depois de recarregar a página web.", - "LabelRecordingPathHelp": "Especifique a localização por defeito para guardar as gravações. Se for deixado em branco, será utilizada a pasta base do servidor.", + "LabelRecordingPathHelp": "Especifique a localização predefinida para guardar as gravações. Se for deixado em branco, será utilizada a pasta base do servidor.", "ColorTransfer": "Transferência de cores", "ExtractChapterImagesHelp": "Extrair imagens do capítulo permite aos clientes apresentar menus de seleção de cenas com gráficos. O processo poderá ser lento e exigente em recursos, bem como ocupar múltiplos gigabytes em disco. Este processo é corrido quando novos vídeos são encontrados e também através de uma tarefa agendada noturna. É possível configurar a hora de execução para que, idealmente, não coincida com horas de maior utilização.", "Features": "Funcionalidades", "HeaderMusicQuality": "Qualidade da Música", "HeaderMyDevice": "O Meu Dispositivo", "HeaderSortBy": "Ordenar Por", - "LabelOptionalNetworkPathHelp": "Caso a pasta esteja partilhada, fornecer o caminho de rede pode permitir aos clientes aceder diretamente aos ficheiros multimédia. For example, {0} or {1}.", + "LabelOptionalNetworkPathHelp": "Caso a pasta esteja partilhada, fornecer o caminho de rede pode permitir aos clientes aceder diretamente aos ficheiros multimédia. Por exemplo, {0} ou {1}.", "LabelPersonRoleHelp": "Exemplo: motorista da carrinha de gelados", "LabelPlayer": "Reprodutor:", "LabelServerName": "Nome do servidor:", @@ -959,7 +959,7 @@ "LabelKidsCategories": "Categorias para crianças:", "LabelMovieCategories": "Categorias para filmes:", "LabelMoviePrefix": "Prefixo para filmes:", - "LabelMovieRecordingPath": "Caminho para gravação de filmes:", + "LabelMovieRecordingPath": "Localização para gravação de filmes:", "LabelNewsCategories": "Categorias para notícias:", "LabelNumber": "Número:", "LabelPlayMethod": "Método de reprodução:", @@ -969,9 +969,9 @@ "LabelProfileCodecs": "Codecs:", "LabelReasonForTranscoding": "Razão para transcodificação:", "LabelScreensaver": "Proteção de Ecrã:", - "LabelSeriesRecordingPath": "Caminho para gravação de séries:", + "LabelSeriesRecordingPath": "Localização para gravação de séries:", "ColorPrimaries": "Cores primárias", - "MessageInvalidForgotPasswordPin": "Foi inserido um código PIN inválido ou expirado. Por favor, tente de novo.", + "MessageInvalidForgotPasswordPin": "Foi inserido um código PIN inválido ou expirado. Por favor, tente novamente.", "MessageImageTypeNotSelected": "Por favor, selecione um tipo de imagem da lista.", "MessageImageFileTypeAllowed": "Apenas são suportados ficheiros JPEG ou PNG.", "MessageForgotPasswordInNetworkRequired": "Por favor, volte a tentar o processo de recuperação de palavra-passe quando se encontrar dentro da sua rede local.", @@ -1098,8 +1098,8 @@ "LearnHowYouCanContribute": "Veja como pode contribuir.", "Large": "Grande", "LanNetworksHelp": "Lista separada por vírgulas de endereços IP ou IP/máscara que serão considerados como locais quando se aplicam restrições de largura de banda. Se preenchido, todos os outros endereços serão considerados externos e estarão sujeitos às restrições de largura de banda para dispositivos externos. Se deixado em branco, apenas serão consideradas locais as sub-redes do servidor.", - "LabelffmpegPathHelp": "Caminho para a aplicação ou pasta que contém o ffmgeg.", - "LabelffmpegPath": "Caminho FFmpeg:", + "LabelffmpegPathHelp": "Localização da aplicação ou pasta que contém o ffmgeg.", + "LabelffmpegPath": "Localização FFmpeg:", "LabelYear": "Ano:", "LabelWeb": "Web:", "LabelVideoCodec": "Codec de vídeo:", @@ -1112,7 +1112,7 @@ "LabelUserLoginAttemptsBeforeLockout": "Tentativas de início de sessão falhadas até o utilizador ser bloqueado:", "LabelTranscodingProgress": "Progresso de transcodificação:", "LabelTranscodingFramerate": "Taxa de fotogramas de transcodificação:", - "LabelTranscodePath": "Caminho de transcodificação:", + "LabelTranscodePath": "Localização de transcodificação:", "LabelTrackNumber": "Número da faixa:", "LabelTextColor": "Côr do texto:", "LabelTextBackgroundColor": "Côr de fundo do texto:", @@ -1135,7 +1135,7 @@ "MusicArtist": "Artista de Música", "MusicAlbum": "Álbum de Música", "MoreMediaInfo": "Informações", - "MediaInfoBitrate": "Taxa de Bits", + "MediaInfoBitrate": "Fluxo de bits", "LabelUserAgent": "User-Agent:", "MediaInfoAnamorphic": "Anamórfico", "LabelTranscodes": "Transcodificação:", @@ -1199,25 +1199,25 @@ "MusicLibraryHelp": "Consulte o {0}guia de nomenclatura de música{1}.", "MovieLibraryHelp": "Consulte o {0}guia de nomenclatura de filmes{1}.", "MessageConfirmAppExit": "Quer sair?", - "MediaInfoRefFrames": "Ref quadros", + "MediaInfoRefFrames": "Ref frames", "MediaInfoLayout": "Disposição", "MediaInfoDefault": "Padrão", - "MediaInfoBitDepth": "Bit profundidade", - "Logo": "Logotipo", - "LabelXDlnaDoc": "X-DLNA doc:", - "LabelXDlnaCap": "X-DLNA cap:", + "MediaInfoBitDepth": "Profundidade de bit", + "Logo": "Logótipo", + "LabelXDlnaDoc": "Documentação X-DLNA:", + "LabelXDlnaCap": "Limite X-DLNA:", "LabelVaapiDeviceHelp": "Este é o nó de renderização usado para aceleração de hardware.", "LabelVaapiDevice": "Dispositivo VAAPI:", - "LabelTypeMetadataDownloaders": "{0} transferências de metadados:", + "LabelTypeMetadataDownloaders": "Fornecedores de metadados para {0}:", "LabelTheme": "Tema:", - "LabelTVHomeScreen": "TV modo ecrã de casa:", - "LabelSubtitleDownloaders": "Transferência de legendas:", - "LabelParentNumber": "Número fonte:", - "LabelMetadataSavers": "Formatos de Gravação de Metadados:", - "LabelAudioBitDepth": "Áudio bit quantidade:", + "LabelTVHomeScreen": "Modo TV ecrã inicial:", + "LabelSubtitleDownloaders": "Fornecedores de legendas:", + "LabelParentNumber": "Número da fonte:", + "LabelMetadataSavers": "Formatos de Gravação dos Metadados:", + "LabelAudioBitDepth": "Profundidade do bit de áudio:", "HeaderNavigation": "Navegação", - "EnableStreamLooping": "Auto-cíclico de streams ao vivo", - "Down": "Baixo", + "EnableStreamLooping": "Transmissão direta em auto loop", + "Down": "para baixo", "ButtonSplit": "Dividir", "NoCreatedLibraries": "Parece que ainda não foi criada nenhuma biblioteca. {0} Deseja criar uma biblioteca agora? {1}", "AskAdminToCreateLibrary": "Pergunte a um administrador para criar uma biblioteca.", @@ -1289,9 +1289,9 @@ "LabelSubtitleVerticalPosition": "Posição vertical:", "ClearQueue": "Limpar fila", "StopPlayback": "Parar reprodução", - "LabelTonemappingAlgorithm": "Selecione o algoritmo de mapeamento de tonalidade a usar:", - "EnableTonemapping": "Ativar mapeamento de tonalidade", - "LabelOpenclDeviceHelp": "Este é o dispositivo OpenCL usado para o mapeamento de tonalidades. O lado esquerdo do ponto representa o número da plataforma e no lado direito é representado o número do dispositivo na plataforma. O valor padrão é 0.0. É necessário o ficheiro da aplicação ffmpeg que contêm o método de aceleração por hardware OpenCL.", + "LabelTonemappingAlgorithm": "Selecione o algoritmo de Tone mapping a usar:", + "EnableTonemapping": "Ativar Tone mapping", + "LabelOpenclDeviceHelp": "Este é o dispositivo OpenCL usado para o Tone Mapping. O lado esquerdo do ponto representa o número da plataforma e no lado direito é representado o número do dispositivo na plataforma. O valor padrão é 0.0. É necessário o ficheiro da aplicação ffmpeg que contem o método de aceleração por hardware OpenCL.", "LabelOpenclDevice": "Dispositivo OpenCL:", "LabelColorPrimaries": "Cor primária:", "LabelColorTransfer": "Transferência de cor:", @@ -1316,7 +1316,7 @@ "PersonRole": "como {0}", "ListPaging": "{0}-{1} de {2}", "WriteAccessRequired": "O Jellyfin necessita de acesso de escrita a esta pasta. Garanta acesso de escrita e tente novamente.", - "PathNotFound": "O caminho não foi encontrado. Verifique se o caminho é válido e tente novamente.", + "PathNotFound": "A localização não foi encontrada. Verifique se o caminho é válido e tente novamente.", "Writers": "Argumentistas", "ViewAlbumArtist": "Ver artista do álbum", "Video": "Vídeo", @@ -1341,7 +1341,7 @@ "Season": "Temporada", "SaveChanges": "Guardar alterações", "Restart": "Reiniciar", - "ResetPassword": "Repor Senha", + "ResetPassword": "Repor Palavra-passe", "RefreshDialogHelp": "Os metadados são atualizados consoante as configurações e serviços de internet ativos no Painel Principal.", "QuickConnectNotActive": "O Quick Connect não está ativo neste servidor", "QuickConnectNotAvailable": "Solicite a ativação do Quick Connect ao administrador do servidor", @@ -1401,5 +1401,18 @@ "LabelIconMaxResHelp": "Resolução máxima dos ícones expostos através da propriedade upnp:icon.", "LabelCurrentStatus": "Ponto da situação:", "KnownProxiesHelp": "Lista de endereços IP, separada por virgulas, de proxies conhecidas que são usadas ao ligar à sua instância Jellyfin. É necessário para usar adequadamente o cabeçalho X-Forwarded-For. Requer reinicio após alterar.", - "Image": "Imagem" + "Image": "Imagem", + "LabelTonemappingParamHelp": "Afine o algoritmo do Tone mapping. Os valores recomendado e padrão são NaN. Geralmente este campo é deixado em branco.", + "LabelTonemappingParam": "Parâmetros do Tonemapping:", + "LabelTonemappingPeakHelp": "Sobrepor este valor ao pico de sinal/nominal/referência. Útil quando a informação de pico embutida nos metadados de visualização não é fiável ou quando o Tone mapping alterna de um intervalo mais pequeno para um maior.", + "LabelTonemappingPeak": "Pico do Tonemapping:", + "LabelTonemappingThresholdHelp": "Os parâmetros do algoritmo de Tonemapping são afinados a cada cena. E é aplicado um limite para detetar se a cena mudou ou não. Caso a distancia entre o brilho médio atual do frame e a média atual de execução excedam o valor do limite, o brilho médio e o pico de brilho da cena serão recalculados. Os valores recomendado e padrão são 0.8 e 0.2 respetivamente.", + "LabelTonemappingThreshold": "Limite do Tonemapping:", + "LabelTonemappingDesatHelp": "Aplicar dessaturação em partes claras da imagem que excedam este nível de brilho. Quanto maior o parâmetro, mais informação de cor será preservada. Esta definição ajuda a prevenir cores excessivamente claras tornando-as (suavemente) em branco. Produz imagens mais naturais devido à redução de informação sobre cores fora do espectro. Os valores recomendado e padrão são 0 e 0.5 respetivamente.", + "TonemappingRangeHelp": "Selecione o intervalo de cores de saída. A opção Auto mantém o intervalo de cores de entrada.", + "SmallCaps": "Maiúsculas reduzidas", + "LabelTonemappingRange": "Alcance do Tone mapping :", + "TonemappingAlgorithmHelp": "O Tone mapping pode ser afinado. Se não está familiarizado com estas opções mantenha os valores padrão. O valor recomendado é Reinhard.", + "AllowTonemappingHelp": "O Tone mapping permite transformar o alcance dinâmico de um vídeo de HDR para SDR mantendo as cores e detalhes da imagem, que é informação importante para representar a cena original. Atualmente apenas funciona durante a transcodificação de vídeos com metadados HDR10 ou HLG embutidos. Caso a reprodução não seja suave ou falhe, considere desligar o descodificador de hardware correspondente.", + "LabelMaxMuxingQueueSizeHelp": "Número máximo de pacotes armazenados em buffer enquanto aguardam que todas a transmissões iniciem. Tente aumentá-lo caso se depare com o seguinte erro nos logs do ffmpeg \"Too many packets buffered for output stream\". O valor recomendado é 2048." } From 97fc71ea7abe20848dee8e150cd0784f82e27db2 Mon Sep 17 00:00:00 2001 From: Lucas Ono Date: Sun, 11 Oct 2020 11:30:16 +0000 Subject: [PATCH 483/582] 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 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 6947772ba2..0fc5e3a6ff 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1399,5 +1399,7 @@ "LabelQuickConnectCode": "Código de conexão rápida:", "LabelKnownProxies": "Proxies conhecidos:", "KnownProxiesHelp": "Lista de endereços IPs, separados por vírgula, de proxies conhecidos usados para conectar na sua instância do Jellyfin. Isso é necessário para usar de forma adequada os cabeçalhos X-Forwarded-for. Essa alteração necessita que o sistema seja reiniciado após salvar.", - "EnableAutoCast": "Definir como padrão" + "EnableAutoCast": "Definir como padrão", + "ThumbCard": "Card da miniatura", + "OptionMaxActiveSessionsHelp": "O valor 0 desativa esta funcão." } From 7006ce2c5cfcd758e346d1fc68dc4e933bdd7ef5 Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 12 Oct 2020 12:00:38 +0900 Subject: [PATCH 484/582] remove symlink to config file --- src/config.json | 40 +++++++++++++++++++++++++++++++++++++++- src/config.template.json | 39 --------------------------------------- 2 files changed, 39 insertions(+), 40 deletions(-) mode change 120000 => 100644 src/config.json delete mode 100644 src/config.template.json diff --git a/src/config.json b/src/config.json deleted file mode 120000 index f1bd2db71e..0000000000 --- a/src/config.json +++ /dev/null @@ -1 +0,0 @@ -config.template.json \ No newline at end of file diff --git a/src/config.json b/src/config.json new file mode 100644 index 0000000000..0f308ccc11 --- /dev/null +++ b/src/config.json @@ -0,0 +1,39 @@ +{ + "multiserver": false, + "themes": [ + { + "name": "Apple TV", + "id": "appletv" + }, { + "name": "Blue Radiance", + "id": "blueradiance" + }, { + "name": "Dark", + "id": "dark", + "default": true + }, { + "name": "Light", + "id": "light" + }, { + "name": "Purple Haze", + "id": "purplehaze" + }, { + "name": "WMC", + "id": "wmc" + } + ], + "plugins": [ + "plugins/playAccessValidation/plugin", + "plugins/experimentalWarnings/plugin", + "plugins/htmlAudioPlayer/plugin", + "plugins/htmlVideoPlayer/plugin", + "plugins/photoPlayer/plugin", + "plugins/comicsPlayer/plugin", + "plugins/bookPlayer/plugin", + "plugins/youtubePlayer/plugin", + "plugins/backdropScreensaver/plugin", + "plugins/logoScreensaver/plugin", + "plugins/sessionPlayer/plugin", + "plugins/chromecastPlayer/plugin" + ] +} diff --git a/src/config.template.json b/src/config.template.json deleted file mode 100644 index 0f308ccc11..0000000000 --- a/src/config.template.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "multiserver": false, - "themes": [ - { - "name": "Apple TV", - "id": "appletv" - }, { - "name": "Blue Radiance", - "id": "blueradiance" - }, { - "name": "Dark", - "id": "dark", - "default": true - }, { - "name": "Light", - "id": "light" - }, { - "name": "Purple Haze", - "id": "purplehaze" - }, { - "name": "WMC", - "id": "wmc" - } - ], - "plugins": [ - "plugins/playAccessValidation/plugin", - "plugins/experimentalWarnings/plugin", - "plugins/htmlAudioPlayer/plugin", - "plugins/htmlVideoPlayer/plugin", - "plugins/photoPlayer/plugin", - "plugins/comicsPlayer/plugin", - "plugins/bookPlayer/plugin", - "plugins/youtubePlayer/plugin", - "plugins/backdropScreensaver/plugin", - "plugins/logoScreensaver/plugin", - "plugins/sessionPlayer/plugin", - "plugins/chromecastPlayer/plugin" - ] -} From 4d92ca43bb423f78cc190e64d47f4fde0fa05e7c Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 12 Oct 2020 12:02:24 +0900 Subject: [PATCH 485/582] reduce requirements for controls on dashboard --- src/controllers/dashboard/dashboard.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index fc7c178ee3..2078e0af8f 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -550,13 +550,13 @@ import 'emby-itemscontainer'; row.classList.remove('playingSession'); } - if (session.ServerId && session.SupportedCommands.indexOf('DisplayMessage') !== -1 && session.DeviceId !== window.connectionManager.deviceId()) { + if (session.ServerId && session.SupportedCommands.indexOf('DisplayMessage') !== -1) { row.querySelector('.btnSessionSendMessage').classList.remove('hide'); } else { row.querySelector('.btnSessionSendMessage').classList.add('hide'); } - if (session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons.length) { + if (session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo) { row.querySelector('.btnSessionInfo').classList.remove('hide'); } else { row.querySelector('.btnSessionInfo').classList.add('hide'); @@ -564,7 +564,7 @@ import 'emby-itemscontainer'; const btnSessionPlayPause = row.querySelector('.btnSessionPlayPause'); - if (session.ServerId && nowPlayingItem && session.SupportsRemoteControl && session.DeviceId !== window.connectionManager.deviceId()) { + if (session.ServerId && nowPlayingItem && session.SupportsRemoteControl) { btnSessionPlayPause.classList.remove('hide'); row.querySelector('.btnSessionStop').classList.remove('hide'); } else { From 05c16d19ac3e041356ef51020e5f6f3a70560ac6 Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 12 Oct 2020 12:20:06 +0900 Subject: [PATCH 486/582] remove swap file from translations --- src/strings/.en-us.json.swp | Bin 16384 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/strings/.en-us.json.swp diff --git a/src/strings/.en-us.json.swp b/src/strings/.en-us.json.swp deleted file mode 100644 index bbb5d9ab1641a6c2570646b97834b16268a5b238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 Date: Mon, 12 Oct 2020 12:20:28 +0900 Subject: [PATCH 487/582] invert default backdrop setting --- src/scripts/settings/userSettings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettings.js index 1235e0fa5f..263d74ed37 100644 --- a/src/scripts/settings/userSettings.js +++ b/src/scripts/settings/userSettings.js @@ -209,7 +209,7 @@ export class UserSettings { } val = this.get('enableBackdrops', false); - return val !== 'false'; + return val === 'true'; } /** From 7b168608a06d4fe48171b8b054d008518bce70ea Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 12 Oct 2020 12:29:57 +0900 Subject: [PATCH 488/582] add library scan button to dashboard --- src/controllers/dashboard/dashboard.html | 3 +++ src/controllers/dashboard/dashboard.js | 15 +++++++++++++++ src/scripts/taskbutton.js | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/controllers/dashboard/dashboard.html b/src/controllers/dashboard/dashboard.html index ec0d60a74d..4c20da8de5 100644 --- a/src/controllers/dashboard/dashboard.html +++ b/src/controllers/dashboard/dashboard.html @@ -22,6 +22,9 @@ +
    diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 2078e0af8f..855ce3ff03 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -3,6 +3,7 @@ import events from 'events'; import itemHelper from 'itemHelper'; import serverNotifications from 'serverNotifications'; import dom from 'dom'; +import taskButton from 'scripts/taskbutton'; import globalize from 'globalize'; import * as datefns from 'date-fns'; import dfnshelper from 'dfnshelper'; @@ -827,9 +828,17 @@ import 'emby-itemscontainer'; refreshActiveRecordings(view, apiClient); loading.hide(); } + + taskButton({ + mode: 'on', + taskKey: 'RefreshLibrary', + button: page.querySelector('.btnRefresh') + }); }); view.addEventListener('viewbeforehide', function () { const apiClient = ApiClient; + const page = this; + events.off(serverNotifications, 'RestartRequired', onRestartRequired); events.off(serverNotifications, 'ServerShuttingDown', onServerShuttingDown); events.off(serverNotifications, 'ServerRestarting', onServerRestarting); @@ -841,6 +850,12 @@ import 'emby-itemscontainer'; if (apiClient) { DashboardPage.stopInterval(apiClient); } + + taskButton({ + mode: 'off', + taskKey: 'RefreshLibrary', + button: page.querySelector('.btnRefresh') + }); }); view.addEventListener('viewdestroy', function () { const page = this; diff --git a/src/scripts/taskbutton.js b/src/scripts/taskbutton.js index 163bcb5a1c..43a46301aa 100644 --- a/src/scripts/taskbutton.js +++ b/src/scripts/taskbutton.js @@ -13,7 +13,7 @@ export default function (options) { function updateTasks(tasks) { const task = tasks.filter(function (t) { - return t.ScheduledTask.Key == options.taskKey; + return t.Key == options.taskKey; })[0]; if (options.panel) { From 39a333f17b988758aeeaf425b2105462bb58a7df Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 12 Oct 2020 12:33:20 +0900 Subject: [PATCH 489/582] move scan button to start on dashboard --- src/controllers/dashboard/dashboard.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/dashboard/dashboard.html b/src/controllers/dashboard/dashboard.html index 4c20da8de5..83d30495e5 100644 --- a/src/controllers/dashboard/dashboard.html +++ b/src/controllers/dashboard/dashboard.html @@ -16,15 +16,15 @@
    + -
    From 7411f96ff9a0f8797468f2c93f4f21783ea09c58 Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 12 Oct 2020 12:36:42 +0900 Subject: [PATCH 490/582] move quickconnect html to proper location --- .../dashboard/quickConnect.html} | 0 .../dashboard/{quickconnect.js => quickConnect.js} | 0 src/scripts/routes.js | 5 +++-- 3 files changed, 3 insertions(+), 2 deletions(-) rename src/{quickconnect.html => controllers/dashboard/quickConnect.html} (100%) rename src/controllers/dashboard/{quickconnect.js => quickConnect.js} (100%) diff --git a/src/quickconnect.html b/src/controllers/dashboard/quickConnect.html similarity index 100% rename from src/quickconnect.html rename to src/controllers/dashboard/quickConnect.html diff --git a/src/controllers/dashboard/quickconnect.js b/src/controllers/dashboard/quickConnect.js similarity index 100% rename from src/controllers/dashboard/quickconnect.js rename to src/controllers/dashboard/quickConnect.js diff --git a/src/scripts/routes.js b/src/scripts/routes.js index 5651102655..ebe6f3cf5a 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -159,10 +159,11 @@ import 'detailtablecss'; }); defineRoute({ - path: '/quickconnect.html', + alias: '/quickConnect.html', + path: '/controllers/dashboard/quickConnect.html', autoFocus: false, roles: 'admin', - controller: 'dashboard/quickconnect' + controller: 'dashboard/quickConnect' }); defineRoute({ From a1cd9c8e602e2078c888bad9a6961264dd9956ad Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 12 Oct 2020 12:45:20 +0900 Subject: [PATCH 491/582] update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 42bdc9dfcf..2f666ec7bc 100644 --- a/package.json +++ b/package.json @@ -245,7 +245,7 @@ "src/controllers/dashboard/plugins/installed/index.js", "src/controllers/dashboard/plugins/available/index.js", "src/controllers/dashboard/plugins/repositories/index.js", - "src/controllers/dashboard/quickconnect.js", + "src/controllers/dashboard/quickConnect.js", "src/controllers/dashboard/scheduledtasks/scheduledtask.js", "src/controllers/dashboard/scheduledtasks/scheduledtasks.js", "src/controllers/dashboard/serveractivity.js", From 59325b68a026259aea67404c1e1104679a0de634 Mon Sep 17 00:00:00 2001 From: CutterXYZ Date: Mon, 12 Oct 2020 12:55:20 +0000 Subject: [PATCH 492/582] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index cdab1cb32c..3e2720e006 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -810,7 +810,7 @@ "MetadataSettingChangeHelp": "Les modifications des paramètres des métadonnées auront une incidence sur le nouveau contenu ajouté. Pour actualiser le contenu existant, ouvrez l'écran des détails et cliquez sur le bouton Actualiser, ou effectuez des actualisations en masse en utilisant le gestionnaire de métadonnées.", "MinutesAfter": "minutes après", "MinutesBefore": "minutes avant", - "Mobile": "Pour appareil Mobile", + "Mobile": "Mobile", "Monday": "Lundi", "MoreFromValue": "Plus de {0}", "MoreUsersCanBeAddedLater": "D'autres utilisateurs pourront être ajoutés ultérieurement à partir du tableau de bord.", @@ -1322,8 +1322,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 en cours de chargement seront remplacées par une image générique floue.", + "EnableBlurHash": "Images floues de substitution", "ButtonCast": "Diffuser", "ButtonSyncPlay": "SyncPlay", "TabRepositories": "Dépôts", @@ -1342,7 +1342,7 @@ "ClearQueue": "Vider la file d'attente", "StopPlayback": "Arrêter", "ButtonPlayer": "Démarrer", - "Writers": "Écrivains", + "Writers": "Scénaristes", "ViewAlbumArtist": "Voir l'album de l'artiste", "PreviousTrack": "Revenir au précédent", "NextTrack": "Passer au prochain", From db160c3ecce0bff0cb32aaf198f7674d5d35f586 Mon Sep 17 00:00:00 2001 From: RiddleDude Date: Mon, 12 Oct 2020 18:25:11 +0000 Subject: [PATCH 493/582] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index 7ff61f2498..563acbab71 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -173,7 +173,7 @@ "LabelEnableDlnaServer": "Iespējot DLNA serveri", "LabelEnableDlnaPlayTo": "Iespējot DLNA atskaņošanu uz", "LabelEnableDlnaDebugLogging": "Iespējot DLNA atkļūdošanas logošanu", - "LabelEnableDlnaClientDiscoveryInterval": "Klientu meklēšanas intervāls (sekundes)", + "LabelEnableDlnaClientDiscoveryInterval": "Klientu meklēšanas intervāls", "LabelEasyPinCode": "Vieglais pin kods:", "LabelDownloadLanguages": "Lejupielādēt valodas:", "LabelDisplayOrder": "Displeja kārtojums:", @@ -202,7 +202,7 @@ "LabelBirthYear": "Dzimšanas gads:", "LabelBirthDate": "Dzimšanas datums:", "LabelAudioLanguagePreference": "Ieteicamā audio valoda:", - "LabelArtistsHelp": "Atdali vairākus izmantojot ;", + "LabelArtistsHelp": "Atdali vairākus izpildītājus izmantojot semikolu", "LabelArtists": "Izpildītājs:", "LabelAppNameExample": "Piemēram: Sickbeard, Sonarr", "LabelAppName": "Lietotnes nosaukums", @@ -510,7 +510,7 @@ "AlwaysPlaySubtitles": "Vienmēr Rādīt", "AllowedRemoteAddressesHelp": "Ar komatiem atdalīts IP adrešu vai IP/tīkla masku saraksts, kas norāda uz tīkliem, kas var pieslēgties attālināti. Ja atstāts tukšs, visas attālinātās adreses tiks atļautas.", "AllowRemoteAccessHelp": "Ja atķeksēts, visi attālinātie savienojumi tiks bloķēti.", - "AllowRemoteAccess": "Atļaut attālinātus savienojumus šim Jellyfin Serverim.", + "AllowRemoteAccess": "Atļaut attālinātus savienojumus ar šo serveri", "AllowOnTheFlySubtitleExtraction": "Atļaut subtitru izvilkšanu atskaņošanas laikā", "AllowMediaConversion": "Atļaut multimēdiju pārveidošanu", "AllLibraries": "Visas bibliotēkas", @@ -723,7 +723,7 @@ "ErrorSavingTvProvider": "Kļūda saglabājot TV sniedzēju. Pārliecinies ka tas ir pieejams un mēģini vēlreiz.", "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.", + "LabelCustomCssHelp": "Izmanto pats savu pielāgoto stilu tīmekļa saskarnei.", "LabelCustomCss": "Pielāgots CSS:", "LabelCustomCertificatePath": "Pielāgotā SSL sertifikāta ceļš:", "LabelCorruptedFrames": "Bojātie kadri:", @@ -741,11 +741,11 @@ "LabelAlbumArtMaxWidth": "Albumu vāku maksimālais platums:", "LabelAlbumArtMaxHeight": "Albumu vāku maksimālais augstums:", "LabelAbortedByServerShutdown": "(Atcelts dēļ servera izslēgšanas)", - "ImportFavoriteChannelsHelp": "Ja iespējots, tikai kanāli, kas atzīmēti kā favorīti uztvērēja ierīcē tiks importēti.", + "ImportFavoriteChannelsHelp": "Tikai kanāli, kas atzīmēti kā favorīti uztvērēja ierīcē tiks importēti.", "HttpsRequiresCert": "Lai iespējotu drošos savienojumus, tev ir jānodrošina uzticams SSL sertifikāts, kā Let's Encrypt. Lūdzu nodrošini sertifikātu, vai atspējo drošos savienojumus.", "HeaderTranscodingProfileHelp": "Pievieno tiešās atskaņošanas profilus, lai norādītu kurus formātus izmantot kad ir vajadzīga trans-kodēšana.", "HeaderTaskTriggers": "Uzdevumu Trigeri", - "HeaderSelectTranscodingPathHelp": "Pārlūko vai ievadi ceļu, kurā tiks glabātas īslaicīgās trans-kodēšanas datnes. Šai mapei jābūt rakstāmai.", + "HeaderSelectTranscodingPathHelp": "Pārlūko vai ievadi ceļu, kurā tiks glabātas trans-kodēšanas datnes. Šai mapei jābūt rakstāmai.", "HeaderSelectTranscodingPath": "Izvēlies Trans-kodēšanas Īslaicīgo Ceļu", "HeaderSelectServerCachePathHelp": "Pārlūko vai ievadi ceļu, kurā vēlies saglabāt servera keša datnes. Šai mapei jābūt rakstāmai.", "HeaderSelectPath": "Izvēlies Ceļu", @@ -799,7 +799,7 @@ "DropShadow": "Fona Ēnojums", "DisplayMissingEpisodesWithinSeasons": "Rādīt trūkstošās epizodes sezonās", "Disconnect": "Atvienot", - "DirectStreamHelp2": "Tieši Straumējot datni tiek izmantots ļoti maz procesora jaudas, bez video vai audio kvalitātes zudumiem.", + "DirectStreamHelp2": "Tieši Straumējot datni, tiek izmantots ļoti maz procesora jaudas un rodas minimāli video kvalitātes zudumi.", "DirectStreamHelp1": "Šis medijs ir saderīgs ar ierīci pēc izšķirtspējas un medija veida (H.264, AC3, utt.), bet atrodas nesaderīgā datnes konteinerī (mkv, avi, wmv, utt.). Video tiks pārpakots uz saderīgu formātu pirms tas tiks straumēts uz ierīci.", "Descending": "Disltošs", "Depressed": "Atspiests", @@ -813,7 +813,7 @@ "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?", "ConfirmDeleteItem": "Dzēšot šo vienumu, tas tiks izdzēsts gan no jūsu failu sistēmas, gan mediju bibliotēkas. Vai tiešām turpināt?", - "ConfigureDateAdded": "Iestati kā pievienošanas datums tiek noteikts iekš Jellyfin Server pārvaldes paneļa zem Bibliotēkas iestatījumiem", + "ConfigureDateAdded": "Konfigurēt kā pievienošanas datums tiek noteikts iekš pārvaldes paneļa zem Bibliotēkas iestatījumiem", "Composer": "Komponists", "ColorSpace": "Krāsu telpa", "ColorPrimaries": "Primārās krāsas", @@ -829,7 +829,7 @@ "ButtonAddScheduledTaskTrigger": "Pievienot Trigeru", "BookLibraryHelp": "Audio un teksta grāmatas tiek atbalstītas. Pārskati {0} grāmatu nosaukumu instrukciju {1}.", "Blacklist": "Melnais saraksts", - "AuthProviderHelp": "Izvēlies Autentifikācijas Nodrošinājumu, kas tiks izmantots lai autentificētu šī lietotāja paroli.", + "AuthProviderHelp": "Izvēlies autentifikācijas nodrošinājumu, kas tiks izmantots lai autentificētu šī lietotāja paroli.", "AspectRatio": "Attēla Proporcijas", "AskAdminToCreateLibrary": "Vaicājiet administratoram, lai izveidotu bibliotēku.", "Ascending": "Augoši", @@ -916,7 +916,7 @@ "LabelBaseUrl": "Pamata URL:", "LabelEnableSingleImageInDidlLimitHelp": "Dažas ierīces pareizi neatskaņos ja vairāki attēli ir iegulti iekš Didl.", "LabelEnableSingleImageInDidlLimit": "Ierobežot uz vienu iegulto attēlu", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Nosaka laiku sekundēs starp Jellyfin veiktajiem SSDP meklējumiem.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Nosaka laiku sekundēs veiktajiem SSDP meklējumiem.", "LabelEmbedAlbumArtDidlHelp": "Dažas ierīces labprātāk izmanto šo metodi lai saņemtu albumu vākus. Citas var neatskaņot ar šo opciju ieslēgtu.", "LabelDroppedFrames": "Nomestie kadri:", "LabelDownMixAudioScaleHelp": "Pastiprināt audio lejupmiksēšanas laikā. Vērtība viens paturēs oriģinālo skaļumu.", @@ -935,7 +935,7 @@ "ApiKeysCaption": "Saraksts ar pašlaik iespējotajām API atslēgām", "EncoderPresetHelp": "Izvēlies ātrāku vērtību lai uzlabotu veiktspēju, vai lēnāku vērtību lai uzlabotu kvalitāti.", "FetchingData": "Iegūst papildu datus", - "ErrorDeletingItem": "Notika kļūda dzēšot vienumu no Jellyfin Servera. Lūdzu pārliecinies vai Jellyfin Server ir rakstoša piekļuve pie satura mapes un mēģini vēlreiz.", + "ErrorDeletingItem": "Notika kļūda dzēšot vienumu no servera. Lūdzu pārliecinies vai Jellyfin ir rakstoša piekļuve pie satura mapes un mēģini vēlreiz.", "ErrorAddingTunerDevice": "Kļūda pievienojot tūnera ierīci. Lūdzu pārliecinies ka tā ir pieejama un mēģini vēlreiz.", "ErrorAddingMediaPathToVirtualFolder": "Notika kļūda pievienojot satura ceļu. Lūdzu pārliecinies ka ceļš ir derīgs un ka Jellyfin Servera procesam ir piekļuve tai vietai.", "Episode": "Epizode", @@ -1028,5 +1028,25 @@ "LabelEmbedAlbumArtDidl": "Ievietot albumu vākus iekš Didl", "LabelSelectFolderGroups": "Automātiski grupēt saturu no sekojošām datnēm skatos kā Filmas, Mūzika un TV:", "AllowFfmpegThrottlingHelp": "Kad trans-kodējums vai remux tiek pietiekami tālu priekšā pašreizējai atskaņošanas vietai, process tiks pauzēts lai patērētu mazāk resursu. Tas ir noderīgākais skatoties bez biežas pārlēkšanas. Atspējo šo ja saskaries ar atskaņošanas problēmām.", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "LabelCustomRating": "Pielāgotais vērtējums:", + "LabelCurrentStatus": "Pašreizējais status:", + "LabelAudioBitDepth": "Audio bitu dziļums:", + "LabelAlbumArtMaxResHelp": "Maksimālā albuma vāka izšķirtspēja, kas padota izmantojot upnp:albumArtURI rekvizītu.", + "InstantMix": "Tūlītēja jaukšana", + "Image": "Attēls", + "HeaderSyncPlayEnabled": "SyncPlay ieslēgts", + "HeaderSyncPlaySelectGroup": "Pievienoties grupai", + "HeaderServerAddressSettings": "Servera adresācijas iestatījumi", + "EnableQuickConnect": "Ieslēgt šim serverim Quick Connect", + "EnableDecodingColorDepth10Vp9": "Ieslēgt 10 bitu aparatūras dekodēšānu priekš VP9", + "EnableDecodingColorDepth10Hevc": "Ieslēgt 10 bitu aparatūras dekodēšānu priekš HEVC", + "EnableAutoCast": "Iestatīt kā noklusējumu", + "Down": "Uz leju", + "DefaultSubtitlesHelp": "Subtitri tiek izvēlēti atkarībā no iestrādāto metadatu noklusējuma un piespiedu karodziņiem. Valodas preference tiek ņemta vērā, kad pieejamas vairākas iespējas.", + "Data": "Dati", + "ButtonUseQuickConnect": "Izmantot Quick Connect", + "ButtonActivate": "Aktivizēt", + "BoxSet": "Komplekts", + "Authorize": "Atļaut" } From b77ef51899ba4bd976102a54f2ed835acdcf3dbb Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 12 Oct 2020 21:27:30 +0000 Subject: [PATCH 494/582] Bump hls.js from 0.14.13 to 0.14.15 Bumps [hls.js](https://github.com/video-dev/hls.js) from 0.14.13 to 0.14.15. - [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.13...v0.14.15) 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 42bdc9dfcf..82f7a86afd 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "fast-text-encoding": "^1.0.3", "flv.js": "^1.5.0", "headroom.js": "^0.11.0", - "hls.js": "^0.14.13", + "hls.js": "^0.14.15", "howler": "^2.2.0", "intersection-observer": "^0.11.0", "jellyfin-apiclient": "^1.4.2", diff --git a/yarn.lock b/yarn.lock index fa4ef0b676..9eeed0850f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5499,10 +5499,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.13: - version "0.14.13" - resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.13.tgz#824395a0631c8e32bf0e8de06873f1d89774bada" - integrity sha512-0u61R0t6DcgJ7Ofr0RUlfrNrkP2gn5pHL+5clKmITY1P7pztyj5aoVw2/9SbeoM6k4shg5iPyuZb+7I32ZzqFQ== +hls.js@^0.14.15: + version "0.14.15" + resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.15.tgz#3d41c6a51cef31d2629df2d9ad4333215770febe" + integrity sha512-zKOY9PZVeDBu3iXL6Dg8DfUPDEf71lTyy7JFgCOJXkqV48HeDfNoMhcN1trMrYRtMyFnpA7YBiI8c1DzSdLAFA== dependencies: eventemitter3 "^4.0.3" url-toolkit "^2.1.6" From d73b7b9cb2af6b0bbff693c0b82989a8fef2efd1 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 12 Oct 2020 21:28:35 +0000 Subject: [PATCH 495/582] Bump swiper from 6.3.2 to 6.3.3 Bumps [swiper](https://github.com/nolimits4web/Swiper) from 6.3.2 to 6.3.3. - [Release notes](https://github.com/nolimits4web/Swiper/releases) - [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md) - [Commits](https://github.com/nolimits4web/Swiper/compare/v6.3.2...v6.3.3) 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 42bdc9dfcf..d19d1d05f6 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.0.2", "sortablejs": "^1.12.0", - "swiper": "^6.3.2", + "swiper": "^6.3.3", "webcomponents.js": "^0.7.24", "whatwg-fetch": "^3.4.1" }, diff --git a/yarn.lock b/yarn.lock index fa4ef0b676..8d60cd9b19 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11024,10 +11024,10 @@ svgo@^1.0.0, svgo@^1.3.2: unquote "~1.1.1" util.promisify "~1.0.0" -swiper@^6.3.2: - version "6.3.2" - resolved "https://registry.yarnpkg.com/swiper/-/swiper-6.3.2.tgz#3eb337ff58f425841a27400a7b0215234d94f3c1" - integrity sha512-mseVNXAsNNSfp3fHuZlMnsToc3ulM3X3on2EC8GMi4+/DwD9SSieSSIQroUbxkIMmCCIvpDN1Ese7o0Ls9I4lw== +swiper@^6.3.3: + version "6.3.3" + resolved "https://registry.yarnpkg.com/swiper/-/swiper-6.3.3.tgz#e0b2e27621c07e789bfa91569b5676e896d18001" + integrity sha512-SnG1weu2GhqKxuG4NTIA1A6OE9x3P/+d2DW6APLUgYNHm0ZgkAOxL/tEDubiHvgwqtaVaz6QWqkSbCaDYffSNg== dependencies: dom7 "^3.0.0-alpha.7" ssr-window "^3.0.0-alpha.4" From 3440f9967bb7dce84f3c53398015cced16ef791d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 12 Oct 2020 21:29:29 +0000 Subject: [PATCH 496/582] Bump style-loader from 1.3.0 to 2.0.0 Bumps [style-loader](https://github.com/webpack-contrib/style-loader) from 1.3.0 to 2.0.0. - [Release notes](https://github.com/webpack-contrib/style-loader/releases) - [Changelog](https://github.com/webpack-contrib/style-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/style-loader/compare/v1.3.0...v2.0.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 36 ++++++++++++++++++++++++++++++------ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 42bdc9dfcf..d502c90f52 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "node-sass": "^4.13.1", "postcss-loader": "^3.0.0", "postcss-preset-env": "^6.7.0", - "style-loader": "^1.3.0", + "style-loader": "^2.0.0", "stylelint": "^13.7.2", "stylelint-config-rational-order": "^0.1.2", "stylelint-no-browser-hacks": "^1.2.1", diff --git a/yarn.lock b/yarn.lock index fa4ef0b676..be6f9c4c91 100644 --- a/yarn.lock +++ b/yarn.lock @@ -990,6 +990,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== +"@types/json-schema@^7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" @@ -1312,6 +1317,16 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + 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" @@ -9945,7 +9960,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.6.5, schema-utils@^2.7.0, schema-utils@^2.7.1: +schema-utils@^2.6.5, schema-utils@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -9954,6 +9969,15 @@ schema-utils@^2.6.5, schema-utils@^2.7.0, schema-utils@^2.7.1: ajv "^6.12.4" ajv-keywords "^3.5.2" +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== + dependencies: + "@types/json-schema" "^7.0.6" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + screenfull@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.0.2.tgz#b9acdcf1ec676a948674df5cd0ff66b902b0bed7" @@ -10772,13 +10796,13 @@ strip-outer@^1.0.0: dependencies: escape-string-regexp "^1.0.2" -style-loader@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" - integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== +style-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" + integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== dependencies: loader-utils "^2.0.0" - schema-utils "^2.7.0" + schema-utils "^3.0.0" style-search@^0.1.0: version "0.1.0" From 74baf782fa5f4d8078f0a6f684a0744f9d1a2e64 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 12 Oct 2020 21:29:55 +0000 Subject: [PATCH 497/582] Bump file-loader from 6.1.0 to 6.1.1 Bumps [file-loader](https://github.com/webpack-contrib/file-loader) from 6.1.0 to 6.1.1. - [Release notes](https://github.com/webpack-contrib/file-loader/releases) - [Changelog](https://github.com/webpack-contrib/file-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/file-loader/compare/v6.1.0...v6.1.1) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 34 +++++++++++++++++++++++++++++----- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 42bdc9dfcf..aab80fdb73 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.22.1", "eslint-plugin-promise": "^4.2.1", - "file-loader": "^6.1.0", + "file-loader": "^6.1.1", "gulp": "^4.0.2", "gulp-babel": "^8.0.0", "gulp-cli": "^2.3.0", diff --git a/yarn.lock b/yarn.lock index fa4ef0b676..05972380bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -990,6 +990,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== +"@types/json-schema@^7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" @@ -1312,6 +1317,16 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + 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" @@ -4433,13 +4448,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.0.tgz#65b9fcfb0ea7f65a234a1f10cdd7f1ab9a33f253" - integrity sha512-26qPdHyTsArQ6gU4P1HJbAbnFTyT2r0pG7czh1GFAd9TZbj0n94wWbupgixZH/ET/meqi2/5+F7DhW4OAXD+Lg== +file-loader@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" + integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== dependencies: loader-utils "^2.0.0" - schema-utils "^2.7.1" + schema-utils "^3.0.0" file-type@5.2.0, file-type@^5.2.0: version "5.2.0" @@ -9954,6 +9969,15 @@ schema-utils@^2.6.5, schema-utils@^2.7.0, schema-utils@^2.7.1: ajv "^6.12.4" ajv-keywords "^3.5.2" +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== + dependencies: + "@types/json-schema" "^7.0.6" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + screenfull@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.0.2.tgz#b9acdcf1ec676a948674df5cd0ff66b902b0bed7" From a7f172885b1d3b31eabd32b5a1bdc8292759d631 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 03:07:59 +0000 Subject: [PATCH 498/582] Bump eslint from 7.10.0 to 7.11.0 Bumps [eslint](https://github.com/eslint/eslint) from 7.10.0 to 7.11.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.10.0...v7.11.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 27 +++++++++++---------------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 3230ef9473..b16ebb9b93 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "css-loader": "^4.3.0", "cssnano": "^4.1.10", "del": "^6.0.0", - "eslint": "^7.10.0", + "eslint": "^7.11.0", "eslint-plugin-compat": "^3.5.1", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.22.1", diff --git a/yarn.lock b/yarn.lock index 7c60521471..0967f04a77 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1307,17 +1307,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.5.5: - version "6.12.4" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" - integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== - 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.12.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -4075,10 +4065,15 @@ 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.10.0: - version "7.10.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.10.0.tgz#494edb3e4750fb791133ca379e786a8f648c72b9" - integrity sha512-BDVffmqWl7JJXqCjAK6lWtcQThZB/aP1HXSH1JKwGwv0LQEdvpR7qzNrUT487RM39B5goWuboFad5ovMBmD8yA== +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint@^7.11.0: + version "7.11.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.11.0.tgz#aaf2d23a0b5f1d652a08edacea0c19f7fadc0b3b" + integrity sha512-G9+qtYVCHaDi1ZuWzBsOWo2wSwd70TXnU6UHA3cTYHp7gCTXZcpggWFoUVAMRarg68qtPoNfFbzPh+VdOgmwmw== dependencies: "@babel/code-frame" "^7.0.0" "@eslint/eslintrc" "^0.1.3" @@ -4090,7 +4085,7 @@ eslint@^7.10.0: enquirer "^2.3.5" eslint-scope "^5.1.1" eslint-utils "^2.1.0" - eslint-visitor-keys "^1.3.0" + eslint-visitor-keys "^2.0.0" espree "^7.3.0" esquery "^1.2.0" esutils "^2.0.2" From a26fb3451fdca8ea1aefea61ab6d3d0cfb803f90 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 03:37:51 +0000 Subject: [PATCH 499/582] Bump webpack from 4.44.2 to 5.0.0 Bumps [webpack](https://github.com/webpack/webpack) from 4.44.2 to 5.0.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v4.44.2...v5.0.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 382 +++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 328 insertions(+), 56 deletions(-) diff --git a/package.json b/package.json index 74edd48ef9..f1cb13f3c4 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "stylelint-config-rational-order": "^0.1.2", "stylelint-no-browser-hacks": "^1.2.1", "stylelint-order": "^4.1.0", - "webpack": "^4.44.2", + "webpack": "^5.0.0", "webpack-merge": "^4.2.2", "webpack-stream": "^6.1.0", "worker-plugin": "^5.0.0" diff --git a/yarn.lock b/yarn.lock index a7142c546a..1d5ca33387 100644 --- a/yarn.lock +++ b/yarn.lock @@ -936,6 +936,13 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + dependencies: + mkdirp "^1.0.4" + "@sindresorhus/is@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" @@ -966,6 +973,27 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/eslint-scope@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" + integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "7.2.4" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.4.tgz#d12eeed7741d2491b69808576ac2d20c14f74c41" + integrity sha512-YCY4kzHMsHoyKspQH+nwSe+70Kep7Vjt2X+dZe5Vs2vkRudqtoFoUIv1RlJmZB8Hbp7McneupoZij4PadxsK5Q== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.45": + version "0.0.45" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -985,16 +1013,16 @@ resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz#551a4589b6ee2cc9c1dff08056128aec29b94880" integrity sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA== +"@types/json-schema@*", "@types/json-schema@^7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + "@types/json-schema@^7.0.5": version "7.0.5" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== -"@types/json-schema@^7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== - "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" @@ -1284,6 +1312,11 @@ acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== +acorn@^8.0.3: + version "8.0.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.4.tgz#7a3ae4191466a6984eee0fe3407a4f3aa9db8354" + integrity sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ== + after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" @@ -1317,16 +1350,6 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" @@ -2106,15 +2129,15 @@ browserslist@^1.1.3: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.6.4, browserslist@^4.8.5: - version "4.12.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711" - integrity sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw== +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.14.3, browserslist@^4.6.4, browserslist@^4.8.5: + version "4.14.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.5.tgz#1c751461a102ddc60e40993639b709be7f2c4015" + integrity sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA== dependencies: - caniuse-lite "^1.0.30001088" - electron-to-chromium "^1.3.483" - escalade "^3.0.1" - node-releases "^1.1.58" + caniuse-lite "^1.0.30001135" + electron-to-chromium "^1.3.571" + escalade "^3.1.0" + node-releases "^1.1.61" bs-recipes@1.3.4: version "1.3.4" @@ -2212,6 +2235,29 @@ cacache@^12.0.2, cacache@^12.0.3: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2361,11 +2407,16 @@ 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.30001109: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, 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== +caniuse-lite@^1.0.30001135: + version "1.0.30001148" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001148.tgz#dc97c7ed918ab33bf8706ddd5e387287e015d637" + integrity sha512-E66qcd0KMKZHNJQt9hiLZGE3J4zuTqE1OnU53miEVtylFbwOEmeA5OsRu90noZful+XGSQOni1aT2tiqu/9yYw== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -2481,6 +2532,11 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -3700,10 +3756,10 @@ electron-to-chromium@^1.2.7: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.427.tgz#ea43d02908a8c71f47ebb46e09de5a3cf8236f04" integrity sha512-/rG5G7Opcw68/Yrb4qYkz07h3bESVRJjUl4X/FrKLXzoUJleKm6D7K7rTTz8V5LUWnd+BbTOyxJX2XprRqHD8A== -electron-to-chromium@^1.3.483: - version "1.3.488" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.488.tgz#9226229f5fbc825959210e81e0bb3e63035d1c06" - integrity sha512-NReBdOugu1yl8ly+0VDtiQ6Yw/1sLjnvflWq0gvY1nfUXU2PbA+1XAVuEb7ModnwL/MfUPjby7e4pAFnSHiy6Q== +electron-to-chromium@^1.3.571: + version "1.3.578" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.578.tgz#e6671936f4571a874eb26e2e833aa0b2c0b776e0" + integrity sha512-z4gU6dA1CbBJsAErW5swTGAaU2TBzc2mPAonJb00zqW1rOraDo2zfBMDRvaz9cVic+0JEZiYbHWPw/fTaZlG2Q== elliptic@^6.0.0: version "6.5.3" @@ -3822,6 +3878,14 @@ enhanced-resolve@^4.3.0: memory-fs "^0.5.0" tapable "^1.0.0" +enhanced-resolve@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.2.0.tgz#3db3307a608f236f33aeea79303d32915792cbab" + integrity sha512-NZlGLl8DxmZoq0uqPPtJfsCAir68uR047+Udsh1FH4+5ydGQdMurn/A430A1BtxASVmMEuS7/XiJ5OxJ9apAzQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.0.0" + enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -3952,10 +4016,10 @@ es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: es6-iterator "^2.0.3" es6-symbol "^3.1.1" -escalade@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.1.tgz#52568a77443f6927cd0ab9c73129137533c965ed" - integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== +escalade@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.0.tgz#e8e2d7c7a8b76f6ee64c2181d6b8151441602d4e" + integrity sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig== escape-html@~1.0.3: version "1.0.3" @@ -4055,7 +4119,7 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.1.1: +eslint-scope@^5.1.0, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -4196,10 +4260,10 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.3: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== -events@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== +events@^3.0.0, events@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -4554,6 +4618,15 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -4576,7 +4649,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -4739,6 +4812,13 @@ fs-extra@3.0.1: jsonfile "^3.0.0" universalify "^0.1.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs-mkdirp-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" @@ -4943,6 +5023,11 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob-watcher@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" @@ -5854,7 +5939,7 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= -infer-owner@^1.0.3: +infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -6392,6 +6477,15 @@ jellyfin-apiclient@^1.4.2: version "1.0.3" resolved "https://github.com/jellyfin/jellyfin-noto#b784602db063734c721a46563ae5d6577ec2b35d" +jest-worker@^26.5.0: + version "26.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30" + integrity sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + jquery@>=1.9.1, jquery@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5" @@ -6703,6 +6797,11 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== +loader-runner@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.1.0.tgz#f70bc0c29edbabdf2043e7ee73ccc3fe1c96b42d" + integrity sha512-oR4lB4WvwFoC70ocraKhn5nkKSs23t57h9udUgw8o0iH8hMXeEoRuUgfcvgUwAJ1ZpRqBvcou4N2SMvM1DwMrA== + loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" @@ -7006,6 +7105,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + lru-queue@0.1: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" @@ -7028,7 +7134,7 @@ make-dir@^2.0.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0: +make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -7279,7 +7385,7 @@ mime-db@1.44.0, mime-db@^1.28.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== @@ -7345,6 +7451,42 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -7381,6 +7523,11 @@ mixin-deep@^1.2.0: dependencies: minimist "^1.2.5" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -7461,10 +7608,10 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== next-tick@1: version "1.1.0" @@ -7543,10 +7690,10 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-releases@^1.1.58: - version "1.1.58" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" - integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== +node-releases@^1.1.61: + version "1.1.61" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.61.tgz#707b0fca9ce4e11783612ba4a2fcba09047af16e" + integrity sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g== node-sass@^4.13.1: version "4.14.1" @@ -7947,6 +8094,13 @@ p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" + integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -8337,6 +8491,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + plugin-error@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" @@ -9301,7 +9462,7 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -10071,6 +10232,13 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + serve-index@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -10349,7 +10517,7 @@ sortablejs@^1.12.0: resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.12.0.tgz#ee6d7ece3598c2af0feb1559d98595e5ea37cbd6" integrity sha512-bPn57rCjBRlt2sC24RBsu40wZsmLkSo2XeqG8k6DC1zru5eObQUIPPZAQG7W2SJ8FZQYq+BEJmvuw1Zxb3chqg== -source-list-map@^2.0.0: +source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== @@ -10365,7 +10533,7 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@~0.5.12: +source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -10395,6 +10563,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + sparkles@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" @@ -10489,6 +10662,13 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +ssri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" + integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== + dependencies: + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -11014,7 +11194,7 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0, supports-color@^7.2.0: +supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -11091,6 +11271,11 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tapable@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.0.0.tgz#a49c3d6a8a2bb606e7db372b82904c970d537a08" + integrity sha512-bjzn0C0RWoffnNdTzNi7rNDhs1Zlwk2tRXgk8EiHKAOX1Mag3d6T0Y5zNa7l9CJ+EoUne/0UHdwS8tMbkh9zDg== + tar-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" @@ -11113,6 +11298,18 @@ tar@^2.0.0: fstream "^1.0.12" inherits "2" +tar@^6.0.2: + version "6.0.5" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" + integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" @@ -11151,6 +11348,21 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" +terser-webpack-plugin@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + terser@>=4, terser@^4.1.2, terser@^4.6.3: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" @@ -11160,6 +11372,15 @@ terser@>=4, terser@^4.1.2, terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.3.4: + version "5.3.5" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.5.tgz#9e080baa0568f96654621b20eb9effa440b1484e" + integrity sha512-Qw3CZAMmmfU824AoGKalx+riwocSI5Cs0PoGp9RdSLfmxkmJgyBxqLBP/isDNtFyhHnitikvRMZzyVgeq+U+Tg== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -12003,6 +12224,14 @@ watchpack@^1.7.4: chokidar "^3.4.1" watchpack-chokidar2 "^2.0.0" +watchpack@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.0.0.tgz#b12248f32f0fd4799b7be0802ad1f6573a45955c" + integrity sha512-xSdCxxYZWNk3VK13bZRYhsQpfa8Vg63zXG+3pyU8ouqSLRCv4IGXIp9Kr226q6GBkGRlZrST2wwKtjfKz2m7Cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + webcomponents.js@^0.7.24: version "0.7.24" resolved "https://registry.yarnpkg.com/webcomponents.js/-/webcomponents.js-0.7.24.tgz#2116fbfa1468ec416a7befdaa333e1d118f69c04" @@ -12023,7 +12252,7 @@ webpack-merge@^4.2.2: dependencies: lodash "^4.17.15" -webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -12031,6 +12260,14 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" +webpack-sources@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.0.1.tgz#1467f6e692ddce91e88b8044c44347b1087bbd4f" + integrity sha512-A9oYz7ANQBK5EN19rUXbvNgfdfZf5U2gP0769OXsj9CvYkCR6OHOsd6OKyEy4H38GGxpsQPKIL83NC64QY6Xmw== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + webpack-stream@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/webpack-stream/-/webpack-stream-6.1.0.tgz#047348e36793432f329c7b5ff13e6e9b6872c152" @@ -12046,7 +12283,7 @@ webpack-stream@^6.1.0: vinyl "^2.1.0" webpack "^4.26.1" -webpack@^4.26.1, webpack@^4.44.2: +webpack@^4.26.1: version "4.44.2" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== @@ -12075,6 +12312,36 @@ webpack@^4.26.1, webpack@^4.44.2: watchpack "^1.7.4" webpack-sources "^1.4.1" +webpack@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.0.0.tgz#c028b2f0c1db2322de1f4a30cc36f6e373d5a26a" + integrity sha512-OK+Q9xGgda3idw/DgCf75XsVFxRLPu48qPwygqI3W9ls5sDdKif5Ay4SM/1UVob0w4juJy14Zv9nNv0WeyV0aA== + dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.45" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^8.0.3" + browserslist "^4.14.3" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.2.0" + eslint-scope "^5.1.0" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" + json-parse-better-errors "^1.0.2" + loader-runner "^4.1.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + pkg-dir "^4.2.0" + schema-utils "^3.0.0" + tapable "^2.0.0" + terser-webpack-plugin "^4.1.0" + watchpack "^2.0.0" + webpack-sources "^2.0.1" + webworkify@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/webworkify/-/webworkify-1.5.0.tgz#734ad87a774de6ebdd546e1d3e027da5b8f4a42c" @@ -12244,6 +12511,11 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yaml@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" From afafc18a352565e8b2fa6a183fb86ed5923c9301 Mon Sep 17 00:00:00 2001 From: Ahmed Mohamed Date: Mon, 12 Oct 2020 21:07:12 +0000 Subject: [PATCH 500/582] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 129 +++++++++++++++++++++++++------------------- 1 file changed, 75 insertions(+), 54 deletions(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index 99a426e12f..15ea0fb3ba 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -4,7 +4,7 @@ "All": "الكل", "AllLibraries": "كل المكتبات", "AllowHWTranscodingHelp": "عند تفعيلها , سيسمح لتونر بتحويل العرض في الحال . هذا قد يساعد في تخفيض التحويل المطلوب من السيرفر.", - "AllowRemoteAccess": "السماح بالاتصالات عن بعد إلى خادم إمبي هذا.", + "AllowRemoteAccess": "السماح بالاتصالات عن بعد إلى هذا الخادم.", "AllowRemoteAccessHelp": "إذا لم يتم تحديده ، فسيتم حظر جميع الاتصالات عن بُعد.", "Audio": "الصوت", "BirthDateValue": "وُلد: {0}", @@ -73,7 +73,7 @@ "EnablePhotos": "عرض الصور", "EnablePhotosHelp": "سيتم اكتشاف الصور وعرضها مع ملفات الوسائط الأخرى.", "ErrorAddingListingsToSchedulesDirect": "كان هناك خطأ في إضافة الاصطفاف لخدمة \"Schedules Direct\" الخاصة بك. خدمة \"Schedules Direct\" لا تسمح إلا بعدد محدود من الاصطفافات لكل حساب. قد تحتاج إلى تسجيل الدخول إلى موقع \"Schedules Direct\" لإزالة الاصطفافات الأخرى من حسابك قبل المتابعة.", - "ErrorAddingMediaPathToVirtualFolder": "كان هناك خطأ في إضافة مسار الوسائط. الرجاء التأكد من صحة المسار وأن خادم أمبي لديه صلاحية الوصول إلى الموقع.", + "ErrorAddingMediaPathToVirtualFolder": "كان هناك خطأ في إضافة مسار الوسائط. الرجاء التأكد من صحة المسار وأن جيلليفن لديه صلاحية الوصول إلى ذلك المسار.", "ErrorAddingTunerDevice": "كان هناك خطأ في إضافة جهاز المولف. الرجاء التأكد من صلاحية الوصول إليه ثم عاود المحاولة.", "ErrorAddingXmlTvFile": "كان هناك خطأ في محاولة الوصول إلى ملف XMLTV. الرجاء التأكد من وجود الملف ثم حاول مرة أخرى.", "ErrorGettingTvLineups": "كان هناك خطأ في إنزال اصطفافات التلفاز. الرجاء التأكد من أن بياناتك صحيحة ثم عاود المحاولة.", @@ -194,7 +194,7 @@ "HeaderSelectServerCachePath": "إختر مسار كاشة الخادم", "HeaderSelectServerCachePathHelp": "تصفح أو أدخل المسار الذي ترغب أن يُستخدم كاشة لملفات الخادم. يجب أن يكون هذا المجلد قابل للكتابة فيه.", "HeaderSelectTranscodingPath": "إختر المسار المؤقت للتشفير البيني", - "HeaderSelectTranscodingPathHelp": "تصفح أو أدخل المسار الذي ترغب أن يُستخدم لملفات التشفير البيني. يجب أن يكون هذا المجلد قابل للكتابة فيه.", + "HeaderSelectTranscodingPathHelp": "تصفح أو أدخل المسار الذي ترغب أن يُستخدم لملفات التشفير البيني. يجب أن يكون هذا المجلد قابل للكتابة فيه.", "HeaderSendMessage": "أرسل رسالة", "HeaderServerSettings": "إعدادات الخادم", "HeaderSetupLibrary": "ضبط مكتبة المحتوى الخاصة بك", @@ -245,7 +245,7 @@ "LabelArtistsHelp": "افصل بين الفنانين ب ; فاصلة منقوطة.", "LabelAudioLanguagePreference": "اللغة المفضلة للصوت:", "LabelBindToLocalNetworkAddress": "إربطه إلى عنوان شبكة محلي:", - "LabelBindToLocalNetworkAddressHelp": "تجاوز عنوان الآي بي المحلي لربطه بخادم http. إذا ترك فارغاً، فإن الخادم سيربطه بجميع العناوين المتاحة. تغيير هذه القيمة يتطلب إعادة تشغيل خادم جيلليفن.", + "LabelBindToLocalNetworkAddressHelp": "تجاوز عنوان الآي بي المحلي لربطه بخادم http. إذا ترك فارغاً، فإن الخادم سيربطه بجميع العناوين المتاحة. تغيير هذه القيمة يتطلب إعادة تشغيل.", "LabelBlastMessageInterval": "فترات بث رسالة قيد التشغيل", "LabelBlastMessageIntervalHelp": "يحدد الفترة بالثواني بين بث رسائل قيد التشغيل.", "LabelCache": "مَخبأ (كاش):", @@ -280,52 +280,52 @@ "LabelEmbedAlbumArtDidl": "ضمن رسومات الألبوم في مخطط DIDL", "LabelEmbedAlbumArtDidlHelp": "بعض الأجهزة تفضل هذه الطريقة لاستخلاص رسومات الألبوم، فيما قد يفشل تشغيلها بتفعيل هذا الخيار.", "LabelEnableAutomaticPortMap": "فعل الخاصية الآلية في التوفيق بين المنافذ", - "LabelEnableAutomaticPortMapHelp": "حاول التوفيق بين المنفذ العالمي والمنفذ المحلي آلياً باستخدام آلية UPnP. هذه الخاصية قد لا تعمل مع بعض أنواع الراوترات.", + "LabelEnableAutomaticPortMapHelp": "يتم تلقائيا التوفيق بين المنفذ العالمي والمنفذ المحلي آلياً باستخدام آلية UPnP. هذه الخاصية قد لا تعمل مع بعض أنواع الراوترات او بعض اعدادات الشبكة. لن يحدث تغيير حتى يتم اعاده تشغيل الخادم.", "LabelEnableBlastAliveMessages": "بث رسائل قيد التشغيل", "LabelEnableBlastAliveMessagesHelp": "فعل هذه الخاصية إذا كان الخادم لا يكتشف بكفاءة من قبل أجهزة UPnP الأخرى على شبكتك.", "LabelEnableDlnaClientDiscoveryInterval": "فترات استكشاف العملاء", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "يحدد الفترة بالثواني بين عمليات بحث SSDP التي يقوم بها أمبي.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "يحدد الفترة بالثواني بين عمليات بحث SSDP.", "LabelEnableDlnaDebugLogging": "تفعيل خاصية كشوفات أخطاء DLNA", - "LabelEnableDlnaDebugLoggingHelp": "هذه ستنشئ سجلات كشفية ضخمة ولا ينبغي تفعيلها إلا عند الحاجة إليها بغرض استكشاف الأخطاء وحصرها.", + "LabelEnableDlnaDebugLoggingHelp": "انشاء سجلات كشفية ضخمة ولا ينبغي تفعيلها إلا عند الحاجة إليها بغرض استكشاف الأخطاء وحصرها.", "LabelEnableDlnaPlayTo": "تفعيل خاصية DLNA Play To", - "LabelEnableDlnaPlayToHelp": "بإمكان أمبي أن يستكشف الأجهزة على شبكتك ويقدم لك إمكامية التحكم بهم عن بعد.", - "LabelEnableDlnaServer": "تفعيل خادم Dlna", - "LabelEnableDlnaServerHelp": "يمكن أجهزة UPnP على شبكتك لتصفح محتوى أمبي.", + "LabelEnableDlnaPlayToHelp": "اكتشف الأجهزة على شبكتك ويقدم لك إمكانية التحكم بهم عن بعد.", + "LabelEnableDlnaServer": "تفعيل خادم DLNA", + "LabelEnableDlnaServerHelp": "يمكن أجهزة UPnP على شبكتك بتصفح و تشغيل المحتوى.", "LabelEnableRealtimeMonitor": "تفعيل خاصية المراقبة في الوقت الحقيقي", - "LabelEnableRealtimeMonitorHelp": "التغييرات ستعالج مباشرة إذا كان نظام الملفات مدعوم.", + "LabelEnableRealtimeMonitorHelp": "التغييرات للملفات ستعالج مباشرة علي انظمة الملفات المدعومة.", "LabelEnableSingleImageInDidlLimit": "حدد عدد الصور المضمّنة لصور واحدة", "LabelEnableSingleImageInDidlLimitHelp": "بعض الأجهزه لن تظهر الصور جيداً إن ضمّنت صور عديدة في مخطط didl.", - "LabelEndDate": "تاريخ الانتهاء", + "LabelEndDate": "تاريخ الانتهاء:", "LabelEpisodeNumber": "رقم الحلقة:", "LabelEvent": "الحدث:", "LabelEveryXMinutes": "كل:", "LabelExtractChaptersDuringLibraryScan": "استخلص صور الأبواب أثناء تمشيط المكتبة", - "LabelExtractChaptersDuringLibraryScanHelp": "عند التفعيل، فإن صور الأبواب ستُستخلص عندما تدرج الفيديوهات الجديدة أثناء تمشيط المكتبة. عند عدم التفعيل فإن عملية الاستخلاص ستكون محصورة أثناء مهمة صور الأبواب المجدولة، ما يسمح لعملية تمشيط المكتبة أن تنتهي بصورة أسرع.", + "LabelExtractChaptersDuringLibraryScanHelp": "فإن صور الأبواب ستُستخلص عندما تدرج الفيديوهات الجديدة أثناء تمشيط المكتبة. عند عدم التفعيل فإن عملية الاستخلاص ستكون محصورة أثناء مهمة صور الأبواب المجدولة، ما يسمح لعملية تمشيط المكتبة أن تنتهي بصورة أسرع.", "LabelFailed": "العملية فشلت", "LabelFileOrUrl": "الملف أو الرابط:", "LabelFinish": "إنهاء", - "LabelForgotPasswordUsernameHelp": "أدخل اسم المستخدم الخاص بك، إن كنت تتذكرها", + "LabelForgotPasswordUsernameHelp": "أدخل اسم المستخدم الخاص بك، إن كنت تتذكره.", "LabelFormat": "الصيغة:", - "LabelFriendlyName": "اسم مخصوص لك", - "LabelServerNameHelp": "هذا الاسم يسيتخدم للتعرف على الخادم. إن ترك خالٍ، فإن اسم الحاسوب سوف يستخدم.", + "LabelFriendlyName": "اسم مخصوص لك:", + "LabelServerNameHelp": "هذا الاسم سيستخدم للتعرف على هذا الخادم، اسم الحاسوب سوف يستخدم بشكل افتراضي.", "LabelGroupMoviesIntoCollections": "تجميع الأفلام إلى مجاميع", - "LabelGroupMoviesIntoCollectionsHelp": "عند استعراض قوائم الأفلام، فإن الأفلام التي تنتمي إلى مجموعة واحدة ستظهر كعنصر جامع.", + "LabelGroupMoviesIntoCollectionsHelp": "عند استعراض قوائم الأفلام، مجموعة واحدة ستظهر كعنصر جامع.", "LabelH264Crf": "قيمة CRF لتشفير H264:", "LabelEncoderPreset": "إعدادات تشفير H264:", - "LabelHardwareAccelerationType": "التسريع بعتاد الحاسب", - "LabelHardwareAccelerationTypeHelp": "متاح في الأنظمة المدعومة فقط.", - "LabelHttpsPort": "رقم منفذ https المحتلي:", - "LabelHttpsPortHelp": "رقم منفذ tcp المتوجب على بروتوكول https أن يرتبط من خلاله في خادم أمبي.", - "LabelIconMaxHeight": "الارتفاع الأقصى للأيقونة.", + "LabelHardwareAccelerationType": "التسريع بعتاد الحاسب:", + "LabelHardwareAccelerationTypeHelp": "التسريع بعتاد الحاسب يتطلب اعدادات اضافية.", + "LabelHttpsPort": "رقم منفذ HTTPS المحلي:", + "LabelHttpsPortHelp": "رقم منفذ TCP للخادم ببروتوكول HTTPS.", + "LabelIconMaxHeight": "الارتفاع الأقصى للأيقونة:", "LabelIconMaxWidth": "العرض الأقصى للأيقونة:", "LabelImageFetchersHelp": "مكّن ورتّب جالبات الصور التي تفضلها حسب أولوية التفضيل.", "LabelImageType": "صيغة الصورة:", "LabelImportOnlyFavoriteChannels": "أحصر العرض على القنوات المعلّمة كمفضلات", "LabelInNetworkSignInWithEasyPassword": "تفعيل تسجيل الدخول من الشبكة الداخلية باستخدام الرمز الشخصي الميسر", - "LabelInNetworkSignInWithEasyPasswordHelp": "عند التفعيل، ستتمكن من استخدام الرمز الشخصي الميسر للدخول إلى تطبيقات أمبي عبر شبكتك الداخلية. أما كلمة السر الخاصة بك فلن تحتاجها إلا عندما تكون على شبكة الإنترنت بعيداً عن مكانك. إن ترك الرمز الشخصي فارغاً فلن تحتاج إلى إدخال شيء للدخول من داخل الشبكة.", + "LabelInNetworkSignInWithEasyPasswordHelp": "استخدام الرمز الشخصي الميسر للدخول إلىالتطبيق عبر شبكتك الداخلية. أما كلمة السر الخاصة بك فلن تحتاجها إلا عندما تكون على شبكة الإنترنت بعيداً عن شبكتك. إن ترك الرمز الشخصي فارغاً فلن تحتاج إلى إدخال شيء للدخول من داخل شبكتك المنزلية.", "LabelKidsCategories": "تصنيفات الأطفال:", "LabelKodiMetadataDateFormat": "تنسيق تاريخ الإصدار:", - "LabelKodiMetadataDateFormatHelp": "جميع التواريخ داخل ملف nfo ستُقرأ وتُكتب وفق هذا التنسيق.", + "LabelKodiMetadataDateFormatHelp": "جميع التواريخ داخل ملف NFO ستكون وفق هذا التنسيق.", "LabelKodiMetadataEnableExtraThumbs": "إنسخ extrafanart إلى extrathumbs", "LabelKodiMetadataEnableExtraThumbsHelp": "عند إنزال الصور بإمكان حفظها إلى extrafanart و extrathumbs لتكون متوافقة مع مظاهر Kodi بأقصى حد.", "LabelKodiMetadataEnablePathSubstitution": "تفعيل إبدال المسارات", @@ -334,20 +334,20 @@ "LabelKodiMetadataSaveImagePathsHelp": "هذا الخيار ينصح به إذا كان لديك صور لا تتوافق مع الدليل الإرشادي لنظام Kodi.", "LabelLanguage": "اللغة:", "LabelLineup": "سلسل:", - "LabelLocalHttpServerPortNumber": "رقم منفذ http المحلي:", - "LabelLocalHttpServerPortNumberHelp": "رقم منفذ http المتوجب على الخادم أن يرتبط من خلاله.", + "LabelLocalHttpServerPortNumber": "رقم منفذ HTTP المحلي:", + "LabelLocalHttpServerPortNumberHelp": "رقم منفذ TCP لخادم HTTP.", "LabelLoginDisclaimer": "إخلاء مسؤولية تسجيل الدخول:", - "LabelLoginDisclaimerHelp": "هذه ستعرض أسفل شاشة تسجيل الدخول.", + "LabelLoginDisclaimerHelp": "رساله ستعرض أسفل صفحة تسجيل الدخول.", "LabelLogs": "السجلات الكشفية:", - "LabelManufacturer": "المصنّع", - "LabelManufacturerUrl": "رابط url للمصنّع", + "LabelManufacturer": "المصنّع:", + "LabelManufacturerUrl": "رابط URL للمصنّع", "LabelMatchType": "وفّق النوع:", "LabelMaxBackdropsPerItem": "أكبر عدد للخلفيات لكل عنصر:", "LabelMaxParentalRating": "الحد الاقصى لتصنيف الرقابة الابوية المسموح بها:", "LabelMaxResumePercentage": "النسبة العليا للمتابعة:", - "LabelMaxResumePercentageHelp": "العنواين ستعتبر مشغلة حتى النهاية إذا أوقفت بعد هذا الوقت", + "LabelMaxResumePercentageHelp": "العنواين ستعتبر مشغلة حتى النهاية إذا أوقفت بعد هذا الوقت.", "LabelMaxScreenshotsPerItem": "أكبر عدد للصور الملتقطة لكل عنصر:", - "LabelMaxStreamingBitrate": "أقصى تدفق للجودة", + "LabelMaxStreamingBitrate": "أقصى تدفق للجودة:", "LabelMaxStreamingBitrateHelp": "تحديد الحد الأقصى لمعدل البت أثناء البث التدفقي.", "LabelMessageText": "نص الرسالة:", "LabelMessageTitle": "عنوان الرسالة:", @@ -358,25 +358,25 @@ "LabelMetadataReaders": "قارءات واصفات البيانات", "LabelMetadataReadersHelp": "رتب مصادر واصفات البيانات التي تفضلها حسب أولوية التفضيل. أول ملف يعثر عليه سيحمّل.", "LabelMetadataSavers": "حافظات واصفات البيانات:", - "LabelMetadataSaversHelp": "إختر صيغ الملفات التي ترغب في حفظ واصفات البيانات إليها.", + "LabelMetadataSaversHelp": "إختر صيغ الملفات التي ترغب في استخدمها عند حفظ واصفات البيانات.", "LabelMethod": "الطريقة:", "LabelMinBackdropDownloadWidth": "أقل جودة للخلفية المنزلة:", - "LabelMinResumeDuration": "الفترة الدنيا للمتابعة (بالثواني):", - "LabelMinResumeDurationHelp": "العناوين الأقصر من هذا الوقت لن يتاح لها خاصية الاستئناف", + "LabelMinResumeDuration": "الفترة الدنيا للمتابعة:", + "LabelMinResumeDurationHelp": "اقل مدة فديو بالثواني سيقوم بحفظ مكان تشغيله و اعاده التشغيل منه.", "LabelMinResumePercentage": "النسبة الدنيا للمتابعة:", - "LabelMinResumePercentageHelp": "العناوين ستعتبر غير مشغلة إذا أوقفت قبل هذا الوقت", + "LabelMinResumePercentageHelp": "العناوين ستعتبر غير مشغلة إذا أوقفت قبل هذا الوقت.", "LabelMinScreenshotDownloadWidth": "أقل جودة للصور الملتقطة المنزلة:", "LabelModelDescription": "وصف الموديل", "LabelModelName": "اسم الموديل", "LabelModelNumber": "رقم الموديل", - "LabelModelUrl": "رابط url للموديل", + "LabelModelUrl": "رابط عنوان رابط URL للموديل", "LabelMonitorUsers": "راقب الأنشطة من:", "LabelMovieCategories": "تصنيفات الأفلام:", "LabelMoviePrefix": "بادئة الأفلام:", - "LabelMoviePrefixHelp": "إن كان هناك بادئة لعناوين الأفلام، فأدخلها هنا لكي يتمكن أمبي من أن يتعامل معها بالطريقة الصحيحة.", - "LabelMovieRecordingPath": "مسار تسجيل الأفلام (خيارية):", + "LabelMoviePrefixHelp": "إن كان هناك بادئة لعناوين الأفلام، فأدخلها هنا لكي يتمكن الخادم من أن يتعامل معها بالطريقة الصحيحة.", + "LabelMovieRecordingPath": "مسار تسجيل الأفلام:", "LabelMusicStreamingTranscodingBitrate": "معدل البت للتشفير البيني الموسيقي", - "LabelMusicStreamingTranscodingBitrateHelp": "تحديد الحد الأقصى لمعدل البت وقت البث التدفقي الموسيقي", + "LabelMusicStreamingTranscodingBitrateHelp": "تحديد الحد الأقصى لمعدل البت وقت البث التدفقي الموسيقي.", "LabelName": "الاسم:", "LabelNewName": "الاسم الجديد:", "LabelNewPassword": "كلمة السر الجديدة:", @@ -385,8 +385,8 @@ "LabelNotificationEnabled": "تفعيل هذه الإشعارات", "LabelNumberOfGuideDays": "عدد أيام بيانات الدليل للإنزال:", "LabelNumberOfGuideDaysHelp": "إنزال أيام أكثر من بيانات الدليل ستوفر أمكانية جدولة أيام أبعد وإظهار قوائم أطول للبرامج، لكنها ستأخذ وقتاً أطول للإنزال. االخيار الآلي سوف يتخيّر بناء على عدد القنوات المتاحة.", - "LabelOptionalNetworkPath": "(خياري) مجلدة مشاركة الشبكة:", - "LabelOptionalNetworkPathHelp": "إن كان هذا المجلد مشاركاً على شبكتك فإن تزويد مسار الشبكة سيسمح لتطبيقات أمبي على الأجهزة الأخرى بالوصول إلى ملفات الوسائط مباشرة.", + "LabelOptionalNetworkPath": "مجلد الشبكة المُشارك:", + "LabelOptionalNetworkPathHelp": "إن كان هذا المجلد مشاركاً على شبكتك فإن تزويد مسار الشبكة سيسمح للتطبيقات على الأجهزة الأخرى بالوصول إلى ملفات الوسائط مباشرة. كمثال، {0} او {1}.", "LabelPassword": "كلمة السر:", "LabelPasswordConfirm": "تأكيد كلمة السر:", "LabelPasswordRecoveryPinCode": "الرمز الشخصي:", @@ -405,15 +405,15 @@ "LabelProtocol": "البروتوكول:", "LabelProtocolInfo": "معلومات البروتوكول:", "LabelProtocolInfoHelp": "القيمة التي ستستخدم عند الرد على طلب GetProtocolInfo من الجهاز.", - "LabelPublicHttpPort": "رقم منفذ http العالمي:", - "LabelPublicHttpPortHelp": "رقم المنفذ العالمي الذي يجب أن يوافق منفذ http المحلي.", - "LabelPublicHttpsPort": "رقم منفذ https العالمي:", - "LabelPublicHttpsPortHelp": "رقم المنفذ العالمي الذي يجب أن يوافق منفذ https المحلي.", + "LabelPublicHttpPort": "رقم منفذ HTTP العام:", + "LabelPublicHttpPortHelp": "رقم المنفذ العام الذي يجب أن يوافق منفذ HTTP المحلي.", + "LabelPublicHttpsPort": "رقم منفذ HTTPS العام:", + "LabelPublicHttpsPortHelp": "رقم المنفذ العام الذي يجب أن يوافق منفذ HTTPS المحلي.", "LabelRecordingPath": "المسار الافتراضي للمقاطع المسجلة:", "LabelRecordingPathHelp": "حدد موقع افتراضي لحفظ المقاطع المسجلة، لو تركت هذه الخانة فارغة، فسيستعمل مجلد بيانات البرنامج.", "LabelReleaseDate": "تاريخ الإصدار", "LabelRemoteClientBitrateLimit": "حدد معدل البت للتشغيل التدفقي عبر الإنترنت (Mbps)", - "LabelRuntimeMinutes": "مدة التشغيل (بالدقائق):", + "LabelRuntimeMinutes": "مدة التشغيل:", "LabelSaveLocalMetadata": "حفظ الأعمال الفنية وواصفات البيانات فى مجلدات الوسائط", "LabelSaveLocalMetadataHelp": "حقظ الأعمال الفنية وواصفات البيانات مباشرة فى مجلدات الوسائط سيسهل عليك الوصول وعمل التعديلاات عليها.", "LabelScheduledTaskLastRan": "آخر تشغيل {0}، وقد استغرق {1}.", @@ -422,7 +422,7 @@ "LabelSelectVersionToInstall": "إختر الإصدار للتثبيت", "LabelSendNotificationToUsers": "أرسل الإشعارات إلى:", "LabelSerialNumber": "الرقم التسلسلي", - "LabelSeriesRecordingPath": "مسار تسجيل المسلسلات (خيارية):", + "LabelSeriesRecordingPath": "مسار تسجيل المسلسلات:", "LabelServerHost": "المضيف:", "LabelServerHostHelp": "192.168.1.100:8096 أو https://myserver.com", "LabelSkipIfAudioTrackPresent": "تخطّىإن كان المقطع الصوتي الافتراضي يتوافق مع اللغة المنزلة", @@ -729,7 +729,7 @@ "XmlTvSportsCategoriesHelp": "البرامج من هذه التصنيفات ستعرض كبرامج رياضية. إفصل الإدخالات المتعددة برمز \"|\".", "Yesterday": "البارحة", "ConfirmDeleteImage": "حذف الصورة ؟", - "ConfigureDateAdded": "قم بتكوين كيفية تحديد \"تاريخ الاضافة\" في لوحة تحكم سيرفر Jellyfin ضمن اعدادات المكتبة", + "ConfigureDateAdded": "قم بتكوين كيفية تحديد \"تاريخ الاضافة\" في لوحة التحكم ضمن اعدادات المكتبة", "Composer": "الحان", "CommunityRating": "تقييم المجتمع", "ColorTransfer": "نقل اللون", @@ -855,7 +855,7 @@ "DateAdded": "تاريخ الاضافة", "CriticRating": "تقييم النقاد", "ResumeAt": "اكمل من {0}", - "AskAdminToCreateLibrary": "أطلب من الأدمن إنشاء مكتبة.", + "AskAdminToCreateLibrary": "أطلب من المدير إنشاء مكتبة.", "Artist": "الفنان", "AllowFfmpegThrottling": "إبطاء الترميزات", "AlbumArtist": "المؤدي", @@ -872,16 +872,16 @@ "Desktop": "سطح المكتب", "Descending": "تنازلي", "Depressed": "منخفض", - "DeinterlaceMethodHelp": "حدد طريقة فك التشابك لاستخدامها عند تحويل محتوى متشابك.", + "DeinterlaceMethodHelp": "حدد طريقة فك التشابك لاستخدامها عند تحويل محتوى متشابك. اذا كان فك التشابك عن طريق العتاد الصلب فعال سيتم استخدامه بدل هذا الاعداد.", "DefaultSubtitlesHelp": "يتم تحميل الترجمات استنادًا إلى العلامات الافتراضية والقسرية في البيانات الوصفية المضمنة. سيتم اعتبار تفضيلات اللغة عند توفر خيارات متعددة.", "DefaultMetadataLangaugeDescription": "هذه هي إعداداتك الافتراضية ويمكن تخصيصها على أساس كل مكتبة.", "Default": "افتراضي", "CopyStreamURL": "نسخ عنوان الرابط", "Continuing": "مستمر", - "CopyStreamURLSuccess": "URL copied successfully.", + "CopyStreamURLSuccess": "تم نسخ عنوان الرابط بنجاح.", "Connect": "اتصال", "ConfirmEndPlayerSession": "هل تريد اطفاء النظام؟", - "ColorPrimaries": "الألوان", + "ColorPrimaries": "الألوان الرئيسية", "ClientSettings": "إعدادات التطبيق", "ButtonTogglePlaylist": "قائمة التشغيل", "BoxSet": "طقم", @@ -931,7 +931,7 @@ "Features": "الميزات", "Favorite": "المفضلة", "Extras": "مواسم إضافية", - "ErrorDeletingItem": "حدث خطأ في حذف العنصر من سيرفر Jellyfin. يرجى التحقق من أن سيرفر Jellyfin لديه حق الوصول للكتابة إلى مجلد الوسائط وحاول مرة أخرى.", + "ErrorDeletingItem": "حدث خطأ في حذف العنصر من Jellyfin. يرجى التحقق من أن Jellyfin لديه حق الوصول للكتابة إلى مجلد الوسائط وحاول مرة أخرى.", "Episode": "حلقة", "EnableThemeVideosHelp": "قم بتشغيل الفيديوهات الرئيسية في الخلفية أثناء تصفح المكتبة.", "EnableThemeSongsHelp": "قم بتشغيل اللحن الرئيسي في الخلفية أثناء تصفح المكتبة.", @@ -1001,5 +1001,26 @@ "EnableDetailsBannerHelp": "اظهر صوره اللافته اعلى عنصر تفاصيل الصفحة.", "EnableDetailsBanner": "لافتة التفاصيل", "EnableDecodingColorDepth10Vp9": "تمكين ترميز ال10 بت عبر العتاد الصلب من اجل VP9", - "EnableDecodingColorDepth10Hevc": "تمكين ترميز ال10 بت عبر العتاد الصلب من اجل HEVC" + "EnableDecodingColorDepth10Hevc": "تمكين ترميز ال10 بت عبر العتاد الصلب من اجل HEVC", + "LabelFont": "خط:", + "LabelFolder": "مجلد:", + "LabelIconMaxResHelp": "اعلى دقه للايقونات المعروضة من خلال خاصيه upnp:icon.", + "LabelHomeScreenSectionValue": "الشاشة الرئيسية جزء {0}:", + "LabelHomeNetworkQuality": "جودة الشبكة المنزلية:", + "LabelBaseUrlHelp": "اضافه مجلد فرعي مخصص لعنوان الخادم. كمثال http://example.com/<baseurl>", + "LabelBaseUrl": "عنوان الرابط الاساسي:", + "LabelEnableHttpsHelp": "استمع لمنفذ HTTPS المعد. يجب توفير شهادة معتمدة لتعمل الخصية.", + "LabelEnableHttps": "تفعيل HTTPS", + "LabelEnableHardwareDecodingFor": "تفعيل فك الترميز عن طريق العتاد الصلب ل:", + "LabelCurrentStatus": "الحاله الحالية:", + "LabelAlbumArtMaxResHelp": "اقصي مستوي دقة لغطاء الالبوم المكشوف من قبل خاصية upnp:albumArtURI .", + "KnownProxiesHelp": "قائمه من عناوين الشبكه المفصولين بفصله للوكلاء المعرفين المستخدمين للاتصال بحاله Jellyfin. هذا الامر مطلوب لاستخدام رؤس صفحات X-Forwarded-For صحيح. يتطلب اعادة التشغيل بعد الحفظ.", + "Image": "صورة", + "Other": "اخري", + "EnableQuickConnect": "تفعيل الاتصال السريع على هذا الخادم", + "EnableAutoCast": "تعيين كافتراضي", + "Data": "بيانات", + "ButtonUseQuickConnect": "استخدم الاتصال السريع", + "ButtonActivate": "تفعيل", + "Authorize": "تصريح" } From d32ebe2043bbff0a0d835e5ae60208278ff3f6aa Mon Sep 17 00:00:00 2001 From: reikuzan Date: Tue, 13 Oct 2020 04:24:29 +0000 Subject: [PATCH 501/582] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 158 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 154 insertions(+), 4 deletions(-) diff --git a/src/strings/id.json b/src/strings/id.json index d6a2ef23bd..b6825f973c 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -13,7 +13,7 @@ "LabelYoureDone": "Kamu sudah selesai!", "MessageNothingHere": "Tidak ada disini.", "MessagePleaseEnsureInternetMetadata": "Pastikan unduh metadata dari internet diaktifkan.", - "MoreUsersCanBeAddedLater": "Pengguna lainnya dapat ditambahkan di Dashboard.", + "MoreUsersCanBeAddedLater": "Pengguna lain dapat ditambahkan Nanti di Dashboard.", "OptionEnableAccessFromAllDevices": "Aktifkan akses dari semua perangkat", "OptionEnableAccessToAllChannels": "Aktifkan akses ke semua channel", "OptionEnableAccessToAllLibraries": "Aktifkan akses ke semua pustaka", @@ -804,8 +804,8 @@ "LabelSkipIfGraphicalSubsPresent": "Lewati jika video sudah berisi subtitel tersemat", "LabelSkipIfAudioTrackPresentHelp": "Hapus centang ini untuk memastikan semua video memiliki subtitle, apa pun bahasa audionya.", "LabelSkipIfAudioTrackPresent": "Lewati jika trek audio default cocok dengan bahasa unduhan", - "LabelSkipForwardLength": "", - "LabelSkipBackLength": "", + "LabelSkipForwardLength": "Panjang Skip Maju:", + "LabelSkipBackLength": "Panjang Skip Mundur:", "LabelSize": "Ukuran :", "LabelSimultaneousConnectionLimit": "Batas aliran stream :", "LabelSerialNumber": "Nomor seri", @@ -867,5 +867,155 @@ "LabelStartWhenPossible": "Mulailah jika memungkinkan :", "LabelSportsCategories": "Kategori olahraga :", "LabelSpecialSeasonsDisplayName": "Nama tampilan musim spesial :", - "LabelSource": "Sumber :" + "LabelSource": "Sumber :", + "LabelUsername": "Nama Akun:", + "LabelUserMaxActiveSessions": "Jumlah Maksimal Pengguna yang Bersamaan:", + "OptionAllowMediaPlayback": "Ijinkan Mainkan Media", + "OptionAllowLinkSharing": "Ijinkan Sharing media sok sial", + "OptionAllowContentDownloading": "Ijinkan Download Media dan syncing", + "OptionAllowBrowsingLiveTv": "Ijinkan akses Live TV", + "OptionAllowAudioPlaybackTranscoding": "Ijikan main Audio yang perlu transkoding", + "OptionAllUsers": "Semua User", + "OptionAdminUsers": "Administratur", + "Option3D": "3D", + "OnlyImageFormats": "Format Gambar saja(VOBSUB, PGS, SUB)", + "OnlyForcedSubtitles": "Hanya Paksakan", + "OneChannel": "Satu Channel", + "Off": "Matikan", + "NumLocationsValue": "{0} folder", + "Normal": "Biasa", + "None": "Tidak ada", + "NoSubtitleSearchResultsFound": "Tidak ada hasil.", + "MessageNoPluginConfiguration": "Plugin tidak memiliki pemgaturan.", + "MessageNoNextUpItems": "Tidak ditemukan. Nonton Film Sana!", + "No": "Tydak", + "NextTrack": "Skip Lanjoot", + "Next": "Lanjoot", + "News": "Berita", + "NewEpisodesOnly": "Episode baru saja", + "NewEpisodes": "Episode baru", + "NewCollectionNameExample": "Contoh: Koleksi Star Wars", + "NewCollection": "Koleksi Baru", + "Never": "Tidak Pernah", + "Name": "Nama", + "MySubtitles": "Subtitle Kita", + "Mute": "Bisukan", + "MusicVideos": "Musik Video", + "MusicVideo": "Video Musik", + "MusicArtist": "Artis Musik", + "MusicAlbum": "Album Musik", + "Movie": "Film", + "MoveRight": "Kekanan", + "MoveLeft": "Kekiri", + "MoreMediaInfo": "Info Media", + "MoreFromValue": "Lebih Dari {0}", + "Monday": "Senin", + "Mobile": "Mobilee", + "MinutesBefore": "Menit Sebelum", + "MinutesAfter": "Menit Setelah", + "MetadataManager": "Manajer Metadata", + "Metadata": "Metadata", + "MessageSyncPlayErrorMedia": "Gagal Mengaktifkan SyncPlay! Media Error cok.", + "MessageSyncPlayErrorMissingSession": "SyncPlay gagal! Sesi Hilang njir...", + "MessageSyncPlayErrorNoActivePlayer": "SyncPlay dimatikan. Tidak ada pemutar aktif.", + "MessageSyncPlayErrorAccessingGroups": "Muncul Error ketika mengakses list grup.", + "MessageSyncPlayLibraryAccessDenied": "Akses konten ini Dibatasi cok.", + "MessageSyncPlayJoinGroupDenied": "Ijin diperlukan untuk menggunakan SyncPlay.", + "MessageSyncPlayCreateGroupDenied": "ijin diperlukan untuk membuat grup.", + "MessageSyncPlayGroupDoesNotExist": "Gagal bergabung dengan grup karena tidak ada njing!.", + "MessageSyncPlayPlaybackPermissionRequired": "Ijin Playback diperlukan woi.", + "MessageSyncPlayNoGroupsAvailable": "Tidak ada grup, Mainkan susuwatu dahulu.", + "MessageSyncPlayGroupWait": "{0} Sedang buffering…", + "MessageSyncPlayUserLeft": "{0} Meninggalkan grup.", + "MessageSyncPlayUserJoined": "{0} Bergabung Dalam grup.", + "MessageSyncPlayDisabled": "SyncPlay Dimatikan.", + "MessageSyncPlayEnabled": "SyncPlay Diaktifkan.", + "MessageYouHaveVersionInstalled": "Anda punya Versi {0} Yang terinstall.", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Lokasi media ini akan dihapus:", + "MessageReenableUser": "Lihat dibawah untuk mengaktifkan kembali", + "MessagePleaseWait": "Mohon Tunggu Beberapa Menit.", + "MessageNoPluginsInstalled": "Anda Tidak menginstal plugin.", + "MessageNoGenresAvailable": "Aktifkan Metadata Providee untuk menarik Genre dari internyet.", + "MessageNoCollectionsAvailable": "Koleksi mengizinkan anda menikmati grup pribadi film, seri, dan album. Klik Tombol + untuk membuat koleksi.", + "MessageAddRepository": "Jika Ingin Menambah Repositori, klik tombol di dekat header dan isi semua data yang diminta.", + "LabelRepositoryName": "Nama Repositori", + "LabelRepositoryUrlHelp": "Lokasi manifest repositori yang ingin anda masukan.", + "LabelRepositoryUrl": "URL Repositori", + "HeaderNewRepository": "Repositori Baru", + "MessageNoRepositories": "Repositori Tidak ada.", + "MessageNoAvailablePlugins": "Plugin Tidak tersedia.", + "MessageLeaveEmptyToInherit": "Kosongkan untuk inherit pengaturan dari item diatasnya atau nilai setting global default.", + "MessageItemsAdded": "Item Ditambahkan.", + "MessageItemSaved": "Item Tersimpan.", + "MessageInvalidUser": "Username atau passwotd tidak valid. Coba lagi mblo.", + "MessageInvalidForgotPasswordPin": "Pin Kode tidak valid atau Ekspired. Coba Lagi mblo.", + "MessageImageTypeNotSelected": "Pilih Tipe Gambar dalam menu drop-down.", + "MessageImageFileTypeAllowed": "Hanya file JPEG dan PNG yang didukung.", + "MessageForgotPasswordInNetworkRequired": "Coba lagi dalam jaringan lokal untuk memulai proses reset password.", + "MessageFileReadError": "Error ketika membaca media. Coba lagi mblo.", + "MessageEnablingOptionLongerScans": "Mengaktifkan Pilihan ini berakibat scanning media lebih lama.", + "MessageDownloadQueued": "Download Dijadwalkan.", + "MessageDirectoryPickerLinuxInstruction": "Untuk Linux arch, CentOS, Debian, Fedora, openSUSE, atau Ubunyu, Anda perlu Mengizinkan user jellyfin membaca lokasi Folder penyimpanan media.", + "MessageDirectoryPickerBSDInstruction": "Untuk BSD, Mungkin perlu mengatur Storage dalam FreeNAS Jail Anda agar JellyFin bisa mengakses media tersebut.", + "MessageDeleteTaskTrigger": "Yakin Menghapus Task Trigger Ini?", + "MessageCreateAccountAt": "Buat Akun Di {0}", + "MessageContactAdminToResetPassword": "Hubungi Admin Untuk Mereset password.", + "MessageConfirmRestart": "Yakin Ingin Merestart Jellyfin?", + "MessageConfirmRemoveMediaLocation": "Yakin Menghapus lokasi ini?", + "MessageConfirmRecordingCancellation": "Batalkan Rekaman?", + "MessageConfirmProfileDeletion": "Yakin Menghapus Profil ini?", + "MessageConfirmDeleteTunerDevice": "Yakin Ingin Menghapus perangkat ini?", + "MessageConfirmDeleteGuideProvider": "Yakin Ingin menghapus guide provider ini?", + "MessageConfirmAppExit": "Anda Mau Keluar?", + "MessageAreYouSureYouWishToRemoveMediaFolder": "Yakin Ingin Menghapus folder media ini?", + "MessageAreYouSureDeleteSubtitles": "Yakin Ingin Menghapus Subtitle Ini?", + "MessageAlreadyInstalled": "Versi Ini Telah Terinstall.", + "MediaIsBeingConverted": "File Media dikonversi ke format yang didukung perangkat.", + "MediaInfoTimestamp": "StempelWaktu", + "MediaInfoSize": "Ukuran", + "MediaInfoSampleRate": "Nilai Sampel", + "MediaInfoResolution": "Resolusi", + "MediaInfoProfile": "Profil", + "MediaInfoPixelFormat": "Format Piksel", + "MediaInfoLanguage": "Bahasaa", + "MediaInfoFramerate": "Framerating", + "MediaInfoForced": "Paksa", + "MediaInfoExternal": "Eksternal", + "MediaInfoDefault": "Pengaturan Awal", + "MediaInfoContainer": "Kontainer", + "MediaInfoCodecTag": "Tag Kodek", + "MediaInfoCodec": "Kodek", + "MediaInfoChannels": "Channel", + "MediaInfoBitrate": "Bitrate", + "MediaInfoBitDepth": "Kedalaman Bit", + "MediaInfoAspectRatio": "Rasio Aspek", + "MaxParentalRatingHelp": "Konten Dengan rating lebih tinggi akan disembunyikan dari pengguna ini.", + "MarkUnplayed": "Tandai Belum dimainkan", + "MarkPlayed": "Tandai Telah dimainkan", + "MapChannels": "Simpan Channel", + "ManageRecording": "Atur Rekaman", + "ManageLibrary": "Atur Librari", + "Logo": "Logo", + "LiveTV": "SiaranTV Langsung", + "LiveBroadcasts": "Siaran Langsung", + "Live": "Langsung", + "List": "Listing", + "LibraryAccessHelp": "Pilih Librari untuk dibagikan dengan user ini. Admin Bisa mengedit semua folder menggunakan manager metadata.", + "LeaveBlankToNotSetAPassword": "Kosongkan Jika ingin setting tanpa Password cok.", + "LearnHowYouCanContribute": "Pelajari Cara Berkontribusi.", + "LatestFromLibrary": "Terbaru {0}", + "Large": "Besar", + "LabelZipCode": "Kode Pos:", + "LabelYear": "Tahun:", + "LabelWeb": "Website:", + "LabelVideoResolution": "Resolusi Video:", + "LabelVideoCodec": "Codec Video:", + "LabelVideoBitrate": "Bitrate Video:", + "DashboardArchitecture": "Arsitektur: {0}", + "DashboardOperatingSystem": "Sistem Operasi: {0}", + "DashboardVersionNumber": "Versi: {0}", + "LabelVersionInstalled": "{0} Terinstall", + "LabelVersion": "Versi:", + "LabelValue": "Nilai:", + "LabelVaapiDeviceHelp": "Merupakan titik render untuk percepatan perangkat." } From 0c58a2bd4b384daaceacc6dc09976786095f91ed Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Tue, 13 Oct 2020 22:07:23 +0000 Subject: [PATCH 502/582] Translated using Weblate (Spanish (Argentina)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_AR/ --- src/strings/es-ar.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index e29c4b8f7c..b9ee50c1bd 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1417,5 +1417,8 @@ "EnableAutoCast": "Establecer por defecto", "ButtonUseQuickConnect": "Utilizar conexión rápida", "ButtonActivate": "Activar", - "Authorize": "Autorizar" + "Authorize": "Autorizar", + "OptionMaxActiveSessionsHelp": "Un valor de 0 deshabilita la función.", + "OptionMaxActiveSessions": "Establece el número máximo de sesiones de usuario simultáneas.", + "LabelUserMaxActiveSessions": "Número máximo de sesiones de usuario simultáneas:" } From 4bd4134944f366a35cd401b0b9f11c4b9fa8c016 Mon Sep 17 00:00:00 2001 From: Gubb Jonas Date: Wed, 14 Oct 2020 17:16:01 +0000 Subject: [PATCH 503/582] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 50 ++++++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 20dc471b01..4f259ff8f3 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -323,7 +323,7 @@ "HeaderSecondsValue": "{0} sekunder", "HeaderSelectCertificatePath": "Välj sökväg för certifikat", "HeaderSelectMetadataPath": "Välj plats för metadatalagring", - "HeaderSelectMetadataPathHelp": "Bläddra fram till eller ange plats för lagring av metadata. Katalogen måste vara tillgänglig för skrivning.", + "HeaderSelectMetadataPathHelp": "Bläddra fram, eller ange, sökväg för lagring av metadata. Katalogen måste vara skrivningsbar.", "HeaderSelectPath": "Välj sökväg", "HeaderSelectServerCachePath": "Välj plats för serverns cache", "HeaderSelectServerCachePathHelp": "Bläddra fram till eller ange plats för serverns cache. Katalogen måste vara tillgänglig för skrivning.", @@ -421,7 +421,7 @@ "LabelCustomCertificatePath": "Sökväg för anpassat SSL-certifikat:", "LabelCustomCertificatePathHelp": "Lägg upp ditt eget SSL-certifkat i .pfx-format.", "LabelCustomCss": "Egen CSS-stil:", - "LabelCustomCssHelp": "Använd din egen CSS-stil för webbgränssnittet.", + "LabelCustomCssHelp": "Applicera din egen CSS-stil för webbgränssnittet.", "LabelCustomDeviceDisplayNameHelp": "Ange ett anpassat enhetsnamn. Lämna blankt för att använda det namn enheten själv rapporterar.", "LabelCustomRating": "Anpassad åldersgräns:", "LabelDateAdded": "Inlagd den:", @@ -460,12 +460,12 @@ "LabelEnableDlnaDebugLogging": "Aktivera DLNA felsökningsloggning", "LabelEnableDlnaDebugLoggingHelp": "Detta resulterar i mycket stora loggfiler och rekommenderas bara vid felsökning.", "LabelEnableDlnaPlayTo": "Använd DLNA spela-upp-på", - "LabelEnableDlnaPlayToHelp": "Hitta enheter på ditt nätverk och ge dig möjlighet att fjärrstyra dem.", + "LabelEnableDlnaPlayToHelp": "Upptäck enheter på ditt nätverk och erbjud möjligheten att fjärrstyra dem.", "LabelEnableDlnaServer": "Aktivera DLNA-server", "LabelEnableDlnaServerHelp": "Tillåt att UPnP-enheter på ditt nätverk kan se och spela upp innehåll.", "LabelEnableHardwareDecodingFor": "Aktivera hårdvaruomkodning för:", "LabelEnableRealtimeMonitor": "Aktivera bevakning av mappar i realtid", - "LabelEnableRealtimeMonitorHelp": "Förändringar upptäcks omedelbart (i filsystem som stödjer detta).", + "LabelEnableRealtimeMonitorHelp": "Filförändringar bearbetas omedelbart på filsystem som stödjer detta.", "LabelEnableSingleImageInDidlLimit": "Begränsa till en inbäddad bild", "LabelEnableSingleImageInDidlLimitHelp": "Visa enheter kommer inte renderas ordentligt om flera bilder bäddas in i Didl.", "LabelEndDate": "Slutdatum:", @@ -482,7 +482,7 @@ "LabelFriendlyName": "Visningsnamn:", "LabelServerNameHelp": "Det här namnet används för att identifiera servern. Ifall det lämnas tomt används serverns värdnamn.", "LabelGroupMoviesIntoCollections": "Gruppera filmer i samlingsboxar", - "LabelGroupMoviesIntoCollectionsHelp": "I filmlistor visas filmer som ingår i en samlingsbox som ett enda objekt.", + "LabelGroupMoviesIntoCollectionsHelp": "I filmlistor visas filmer som ingår i en samling som ett enda objekt.", "LabelH264Crf": "H264-omkodning CRF:", "LabelEncoderPreset": "H264-omkodningsförval:", "LabelHardwareAccelerationType": "Hårdvaruacceleration:", @@ -559,7 +559,7 @@ "LabelMoviePrefixHelp": "Om ett prefix har lagts till filmertitlarna, skriv in det här så att servern kan hantera dessa korrekt.", "LabelMovieRecordingPath": "Inspelningssökväg för film:", "LabelMusicStreamingTranscodingBitrate": "Bithastighet vid omkodning av musik:", - "LabelMusicStreamingTranscodingBitrateHelp": "Ange högsta bithastighet vid strömning av musik.", + "LabelMusicStreamingTranscodingBitrateHelp": "Ange maximal bitrate vid strömning av musik.", "LabelName": "Namn:", "LabelNewName": "Nytt namn:", "LabelNewPassword": "Nytt lösenord:", @@ -679,7 +679,7 @@ "LabelYoureDone": "Klart!", "LabelZipCode": "Postnummer:", "LabelffmpegPath": "FFmpeg-sökväg:", - "LabelffmpegPathHelp": "Sökvägen till FFmpeg-filen, eller mappen som innehåller FFmpeg.", + "LabelffmpegPathHelp": "Sökväg till ffmpeg-applikationen, eller mappen som innehåller ffmpeg.", "Large": "Stor", "LatestFromLibrary": "Senaste {0}", "LearnHowYouCanContribute": "Se hur du kan hjälpa till.", @@ -812,7 +812,7 @@ "OptionAllowVideoPlaybackRemuxing": "Tillåt videouppspelning som kräver konvertering utan omkodning", "OptionAllowVideoPlaybackTranscoding": "Tillåt videouppspelning som kräver omkodning", "OptionAutomaticallyGroupSeries": "Slå ihop serier automatiskt som ligger utspritt under flera kataloger", - "OptionAutomaticallyGroupSeriesHelp": "Serier som är spridda över flera mappar i det här biblioteket kommer automatiskt att slås ihop till en enda serie.", + "OptionAutomaticallyGroupSeriesHelp": "Serier som är spridda över flera mappar i detta biblioteket kommer automatiskt att slås ihop till en enda serie.", "OptionBluray": "Blu-ray", "OptionCommunityRating": "Allmänhetens betyg", "OptionCriticRating": "Kritikerbetyg", @@ -823,12 +823,12 @@ "OptionDateAddedImportTime": "Använd datum för inläsning i biblioteket", "OptionDatePlayed": "Senast visad", "OptionDisableUser": "Spärra den här användaren", - "OptionDisableUserHelp": "Spärrade användare tillåts ej kontakta servern. Eventuella pågående anslutningar avbryts omedelbart.", + "OptionDisableUserHelp": "Servern kommer ej tillåta några anslutningar från denna användare. Aktiva anslutningar avbryts omedelbart.", "OptionDislikes": "Ogillar", "OptionDisplayFolderView": "Visa en mappvy för att visa enkla mediamappar", "OptionDisplayFolderViewHelp": "Visa mappar jämsides med dina andra media bibliotek. Detta kan vara bra om du vill ha en enkel mapp visning.", "OptionDownloadImagesInAdvance": "Hämta bilder i förväg", - "OptionDownloadImagesInAdvanceHelp": "Som standard hämtas de flesta bilder endast när en Jellyfin-app begär det. Aktivera den här inställningen för att hämta alla bilder i förväg när nya filer importeras till biblioteket. Detta kan innebära längre bibliotekssökningar.", + "OptionDownloadImagesInAdvanceHelp": "Som standard hämtas de flesta bilder endast när en klient begär det. Aktivera den här inställningen för att hämta alla bilder i förväg, när ny media importeras. Detta kan innebära avsevärt längre bibliotekssökningar.", "OptionDvd": "DVD", "OptionEmbedSubtitles": "Infoga i container", "OptionEnableAccessFromAllDevices": "Aktivera åtkomst från alla enheter", @@ -850,7 +850,7 @@ "OptionHideUserFromLoginHelp": "Användbart för privata konton eller gömda administratörskonton. Användaren beöver logga in manuellt genom att skriva sitt användarnamn och lösenord.", "OptionHlsSegmentedSubtitles": "HLS-segmenterade undertexter", "OptionIgnoreTranscodeByteRangeRequests": "Ignorera begäran om \"byte range\" vid omkodning", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "Om aktiverad kommer begäran att uppfyllas, men \"byte range\"-rubriken ignoreras.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Dessa anrop kommer att hanteras, men \"byte range\"-headern ignoreras.", "OptionImdbRating": "Betyg på IMDB", "OptionLikes": "Gillar", "OptionMissingEpisode": "Saknade avsnitt", @@ -858,9 +858,9 @@ "OptionOnInterval": "Med visst intervall", "OptionParentalRating": "Föräldraklassning", "OptionPlainStorageFolders": "Visa alla mappar som vanliga lagringsmappar", - "OptionPlainStorageFoldersHelp": "Om aktiverad representeras alla mappar i DIDL som \"object.container.storageFolder\" i stället för en mera specifik typ, t ex \"object.container.person.musicArtist\".", + "OptionPlainStorageFoldersHelp": "Alla mappar representeras i DIDL som \"object.container.storageFolder\" i stället för en mer specifik typ, t.ex. \"object.container.person.musicArtist\".", "OptionPlainVideoItems": "Visa alla videor som objekt utan specifikt format", - "OptionPlainVideoItemsHelp": "Om aktiverad representeras alla videor i DIDL som \"object.item.videoItem\" i stället för en mera specifik typ, t ex \"object.item.videoItem.movie\".", + "OptionPlainVideoItemsHelp": "Alla videor representeras i DIDL som \"object.item.videoItem\" i stället för en mer specifik typ, t ex \"object.item.videoItem.movie\".", "OptionPlayCount": "Antal visningar", "OptionPremiereDate": "Premiärdatum", "OptionProtocolHls": "Live-strömning via Http", @@ -908,9 +908,9 @@ "PleaseAddAtLeastOneFolder": "Lägg till minst en katalog till det här biblioteket genom att klicka på Lägg till-knappen.", "PleaseConfirmPluginInstallation": "Klicka på OK för att bekräfta att du har läst ovanstående och önskar fortsätta med installationen av tillägget.", "PleaseEnterNameOrId": "Ange ett namn eller externt id.", - "PleaseRestartServerName": "Vänligen starta om Jellyfin Server - {0}.", + "PleaseRestartServerName": "Vänligen starta om Jellyfin på {0}.", "PleaseSelectTwoItems": "Var god välj minst två objekt.", - "MessagePluginInstalled": "Tillägget har installerats. Jellyfin Server behöver startas om för att verkställa ändringarna.", + "MessagePluginInstalled": "Tillägget har installerats. Servern 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", @@ -1186,8 +1186,8 @@ "Rewind": "Spola tillbaka", "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", - "OptionSaveMetadataAsHiddenHelp": "Ändring av detta kommer att tilldelas till ny metadata som sparas. Existerande metadata filer kommer att uppdateras nästa gång dom sparas av Jellyfin Server.", + "PasswordResetProviderHelp": "Välj en tjänst för återställning av lösenord, som används när denna användare begär en lösenordsåterställning.", + "OptionSaveMetadataAsHiddenHelp": "Denna ändring påverkar ny metadata som sparas framledes. Existerande metadata-filer kommer att uppdateras nästa gång de sparas av servern.", "OptionResElement": "återskapa element", "OptionRegex": "Regex", "OptionRandom": "Slumpmässig", @@ -1208,7 +1208,7 @@ "MusicArtist": "Musik Artist", "MusicAlbum": "Musik Album", "MoreMediaInfo": "Medieinformation", - "MetadataSettingChangeHelp": "Ändring av metadata inställningar kommer att ske på nytt innehåll som är tillagt framledes. För att uppdatera existerat innehåll, öppna detalj skärmen och tryck på uppdatera knappen, eller utför bulk uppdateringar med metadata hanteraren.", + "MetadataSettingChangeHelp": "Ändring av metadata-inställningar endast innehåll som är tillagt framledes. För att uppdatera existerande innehåll, öppna detaljsidan och klicka på uppdatera-knappen, eller utför bulk-uppdateringar med metadata-hanteraren.", "Metadata": "Metadata", "MessageNoServersAvailable": "Inga servrar har hittats med automatiska server sökningen.", "MessageNoCollectionsAvailable": "Samlingar tillåter dig att njuta av personlig gruppering av Filmer, Serier och Albums. Tryck på + knapen för att skapa samlingar.", @@ -1355,5 +1355,17 @@ "ButtonUseQuickConnect": "Använd Quick Connect", "ButtonActivate": "Aktivera", "Authorize": "Auktorisera", - "EnableAutoCast": "Markera som standard" + "EnableAutoCast": "Markera som standard", + "MessagePluginInstallError": "Ett fel inträffade när tillägget installerades.", + "PosterCard": "Affischkort", + "Poster": "Affisch", + "Photo": "Foto", + "OptionMaxActiveSessionsHelp": "Värdet 0 inaktiverar funktionen.", + "OptionMaxActiveSessions": "Bestämmer det maximala antalet samtidiga användarsessioner.", + "LabelUserMaxActiveSessions": "Maximalt antal samtidiga användarsessioner:", + "LabelQuickConnectCode": "Snabbanslutningskod:", + "LabelKnownProxies": "Kända proxies:", + "LabelCurrentStatus": "Nuvarande status:", + "KnownProxiesHelp": "Kommatecken-separerad lista av IP-adresser till kända proxies som används för att ansluta till din Jellyfin-instans. Detta krävs för att använda \"X-Forwarded-For\"-headers korrekt. Kräver omstart.", + "EnableQuickConnect": "Aktivera snabbanslutning på denna server" } From e210c4b4af6a50731de84fc52861ec7ecbc60c00 Mon Sep 17 00:00:00 2001 From: Gubb Jonas Date: Wed, 14 Oct 2020 19:26:51 +0000 Subject: [PATCH 504/582] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 4f259ff8f3..1b46bddab5 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -1367,5 +1367,14 @@ "LabelKnownProxies": "Kända proxies:", "LabelCurrentStatus": "Nuvarande status:", "KnownProxiesHelp": "Kommatecken-separerad lista av IP-adresser till kända proxies som används för att ansluta till din Jellyfin-instans. Detta krävs för att använda \"X-Forwarded-For\"-headers korrekt. Kräver omstart.", - "EnableQuickConnect": "Aktivera snabbanslutning på denna server" + "EnableQuickConnect": "Aktivera snabbanslutning på denna server", + "QuickConnectDeactivated": "Snabbanslutning inaktiverades innan inloggningsförsöket kunde godkännas", + "QuickConnectAuthorizeFail": "Okänd snabbanslutningskod", + "QuickConnectAuthorizeSuccess": "Anrop auktoriserat", + "QuickConnectAuthorizeCode": "Ange kod {0} för att logga in", + "QuickConnectActivationSuccessful": "Aktivering lyckades", + "QuickConnect": "Snabbanslutning", + "Profile": "Profil", + "PreviousTrack": "Hoppa över till föregående", + "MessageGetInstalledPluginsError": "Ett fel inträffade när listan över installerade tillägg skulle hämtas." } From 7a8d49a239995849492ee09d060d341aec82302a Mon Sep 17 00:00:00 2001 From: wille1101 Date: Thu, 15 Oct 2020 18:06:06 +0000 Subject: [PATCH 505/582] 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 1b46bddab5..168a63b82e 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -934,7 +934,7 @@ "RecordingScheduled": "Inspelning schemalagd.", "Recordings": "Inspelningar", "Refresh": "Uppdatera", - "RefreshDialogHelp": "Metadata uppdateras baserat på inställningar och internettjänster som har aktiverats under Jellyfin servers kontrollpanel.", + "RefreshDialogHelp": "Metadata uppdateras baserat på inställningar och internettjänster som har aktiverats i kontrollpanelen.", "RefreshMetadata": "Uppdatera metadata", "RefreshQueued": "Uppdatering köad.", "ReleaseDate": "Releasedatum", From 735e8c22c47adfca715eed889ea4aebe9cb39e1d Mon Sep 17 00:00:00 2001 From: wille1101 Date: Thu, 15 Oct 2020 18:07:24 +0000 Subject: [PATCH 506/582] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 168a63b82e..5b10629318 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -971,8 +971,8 @@ "SeriesYearToPresent": "{0} - nu", "ServerNameIsRestarting": "Jellyfin Server - {0} startas om.", "ServerNameIsShuttingDown": "Jellyfin Server - {0} stängs ner.", - "ServerRestartNeededAfterPluginInstall": "Jellyfin-servern behöver startas om efter ett tillägg installeras.", - "ServerUpdateNeeded": "Den här Jellyfin servern behöver uppdateras. För att ladda ner senaste versionen, gå till {0}", + "ServerRestartNeededAfterPluginInstall": "Jellyfin behöver startas om efter ett tillägg installeras.", + "ServerUpdateNeeded": "Den här servern behöver uppdateras. För att ladda ner senaste versionen, gå till {0}", "Settings": "Inställningar", "SettingsSaved": "Inställningarna sparade.", "SettingsWarning": "Ändring av dessa alternativ kan innebära instabilitet eller anslutningsproblem. Återställ dessa till standardvärdena om du upplever några problem.", From a52f8853408435dcda921b625fa068fef4a109ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Fri, 16 Oct 2020 04:44:32 +0000 Subject: [PATCH 507/582] =?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 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 5a2ec58829..fc4c29e758 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1417,5 +1417,8 @@ "LabelTonemappingRange": "Tonemapping-område:", "TonemappingAlgorithmHelp": "Tonekartlegging kan finjusteres. Hvis du ikke er kjent med disse alternativene, er det bare å beholde standardinnstillingen. Den anbefalte verdien er Reinhard.", "LabelTonemappingAlgorithm": "Velg algoritmen for tonekartlegging som skal brukes:", - "AllowTonemappingHelp": "Tonekartlegging kan forvandle det dynamiske området til en video fra HDR til SDR samtidig som bildedetaljer og farger opprettholdes, noe som er veldig viktig informasjon for å representere den originale scenen. Fungerer for øyeblikket bare når du omkoder videoer med innebygd HDR10- eller HLG-metadata. Hvis avspillingen ikke er jevn eller mislykkes, bør du vurdere å slå av den tilsvarende maskinvaredekoderen." + "AllowTonemappingHelp": "Tonekartlegging kan forvandle det dynamiske området til en video fra HDR til SDR samtidig som bildedetaljer og farger opprettholdes, noe som er veldig viktig informasjon for å representere den originale scenen. Fungerer for øyeblikket bare når du omkoder videoer med innebygd HDR10- eller HLG-metadata. Hvis avspillingen ikke er jevn eller mislykkes, bør du vurdere å slå av den tilsvarende maskinvaredekoderen.", + "OptionMaxActiveSessionsHelp": "En verdi på 0 skrur av denne funksjonen.", + "OptionMaxActiveSessions": "Setter maksimalt antall tilgjengelige brukerøkter.", + "LabelUserMaxActiveSessions": "Maksimalt antall samtidige brukerøkter:" } From 8f9afee17c7833e7037ca8d58a207e1c80a5ae80 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Sat, 17 Oct 2020 07:44:41 +0000 Subject: [PATCH 508/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 1e8cc3ee37..e5bca02d52 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -1398,7 +1398,7 @@ "TabContainers": "Định dạng", "OptionEmbedSubtitles": "Nhúng trong định dạng", "MediaInfoContainer": "Định dạng", - "Raised": "Nâng lên", + "Raised": "Nhô Lên", "EnableAutoCast": "Đặt làm mặc định", "Studios": "Studios", "Bwdif": "BWDIF", From e877e711a11c46cc715683f6007d1cc75d382e63 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 18 Oct 2020 01:14:26 +0900 Subject: [PATCH 509/582] update config.json --- .gitignore | 3 ++ src/config.json | 74 ++++++++++++++++++++++++------------------------- 2 files changed, 40 insertions(+), 37 deletions(-) diff --git a/.gitignore b/.gitignore index 36b843f022..98aa2d974b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,9 @@ dist web node_modules +# config +config.json + # ide .idea .vscode diff --git a/src/config.json b/src/config.json index 0f308ccc11..864e1f3656 100644 --- a/src/config.json +++ b/src/config.json @@ -1,39 +1,39 @@ { - "multiserver": false, - "themes": [ - { - "name": "Apple TV", - "id": "appletv" - }, { - "name": "Blue Radiance", - "id": "blueradiance" - }, { - "name": "Dark", - "id": "dark", - "default": true - }, { - "name": "Light", - "id": "light" - }, { - "name": "Purple Haze", - "id": "purplehaze" - }, { - "name": "WMC", - "id": "wmc" - } - ], - "plugins": [ - "plugins/playAccessValidation/plugin", - "plugins/experimentalWarnings/plugin", - "plugins/htmlAudioPlayer/plugin", - "plugins/htmlVideoPlayer/plugin", - "plugins/photoPlayer/plugin", - "plugins/comicsPlayer/plugin", - "plugins/bookPlayer/plugin", - "plugins/youtubePlayer/plugin", - "plugins/backdropScreensaver/plugin", - "plugins/logoScreensaver/plugin", - "plugins/sessionPlayer/plugin", - "plugins/chromecastPlayer/plugin" - ] + "multiserver": false, + "themes": [ + { + "name": "Apple TV", + "id": "appletv" + }, { + "name": "Blue Radiance", + "id": "blueradiance" + }, { + "name": "Dark", + "id": "dark", + "default": true + }, { + "name": "Light", + "id": "light" + }, { + "name": "Purple Haze", + "id": "purplehaze" + }, { + "name": "WMC", + "id": "wmc" + } + ], + "plugins": [ + "plugins/playAccessValidation/plugin", + "plugins/experimentalWarnings/plugin", + "plugins/htmlAudioPlayer/plugin", + "plugins/htmlVideoPlayer/plugin", + "plugins/photoPlayer/plugin", + "plugins/comicsPlayer/plugin", + "plugins/bookPlayer/plugin", + "plugins/youtubePlayer/plugin", + "plugins/backdropScreensaver/plugin", + "plugins/logoScreensaver/plugin", + "plugins/sessionPlayer/plugin", + "plugins/chromecastPlayer/plugin" + ] } From 816d4a440820216d9e6e9afef389e46853982aee Mon Sep 17 00:00:00 2001 From: Piotr Kraszewski Date: Sun, 18 Oct 2020 19:43:50 +0000 Subject: [PATCH 510/582] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index ec44b42f60..d8be4f16f2 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1375,5 +1375,8 @@ "QuickConnectActivationSuccessful": "Aktywowano pomyślnie", "LabelCurrentStatus": "Bieżący status:", "EnableAutoCast": "Ustaw jako Domyślny", - "ButtonActivate": "Aktywuj" + "ButtonActivate": "Aktywuj", + "EnableQuickConnect": "Aktywuj szybkie połączenie na tym serwerze", + "ButtonUseQuickConnect": "Użyj szybkiego połączenia", + "Authorize": "Autoryzuj" } From cc1ebeff61893be262299e49c2e7d77a769cc435 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Mon, 19 Oct 2020 14:52:55 +0000 Subject: [PATCH 511/582] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 25df0b75c0..47b71223ab 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1269,7 +1269,7 @@ "LabelLibraryPageSizeHelp": "Az oldalnként megmutatott elemek száma. Nullára állítva a lapozási funkció ki lesz kapcsolva.", "LabelLibraryPageSize": "Könyvtár oldalméret:", "LabelDeinterlaceMethod": "Deinterlacing mód:", - "DeinterlaceMethodHelp": "Válassza ki a váltottsorosság megszűntetéséhez használandó módszert a váltottsoros tartalmak transzkódolásakor.", + "DeinterlaceMethodHelp": "Válaszd ki a szétválasztási módot, amelyet a váltott soros tartalom szoftveres átkódolásához használ. Ha engedélyezed a hardveres deinterlace-t támogató hardveres gyorsítást, akkor a hardveres deinterlacer lesz használva e beállítás helyett.", "UnsupportedPlayback": "Jellyfin nem tud DRM-titkosított tartalmak dekriptálására, ettől függetlenül a lejátszással mindig megpróbálkozik. Néhány fájl emiatt teljesen fekete képernyőt ad, amely vagy a titkosítás miatt van, vagy nem olyan nem támogatott tartalmak miatt, mint az interaktív címek.", "Yadif": "YADIF", "ButtonTogglePlaylist": "Lejátszási listák", @@ -1386,5 +1386,29 @@ "QuickConnect": "Gyors csatlakozás", "LabelQuickConnectCode": "Gyors kapcsolódás kódja:", "LabelKnownProxies": "Ismert proxyk:", - "LabelCurrentStatus": "Jelenlegi állapot:" + "LabelCurrentStatus": "Jelenlegi állapot:", + "LabelTonemappingPeakHelp": "A jel / névleges / referencia csúcs felülírása ezzel az értékkel. Hasznos, ha a megjelenített metaadatokba beágyazott csúcsinformációk nem megbízhatóak, vagy ha az alacsonyabb tartománytól a magasabb tartományig terjed a hangtérkép. Az ajánlott és az alapértelmezett érték 0.", + "LabelTonemappingPeak": "Tónustérkép csúcs:", + "LabelTonemappingThresholdHelp": "A hangtérkép algoritmus paramétereit minden jelenetre finomhangolják. És egy küszöböt használnak annak felderítésére, hogy a jelenet megváltozott-e vagy sem. Ha az aktuális keret átlagos fényereje és az aktuális futási átlag közötti távolság meghaladja a küszöbértéket, akkor újra kiszámolnánk a jelenet átlagát és a csúcs fényerejét. Az ajánlott és az alapértelmezett érték 0,8 és 0,2.", + "LabelTonemappingThreshold": "Tónustérkép küszöb:", + "LabelTonemappingDesatHelp": "Alkalmazz deszaturálást olyan fénypontokra, amelyek meghaladják ezt a fényerőszintet. Minél magasabb a paraméter, annál több színinformáció marad meg. Ez a beállítás segít megakadályozni a természetellenesen kifújt színeket a szuper kiemelések érdekében, mivel (simán) fehérré válnak. Ezáltal a képek természetesebbnek érezhetik magukat, annak árán, hogy csökkentsék a tartományon kívül eső színekkel kapcsolatos információkat. Az ajánlott és az alapértelmezett érték 0 és 0,5.", + "TonemappingRangeHelp": "Válaszd ki a kimeneti színtartományt. Az Auto megegyezik a bemeneti tartományral.", + "LabelTonemappingRange": "Tónustérkép tartomány:", + "TonemappingAlgorithmHelp": "A hangtérképezés finomhangolható. Ha még nem ismered ezeket az opciókat, tartsd meg az alapértelmezett értéket. Az ajánlott érték Reinhard.", + "LabelTonemappingAlgorithm": "Válaszd ki a használni kívánt Tone mapping algoritmust:", + "AllowTonemappingHelp": "A hangtérképezés átalakíthatja a videók dinamikai tartományát a HDR-től az SDR-ig, miközben megőrzi a kép részleteit és színeit, amelyek nagyon fontos információk az eredeti jelenet ábrázolásához. Jelenleg csak beágyazott HDR10 vagy HLG metaadatokkal rendelkező videók átkódolásakor működik. Ha a lejátszás nem gördülékeny vagy sikertelen, fontold meg a megfelelő hardveres dekóder kikapcsolását.", + "EnableTonemapping": "Hangszíntérkép engedélyezése", + "LabelOpenclDeviceHelp": "Ez az OpenCL eszköz, amelyet a hangtérkép leképezéséhez használnak. A pont bal oldala a platform száma, a jobb oldala pedig a platformon található eszköz száma. Az alapértelmezett érték 0.0. Az OpenCL hardveres gyorsítási módszert tartalmazó ffmpeg alkalmazásfájl szükséges.", + "LabelOpenclDevice": "OpenCL eszköz:", + "LabelColorSpace": "Színtér:", + "LabelVideoRange": "Videótartomány:", + "MediaInfoColorTransfer": "Színátadás", + "MediaInfoColorSpace": "Színtér", + "MediaInfoVideoRange": "Videótartomány", + "UseDoubleRateDeinterlacing": "Dupla képkockasebesség deinterlace esetén", + "OptionMaxActiveSessionsHelp": "A 0 érték letiltja a funkciót.", + "OptionMaxActiveSessions": "Beállítja az egyidejű felhasználói munkamenetek maximális számát.", + "LabelUserMaxActiveSessions": "Az egyidejű felhasználói munkamenetek maximális száma:", + "LabelIconMaxResHelp": "Az upnp:icon tulajdonságon keresztül közzétett ikonok maximális felbontása.", + "LabelAlbumArtMaxResHelp": "Az albumkép maximális felbontása az upnp: albumArtURI tulajdonságon keresztül." } From ca9205a8c218af294edea529384f2be971f12983 Mon Sep 17 00:00:00 2001 From: kimpig Date: Mon, 19 Oct 2020 14:16:14 +0000 Subject: [PATCH 512/582] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index b724d0b498..a2c65487d9 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -1418,5 +1418,7 @@ "RepeatOne": "반복", "RefreshDialogHelp": "메타 데이터는 대시 보드에서 활성화 된 설정 및 인터넷 서비스를 기반으로 새로 고쳐집니다.", "LabelUserMaxActiveSessions": "최대 동시 접속 사용자 세션 수:", - "EnableAutoCast": "기본값으로 설정" + "EnableAutoCast": "기본값으로 설정", + "OptionMaxActiveSessionsHelp": "값이 0이면 이 기능이 비활성화됩니다.", + "OptionMaxActiveSessions": "동시 사용자 세션의 최대 수를 설정하세요." } From f7903224731f5b1afe59b43a3f6e1c669cd16894 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2020 20:48:38 +0000 Subject: [PATCH 513/582] Bump query-string from 6.13.5 to 6.13.6 Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.13.5 to 6.13.6. - [Release notes](https://github.com/sindresorhus/query-string/releases) - [Commits](https://github.com/sindresorhus/query-string/compare/v6.13.5...v6.13.6) 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 f1cb13f3c4..cd41f32ddf 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "material-design-icons-iconfont": "^6.1.0", "native-promise-only": "^0.8.0-a", "page": "^1.11.6", - "query-string": "^6.13.5", + "query-string": "^6.13.6", "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.0.2", "sortablejs": "^1.12.0", diff --git a/yarn.lock b/yarn.lock index 1d5ca33387..5d4664740a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9433,10 +9433,10 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -query-string@^6.13.5: - version "6.13.5" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.5.tgz#99e95e2fb7021db90a6f373f990c0c814b3812d8" - integrity sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q== +query-string@^6.13.6: + version "6.13.6" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.6.tgz#e5ac7c74f2a5da43fbca0b883b4f0bafba439966" + integrity sha512-/WWZ7d9na6s2wMEGdVCVgKWE9Rt7nYyNIf7k8xmHXcesPMlEzicWo3lbYwHyA4wBktI2KrXxxZeACLbE84hvSQ== dependencies: decode-uri-component "^0.2.0" split-on-first "^1.0.0" From 0e254295b68a8da41aba4089251836d8300078bd Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2020 20:49:42 +0000 Subject: [PATCH 514/582] Bump @babel/polyfill from 7.11.5 to 7.12.1 Bumps [@babel/polyfill](https://github.com/babel/babel/tree/HEAD/packages/babel-polyfill) from 7.11.5 to 7.12.1. - [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.12.1/packages/babel-polyfill) 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 f1cb13f3c4..590dda2d36 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "@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.11.5", + "@babel/polyfill": "^7.12.1", "@babel/preset-env": "^7.11.5", "autoprefixer": "^9.8.6", "babel-loader": "^8.0.6", diff --git a/yarn.lock b/yarn.lock index 1d5ca33387..5565f3390c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -729,10 +729,10 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/polyfill@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.11.5.tgz#df550b2ec53abbc2ed599367ec59e64c7a707bb5" - integrity sha512-FunXnE0Sgpd61pKSj2OSOs1D44rKTD3pGOfGilZ6LGrrIH0QEtJlTjqOqdF8Bs98JmjfGhni2BBkTfv9KcKJ9g== +"@babel/polyfill@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.12.1.tgz#1f2d6371d1261bbd961f3c5d5909150e12d0bd96" + integrity sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g== dependencies: core-js "^2.6.5" regenerator-runtime "^0.13.4" From 1091e82b956c39d130a852092480686586ee93c6 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2020 20:51:52 +0000 Subject: [PATCH 515/582] Bump @babel/eslint-plugin from 7.11.5 to 7.12.1 Bumps [@babel/eslint-plugin](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-plugin) from 7.11.5 to 7.12.1. - [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.12.1/eslint/babel-eslint-plugin) 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 f1cb13f3c4..2bf69a1b18 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "devDependencies": { "@babel/core": "^7.11.6", "@babel/eslint-parser": "^7.11.5", - "@babel/eslint-plugin": "^7.11.5", + "@babel/eslint-plugin": "^7.12.1", "@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 1d5ca33387..37ae15d664 100644 --- a/yarn.lock +++ b/yarn.lock @@ -49,10 +49,10 @@ eslint-visitor-keys "^1.3.0" semver "^6.3.0" -"@babel/eslint-plugin@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/eslint-plugin/-/eslint-plugin-7.11.5.tgz#651fed485493cee8ae803d6a22e3b4f21315f328" - integrity sha512-klliWjB6CeMeqZ7IeJporPr7raD3Ttc8MF9HPNyTvddmBB9Bg7gbiN43rZvaqvsYiktPQLHZrD/Of7vtl6EYpw== +"@babel/eslint-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/eslint-plugin/-/eslint-plugin-7.12.1.tgz#67626a16312dfe7c5dd7685a1a8af7b03c43985b" + integrity sha512-rOjrD5yupTYCO4x0kEbQmi/NsaD+VGOD/9Cvso64WMVPY2y6o5Nvw2sqFWdeSEBdR1Dsa07YjplBs067x5YbXg== dependencies: eslint-rule-composer "^0.3.0" From bd9840a20b676253f7c1ac27d7b72903c495786d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2020 20:52:42 +0000 Subject: [PATCH 516/582] Bump @babel/eslint-parser from 7.11.5 to 7.12.1 Bumps [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) from 7.11.5 to 7.12.1. - [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.12.1/eslint/babel-eslint-parser) 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 f1cb13f3c4..4299fb9fd0 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "GPL-2.0-or-later", "devDependencies": { "@babel/core": "^7.11.6", - "@babel/eslint-parser": "^7.11.5", + "@babel/eslint-parser": "^7.12.1", "@babel/eslint-plugin": "^7.11.5", "@babel/plugin-proposal-class-properties": "^7.10.1", "@babel/plugin-proposal-private-methods": "^7.10.1", diff --git a/yarn.lock b/yarn.lock index 1d5ca33387..a687d0208b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,10 +40,10 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/eslint-parser@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.11.5.tgz#398192b8d1cd3678efb709f5ab09d9aa2a2218fd" - integrity sha512-DZ3maD3ciwRg1pOzEpJ1outlV1DA/A8XHDQoyL69fC3RIJMlMq1UPudgfRkW0YFqmQPR6OPvu8chaT7Yq2Mm8A== +"@babel/eslint-parser@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.12.1.tgz#b3ae38e6174d2d0d2d00d2dcd919b4086b6bb8f0" + integrity sha512-cc7WQHnHQY3++/bghgbDtPx+5bf6xTsokyGzV6Qzh65NLz/unv+mPQuACkQ9GFhIhcTFv6yqwNaEcfX7EkOEsg== dependencies: eslint-scope "5.1.0" eslint-visitor-keys "^1.3.0" From 2c8d0e96a280339b3883f3537f7041e4a172b8ca Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2020 20:53:09 +0000 Subject: [PATCH 517/582] Bump css-loader from 4.3.0 to 5.0.0 Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 4.3.0 to 5.0.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.3.0...v5.0.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 126 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 77 insertions(+), 51 deletions(-) diff --git a/package.json b/package.json index f1cb13f3c4..fae06e0d77 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "browser-sync": "^2.26.12", "confusing-browser-globals": "^1.0.9", "copy-webpack-plugin": "^5.1.1", - "css-loader": "^4.3.0", + "css-loader": "^5.0.0", "cssnano": "^4.1.10", "del": "^6.0.0", "eslint": "^7.11.0", diff --git a/yarn.lock b/yarn.lock index 1d5ca33387..9741ccf82e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2382,10 +2382,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" - integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== +camelcase@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.1.0.tgz#27dc176173725fb0adf8a48b647f4d7871944d78" + integrity sha512-WCMml9ivU60+8rEJgELlFp1gxFcEGxwYleE3bziHEDeqsqAWGHdimB7beBFGjLzVNgPGyDsfgXLQEYMpmIFnVQ== caniuse-api@^3.0.0: version "3.0.0" @@ -3100,22 +3100,22 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" - integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== +css-loader@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.0.0.tgz#f0a48dfacc3ab9936a05ee16a09e7f313872e117" + integrity sha512-9g35eXRBgjvswyJWoqq/seWp+BOxvUl8IinVNTsUBFFxtwfEYvlmEn6ciyn0liXGbGh5HyJjPGCuobDSfqMIVg== dependencies: - camelcase "^6.0.0" + camelcase "^6.1.0" cssesc "^3.0.0" - icss-utils "^4.1.1" + icss-utils "^5.0.0" loader-utils "^2.0.0" - postcss "^7.0.32" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.3" - postcss-modules-scope "^2.2.0" - postcss-modules-values "^3.0.0" + postcss "^8.1.1" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" postcss-value-parser "^4.1.0" - schema-utils "^2.7.1" + schema-utils "^3.0.0" semver "^7.3.2" css-prefers-color-scheme@^3.1.1: @@ -5772,12 +5772,10 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" +icss-utils@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.0.0.tgz#03ed56c3accd32f9caaf1752ebf64ef12347bb84" + integrity sha512-aF2Cf/CkEZrI/vsu5WI/I+akFgdbwQHVE9YRZxATrhH4PVIe6a3BIjwjEcW+z+jP/hNh+YvM3lAAn1wJQ6opSg== ieee754@^1.1.4: version "1.1.13" @@ -6756,6 +6754,14 @@ limiter@^1.0.5: resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== +line-column@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" + integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= + dependencies: + isarray "^1.0.0" + isobject "^2.0.0" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -7576,6 +7582,11 @@ nan@^2.12.1, nan@^2.13.2: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== +nanoid@^3.1.12: + version "3.1.12" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" + integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -8869,38 +8880,33 @@ postcss-minify-selectors@^4.0.2: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== -postcss-modules-local-by-default@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" - integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== dependencies: - icss-utils "^4.1.1" - postcss "^7.0.32" + icss-utils "^5.0.0" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-scope@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: +postcss-modules-scope@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" postcss-nesting@^7.0.0: version "7.0.1" @@ -9197,7 +9203,7 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: +postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== @@ -9206,6 +9212,16 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + postcss-sorting@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-sorting/-/postcss-sorting-4.1.0.tgz#a107f0bf3852977fa64e4442bc340c88d5aacdb3" @@ -9284,6 +9300,16 @@ 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" +postcss@^8.1.1: + version "8.1.2" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.2.tgz#9731fcaa4f7b0bef47121821bdae9eeb609a324c" + integrity sha512-mToqEVFq8jF9TFhlIK4HhE34zknFJuNTgqtsr60vUvrWn+9TIYugCwiV1JZRxCuOrej2jjstun1bn4Bc7/1HkA== + dependencies: + colorette "^1.2.1" + line-column "^1.0.2" + nanoid "^3.1.12" + source-map "^0.6.1" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -10126,7 +10152,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.6.5, schema-utils@^2.7.1: +schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -11992,7 +12018,7 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= From f87555540b3c58559eec99041280a3e4ea2a5a74 Mon Sep 17 00:00:00 2001 From: Vitorvlv Date: Mon, 19 Oct 2020 21:15:37 +0000 Subject: [PATCH 518/582] 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 | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 8910c957d3..aba872a973 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1384,14 +1384,14 @@ "ButtonUseQuickConnect": "Usar Quick Connect", "ButtonActivate": "Ativar", "Authorize": "Autorizar", - "LabelTonemappingDesat": "Desaturação do mapeamento de tons:", + "LabelTonemappingDesat": "Dessaturação do Tonemapping:", "TonemappingRangeHelp": "Selecione a variadade de cores da saída. Auto é a mesma variedade da entrada.", "LabelTonemappingRange": "Range do mapeamento de tons:", - "TonemappingAlgorithmHelp": "Mapeamento de tons podem ser ajustados. Se você não esta familiariazado com essas opções, mantenha os valores padrões. O valor recomendado é Reinhard.", + "TonemappingAlgorithmHelp": "O Tonemapping pode ser ajustado. Se você não esta familiarizado com essas opções, mantenha o valor padrão. O valor recomendado é Reinhard.", "LabelTonemappingAlgorithm": "Selecione o algoritmo de mapeamento de tons a ser usado:", - "AllowTonemappingHelp": "Mapeamento de tons pode transformar o range dinamico de um video HDR em SDR enquanto mantém os detalhes e cores da imagem, que são informações importantes na representação da cena original. Atualmente funciona apenas durante o transcoding de videos com HDR10 embutidos ou metadata HLG. Se a reprodução falhar ou nao estiver suave, por favor considere desativar o decodificador de hardware correspondente.", + "AllowTonemappingHelp": "O Tonemapping pode transformar o range dinâmico de um video HDR em SDR enquanto mantém os detalhes e cores da imagem, que são informações importantes na representação da cena original. Atualmente funciona apenas durante à transcodificação de vídeos com metadados HDR10 ou HGL embutidos. Se a reprodução falhar ou não estiver suave, por favor considere desativar o decodificador de hardware correspondente.", "EnableTonemapping": "Ativar mapeamento de tons", - "LabelOpenclDeviceHelp": "Dispositivo OpenCL usado para a mapeação de tons. Os números ao lado esquedo do ponto (.) são referentes ao número da plataforma, os números a direita representam o número do dispositivo dentro da plataforma. O valor padrão é 0.0. O arquivo da aplicaçao ffmpeg contendo o método de aceleraçao de hardware OpenCL é obrigatório.", + "LabelOpenclDeviceHelp": "Dispositivo OpenCL usado para a mapeação de tons. Os números ao lado esquerdo do ponto (.) são referentes ao número da plataforma, os números a direita representam o número do dispositivo dentro da plataforma. O valor padrão é 0.0. O arquivo da aplicação ffmpeg contendo o método de aceleraçao de hardware OpenCL é obrigatório.", "LabelOpenclDevice": "Dispositivo OpenCL:", "LabelColorPrimaries": "Cores primárias:", "UseDoubleRateDeinterlacing": "Dobra a taxa de quadros quando estiver desinterlaçando", @@ -1400,5 +1400,25 @@ "KnownProxiesHelp": "Lista de endereços IPs, separados por vírgula, de proxies conhecidos usados para conectar na sua instância do Jellyfin. Isso é necessário para usar de forma adequada os cabeçalhos X-Forwarded-for. Essa alteração necessita que o sistema seja reiniciado após salvar.", "EnableAutoCast": "Definir como padrão", "ThumbCard": "Card da miniatura", - "OptionMaxActiveSessionsHelp": "O valor 0 desativa esta funcão." + "OptionMaxActiveSessionsHelp": "O valor 0 desativa esta funcão.", + "LabelMaxMuxingQueueSizeHelp": "Numero máximo de pacotes que podem ser armazenados no \"buffer\" enquanto espera-se a inicialização de todas as \"streams\". Tente aumentá-lo se encontrar o erro: \"Too many packets buffered for output stream\" nos logs do ffmpeg. O valor recomendado é 2048.", + "LabelMaxMuxingQueueSize": "Tamanho máximo da fila de \"muxing\":", + "LabelTonemappingParamHelp": "Sintonize o algoritmo de tonemapping. Os valores padrões e recomendados são NaN. Geralmente, deixe em branco.", + "LabelTonemappingParam": "Parâmetros de Tonemapping:", + "LabelTonemappingPeakHelp": "Sobrepor este valor ao pico de sinal/nominal/referência. Útil quando a informação de pico embutida nos metadados de visualização não é confiável ou quando o Tone mapping alterna de um intervalo pequeno para um maior.", + "LabelTonemappingPeak": "Pico do Tonemapping:", + "LabelTonemappingThresholdHelp": "Os parâmetros do algoritmo de Tonemapping são afinados a cada cena. E é aplicado um limite para detectar se a cena mudou ou não. Caso a distancia entre o brilho médio atual do quadro e a média atual de execução excedam o valor do limite, o brilho médio e o pico de brilho da cena serão recalculados. Os valores recomendado e padrão são 0.8 e 0.2, respectivamente.", + "LabelTonemappingThreshold": "Limite do Tonemapping:", + "LabelTonemappingDesatHelp": "Aplicar dessaturação em partes claras da imagem que excedam este nível de brilho. Quanto maior o parâmetro, mais informação de cor será preservada. Esta definição ajuda a prevenir cores excessivamente claras tornando-as (suavemente) em branco. Produz imagens mais naturais devido à redução de informação sobre cores fora do espectro. Os valores recomendado e padrão são 0 e 0.5, respectivamente.", + "LabelColorTransfer": "Transferência de cor:", + "LabelColorSpace": "Espaço de cor:", + "LabelVideoRange": "Intervalo de vídeo:", + "MediaInfoColorPrimaries": "Cores primárias", + "MediaInfoColorTransfer": "Transferência de cor", + "MediaInfoColorSpace": "Espaço de cor", + "MediaInfoVideoRange": "Intervalo do vídeo", + "Bwdif": "BWDIF", + "UseDoubleRateDeinterlacingHelp": "Essa configuração utiliza a \"field rate\" ao fazer o processo de \"deinterlacing\", frequentemente chamado de \"bob deinterlacing\", que dobra a taxa de quadros do vídeo para proporcionar um movimento completo similar àquele visto ao ver um vídeo \"interlaçado\" em uma TV.", + "OptionMaxActiveSessions": "Estabelece o número máximo de sessões de usuários simultâneas.", + "LabelUserMaxActiveSessions": "Número máximo de sessões de usuários simultâneas:" } From 3718085a7acacb33baee24788f435859e067aba0 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 20 Oct 2020 04:11:54 +0000 Subject: [PATCH 519/582] Bump browser-sync from 2.26.12 to 2.26.13 Bumps [browser-sync](https://github.com/BrowserSync/browser-sync) from 2.26.12 to 2.26.13. - [Release notes](https://github.com/BrowserSync/browser-sync/releases) - [Changelog](https://github.com/BrowserSync/browser-sync/blob/master/CHANGELOG.md) - [Commits](https://github.com/BrowserSync/browser-sync/compare/v2.26.12...v2.26.13) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 62 ++++++++++++++++++++++++++-------------------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 5ca226678d..47da309db8 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@babel/preset-env": "^7.11.5", "autoprefixer": "^9.8.6", "babel-loader": "^8.0.6", - "browser-sync": "^2.26.12", + "browser-sync": "^2.26.13", "confusing-browser-globals": "^1.0.9", "copy-webpack-plugin": "^5.1.1", "css-loader": "^5.0.0", diff --git a/yarn.lock b/yarn.lock index 1376f808ba..6d3c8166f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2004,20 +2004,20 @@ brorand@^1.0.1: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= -browser-sync-client@^2.26.12: - version "2.26.12" - resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.12.tgz#b6c81335c6a9f1a79bca1951438800d3e7f170c8" - integrity sha512-bEBDRkufKxrIfjOsIB1FN9itUEXr2oLtz1AySgSSr80K2AWzmtoYnxtVASx/i40qFrSdeI31pNvdCjHivihLVA== +browser-sync-client@^2.26.13: + version "2.26.13" + resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.13.tgz#ee5fa3ec36fe2a03f9887553cac6846751c8232d" + integrity sha512-p2VbZoYrpuDhkreq+/Sv1MkToHklh7T1OaIntDwpG6Iy2q/XkBcgwPcWjX+WwRNiZjN8MEehxIjEUh12LweLmQ== dependencies: etag "1.8.1" fresh "0.5.2" mitt "^1.1.3" rxjs "^5.5.6" -browser-sync-ui@^2.26.12: - version "2.26.12" - resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.12.tgz#6a309644d3ae0fe743906558a94caf6fd118719f" - integrity sha512-PkAJNf/TfCFTCkQUfXplR2Kp/+/lbCWFO9lrgLZsmxIhvMLx2pYZFBbTBIaem8qjXhld9ZcESUC8EdU5VWFJgQ== +browser-sync-ui@^2.26.13: + version "2.26.13" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.13.tgz#7a0622df2c1cc4fb0dd8edd511f90737f84239b4" + integrity sha512-6NJ/pCnhCnBMzaty1opWo7ipDmFAIk8U71JMQGKJxblCUaGfdsbF2shf6XNZSkXYia1yS0vwKu9LIOzpXqQZCA== dependencies: async-each-series "0.1.1" connect-history-api-fallback "^1" @@ -2026,13 +2026,13 @@ browser-sync-ui@^2.26.12: socket.io-client "^2.0.4" stream-throttle "^0.1.3" -browser-sync@^2.26.12: - version "2.26.12" - resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.12.tgz#2724df702ef8880e711c1bf62afd7c93a3a80462" - integrity sha512-1GjAe+EpZQJgtKhWsxklEjpaMV0DrRylpHRvZWgOphDQt+bfLZjfynl/j1WjSFIx8ozj9j78g6Yk4TqD3gKaMA== +browser-sync@^2.26.13: + version "2.26.13" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.13.tgz#a74541c104aec7eda318a5d8abdb3317ae9eda3d" + integrity sha512-JPYLTngIzI+Dzx+StSSlMtF+Q9yjdh58HW6bMFqkFXuzQkJL8FCvp4lozlS6BbECZcsM2Gmlgp0uhEjvl18X4w== dependencies: - browser-sync-client "^2.26.12" - browser-sync-ui "^2.26.12" + browser-sync-client "^2.26.13" + browser-sync-ui "^2.26.13" bs-recipes "1.3.4" bs-snippet-injector "^2.0.1" chokidar "^3.4.1" @@ -2040,7 +2040,7 @@ browser-sync@^2.26.12: connect-history-api-fallback "^1" dev-ip "^1.0.1" easy-extender "^2.3.4" - eazy-logger "^3" + eazy-logger "3.1.0" etag "^1.8.1" fresh "^0.5.2" fs-extra "3.0.1" @@ -3554,6 +3554,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -3731,12 +3736,12 @@ easy-extender@^2.3.4: dependencies: lodash "^4.17.10" -eazy-logger@^3: - version "3.0.2" - resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.0.2.tgz#a325aa5e53d13a2225889b2ac4113b2b9636f4fc" - integrity sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw= +eazy-logger@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.1.0.tgz#b169eb56df714608fa114f164c8a2956bec9f0f3" + integrity sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ== dependencies: - tfunk "^3.0.1" + tfunk "^4.0.0" ecc-jsbn@~0.1.1: version "0.1.2" @@ -7893,11 +7898,6 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-path@^0.9.0: - version "0.9.2" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" - integrity sha1-D9mnT8X60a45aLWGvaXGMr1sBaU= - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -11412,13 +11412,13 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -tfunk@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.1.0.tgz#38e4414fc64977d87afdaa72facb6d29f82f7b5b" - integrity sha1-OORBT8ZJd9h6/apy+sttKfgve1s= +tfunk@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-4.0.0.tgz#de9399feaf2060901d590b7faad80fcd5443077e" + integrity sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ== dependencies: - chalk "^1.1.1" - object-path "^0.9.0" + chalk "^1.1.3" + dlv "^1.1.3" through2-concurrent@^2.0.0: version "2.0.0" From a4ea1021f56e4a13bf3622dab37d020a03eaa5ff Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 20 Oct 2020 04:14:21 +0000 Subject: [PATCH 520/582] Bump @babel/core from 7.11.6 to 7.12.3 Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.11.6 to 7.12.3. - [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.12.3/packages/babel-core) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 121 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 78 insertions(+), 45 deletions(-) diff --git a/package.json b/package.json index 503c3d5b9e..445d8f4066 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.11.6", + "@babel/core": "^7.12.3", "@babel/eslint-parser": "^7.12.1", "@babel/eslint-plugin": "^7.12.1", "@babel/plugin-proposal-class-properties": "^7.10.1", diff --git a/yarn.lock b/yarn.lock index 095daefb5e..b2aba83929 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.11.6": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" - integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== +"@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.12.3": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.6" - "@babel/helper-module-transforms" "^7.11.0" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.5" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.5" - "@babel/types" "^7.11.5" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -56,12 +56,12 @@ dependencies: eslint-rule-composer "^0.3.0" -"@babel/generator@^7.11.5", "@babel/generator@^7.11.6": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" - integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== +"@babel/generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468" + integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg== dependencies: - "@babel/types" "^7.11.5" + "@babel/types" "^7.12.1" jsesc "^2.5.1" source-map "^0.5.0" @@ -159,6 +159,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-member-expression-to-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" + integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== + dependencies: + "@babel/types" "^7.12.1" + "@babel/helper-module-imports@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" @@ -166,17 +173,26 @@ dependencies: "@babel/types" "^7.10.4" -"@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== +"@babel/helper-module-imports@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz#1644c01591a15a2f084dd6d092d9430eb1d1216c" + integrity sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA== dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" + "@babel/types" "^7.12.1" + +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" "@babel/template" "^7.10.4" - "@babel/types" "^7.11.0" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" lodash "^4.17.19" "@babel/helper-optimise-call-expression@^7.10.4": @@ -219,6 +235,16 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-replace-supers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9" + integrity sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + "@babel/helper-simple-access@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" @@ -227,6 +253,13 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + "@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" @@ -263,14 +296,14 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helpers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" - integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== +"@babel/helpers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.1.tgz#8a8261c1d438ec18cb890434df4ec768734c1e79" + integrity sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g== dependencies: "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" "@babel/highlight@^7.10.4": version "7.10.4" @@ -281,10 +314,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.4", "@babel/parser@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" - integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== +"@babel/parser@^7.10.4", "@babel/parser@^7.12.1", "@babel/parser@^7.12.3": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" + integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== "@babel/plugin-proposal-async-generator-functions@^7.10.4": version "7.10.4" @@ -838,25 +871,25 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" - integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== +"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e" + integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.5" + "@babel/generator" "^7.12.1" "@babel/helper-function-name" "^7.10.4" "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.5" - "@babel/types" "^7.11.5" + "@babel/parser" "^7.12.1" + "@babel/types" "^7.12.1" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.4.4": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" - integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== +"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.12.1", "@babel/types@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" + integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA== dependencies: "@babel/helper-validator-identifier" "^7.10.4" lodash "^4.17.19" From f092dd63b06836ce084f065daa31a869fc15942f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 20 Oct 2020 06:52:34 +0000 Subject: [PATCH 521/582] Bump @babel/plugin-proposal-private-methods from 7.10.4 to 7.12.1 Bumps [@babel/plugin-proposal-private-methods](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-private-methods) from 7.10.4 to 7.12.1. - [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.12.1/packages/babel-plugin-proposal-private-methods) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 58ebeb037c..a75c98454f 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "@babel/eslint-parser": "^7.12.1", "@babel/eslint-plugin": "^7.12.1", "@babel/plugin-proposal-class-properties": "^7.10.1", - "@babel/plugin-proposal-private-methods": "^7.10.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", "@babel/plugin-transform-modules-amd": "^7.10.5", "@babel/polyfill": "^7.12.1", "@babel/preset-env": "^7.11.5", diff --git a/yarn.lock b/yarn.lock index 13c17f7ee1..267a730f50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -91,16 +91,15 @@ levenary "^1.1.1" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" - integrity sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ== +"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== dependencies: "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.12.1" "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" "@babel/helper-create-regexp-features-plugin@^7.10.4": @@ -410,12 +409,12 @@ "@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": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" - integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== +"@babel/plugin-proposal-private-methods@^7.10.4", "@babel/plugin-proposal-private-methods@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" + integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": From ca06019cb37de4574455d0fee51740b9a12b6892 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 20 Oct 2020 09:27:09 +0000 Subject: [PATCH 522/582] Bump @babel/plugin-transform-modules-amd from 7.10.5 to 7.12.1 Bumps [@babel/plugin-transform-modules-amd](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-amd) from 7.10.5 to 7.12.1. - [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.12.1/packages/babel-plugin-transform-modules-amd) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index a75c98454f..1abd52d277 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "@babel/eslint-plugin": "^7.12.1", "@babel/plugin-proposal-class-properties": "^7.10.1", "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.10.5", + "@babel/plugin-transform-modules-amd": "^7.12.1", "@babel/polyfill": "^7.12.1", "@babel/preset-env": "^7.11.5", "autoprefixer": "^9.8.6", diff --git a/yarn.lock b/yarn.lock index 267a730f50..f91244150d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -179,7 +179,7 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.12.1": +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== @@ -620,12 +620,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.10.4", "@babel/plugin-transform-modules-amd@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" - integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== +"@babel/plugin-transform-modules-amd@^7.10.4", "@babel/plugin-transform-modules-amd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" + integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== dependencies: - "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" From a2ecf8966c966452df4fc29ec39f9efd4c2e457e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 20 Oct 2020 09:59:52 +0000 Subject: [PATCH 523/582] Bump @babel/preset-env from 7.11.5 to 7.12.1 Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.11.5 to 7.12.1. - [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.12.1/packages/babel-preset-env) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 664 +++++++++++++++++++++++---------------------------- 2 files changed, 301 insertions(+), 365 deletions(-) diff --git a/package.json b/package.json index 1abd52d277..12ad0536da 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "@babel/plugin-proposal-private-methods": "^7.12.1", "@babel/plugin-transform-modules-amd": "^7.12.1", "@babel/polyfill": "^7.12.1", - "@babel/preset-env": "^7.11.5", + "@babel/preset-env": "^7.12.1", "autoprefixer": "^9.8.6", "babel-loader": "^8.0.6", "browser-sync": "^2.26.13", diff --git a/yarn.lock b/yarn.lock index f91244150d..9df43191bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,14 +9,10 @@ dependencies: "@babel/highlight" "^7.10.4" -"@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" - semver "^5.5.0" +"@babel/compat-data@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.1.tgz#d7386a689aa0ddf06255005b4b991988021101a0" + integrity sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ== "@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.12.3": version "7.12.3" @@ -80,18 +76,17 @@ "@babel/helper-explode-assignable-expression" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-compilation-targets@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" - integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== +"@babel/helper-compilation-targets@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz#310e352888fbdbdd8577be8dfdd2afb9e7adcf50" + integrity sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g== dependencies: - "@babel/compat-data" "^7.10.4" + "@babel/compat-data" "^7.12.1" + "@babel/helper-validator-option" "^7.12.1" browserslist "^4.12.0" - invariant "^2.2.4" - levenary "^1.1.1" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.12.1": +"@babel/helper-create-class-features-plugin@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== @@ -102,14 +97,14 @@ "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" -"@babel/helper-create-regexp-features-plugin@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" - integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== +"@babel/helper-create-regexp-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz#18b1302d4677f9dc4740fe8c9ed96680e29d37e8" + integrity sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-regex" "^7.10.4" - regexpu-core "^4.7.0" + regexpu-core "^4.7.1" "@babel/helper-define-map@^7.10.4": version "7.10.4" @@ -151,13 +146,6 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-member-expression-to-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" - integrity sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A== - dependencies: - "@babel/types" "^7.10.4" - "@babel/helper-member-expression-to-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" @@ -165,13 +153,6 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-module-imports@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" - integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== - dependencies: - "@babel/types" "^7.10.4" - "@babel/helper-module-imports@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz#1644c01591a15a2f084dd6d092d9430eb1d1216c" @@ -179,7 +160,7 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.12.1": +"@babel/helper-module-transforms@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== @@ -213,26 +194,14 @@ dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" - integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== +"@babel/helper-remap-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" + integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-wrap-function" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-replace-supers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" - integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.12.1" "@babel/helper-replace-supers@^7.12.1": version "7.12.1" @@ -244,14 +213,6 @@ "@babel/traverse" "^7.12.1" "@babel/types" "^7.12.1" -"@babel/helper-simple-access@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" - integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== - dependencies: - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - "@babel/helper-simple-access@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" @@ -259,12 +220,12 @@ dependencies: "@babel/types" "^7.12.1" -"@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== +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.12.1" "@babel/helper-split-export-declaration@^7.10.4": version "7.10.4" @@ -285,6 +246,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-option@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" + integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== + "@babel/helper-wrap-function@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" @@ -318,98 +284,98 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== -"@babel/plugin-proposal-async-generator-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6" - integrity sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg== +"@babel/plugin-proposal-async-generator-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" + integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@^7.10.1", "@babel/plugin-proposal-class-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" - integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== +"@babel/plugin-proposal-class-properties@^7.10.1", "@babel/plugin-proposal-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-dynamic-import@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" - integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== +"@babel/plugin-proposal-dynamic-import@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" + integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== dependencies: "@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== +"@babel/plugin-proposal-export-namespace-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" + integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== 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" - integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== +"@babel/plugin-proposal-json-strings@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" + integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== dependencies: "@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== +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" + integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== 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" - integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" - integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== +"@babel/plugin-proposal-numeric-separator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6" + integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@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== +"@babel/plugin-proposal-object-rest-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-optional-catch-binding@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" - integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== +"@babel/plugin-proposal-optional-catch-binding@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" + integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@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== +"@babel/plugin-proposal-optional-chaining@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" + integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-private-methods@^7.10.4", "@babel/plugin-proposal-private-methods@^7.12.1": +"@babel/plugin-proposal-private-methods@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== @@ -417,12 +383,12 @@ "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" - integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" + integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-async-generators@^7.8.0": @@ -432,10 +398,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" - integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== +"@babel/plugin-syntax-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -502,125 +468,124 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" - integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== +"@babel/plugin-syntax-top-level-await@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-arrow-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" - integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== +"@babel/plugin-transform-arrow-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" - integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== +"@babel/plugin-transform-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" + integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== dependencies: - "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-module-imports" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" -"@babel/plugin-transform-block-scoped-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" - integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== +"@babel/plugin-transform-block-scoped-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz#a670d1364bb5019a621b9ea2001482876d734787" - integrity sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A== +"@babel/plugin-transform-block-scoping@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" + integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" - integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== +"@babel/plugin-transform-classes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-define-map" "^7.10.4" "@babel/helper-function-name" "^7.10.4" "@babel/helper-optimise-call-expression" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" - integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== +"@babel/plugin-transform-computed-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-destructuring@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" - integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== +"@babel/plugin-transform-destructuring@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" - integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== +"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" + integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" - integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== +"@babel/plugin-transform-duplicate-keys@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" + integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" - integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== +"@babel/plugin-transform-exponentiation-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" + integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-for-of@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" - integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== +"@babel/plugin-transform-for-of@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" - integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== +"@babel/plugin-transform-function-name@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== dependencies: "@babel/helper-function-name" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" - integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== +"@babel/plugin-transform-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" - integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== +"@babel/plugin-transform-member-expression-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.10.4", "@babel/plugin-transform-modules-amd@^7.12.1": +"@babel/plugin-transform-modules-amd@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== @@ -629,136 +594,135 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" - integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== +"@babel/plugin-transform-modules-commonjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" + integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== dependencies: - "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz#8f576afd943ac2f789b35ded0a6312f929c633f9" - integrity sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ== +"@babel/plugin-transform-modules-systemjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" + integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== dependencies: "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-identifier" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" - integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== +"@babel/plugin-transform-modules-umd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" + integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== dependencies: - "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" - integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" + integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" -"@babel/plugin-transform-new-target@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" - integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== +"@babel/plugin-transform-new-target@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" + integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-object-super@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" - integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== +"@babel/plugin-transform-object-super@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" -"@babel/plugin-transform-parameters@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz#7b4d137c87ea7adc2a0f3ebf53266871daa6fced" - integrity sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-property-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" - integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== +"@babel/plugin-transform-parameters@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" - integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== +"@babel/plugin-transform-property-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" + integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" - integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== +"@babel/plugin-transform-reserved-words@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" + integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-shorthand-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" - integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== +"@babel/plugin-transform-shorthand-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@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== +"@babel/plugin-transform-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" -"@babel/plugin-transform-sticky-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" - integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== +"@babel/plugin-transform-sticky-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz#5c24cf50de396d30e99afc8d1c700e8bce0f5caf" + integrity sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-regex" "^7.10.4" -"@babel/plugin-transform-template-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz#e6375407b30fcb7fcfdbba3bb98ef3e9d36df7bc" - integrity sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-typeof-symbol@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" - integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== +"@babel/plugin-transform-template-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-escapes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" - integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== +"@babel/plugin-transform-typeof-symbol@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" + integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" - integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== +"@babel/plugin-transform-unicode-escapes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" + integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" + integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/polyfill@^7.12.1": @@ -769,30 +733,31 @@ core-js "^2.6.5" regenerator-runtime "^0.13.4" -"@babel/preset-env@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.5.tgz#18cb4b9379e3e92ffea92c07471a99a2914e4272" - integrity sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA== +"@babel/preset-env@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" + integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== dependencies: - "@babel/compat-data" "^7.11.0" - "@babel/helper-compilation-targets" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" + "@babel/compat-data" "^7.12.1" + "@babel/helper-compilation-targets" "^7.12.1" + "@babel/helper-module-imports" "^7.12.1" "@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.11.0" - "@babel/plugin-proposal-optional-catch-binding" "^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/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.10.4" + "@babel/plugin-syntax-class-properties" "^7.12.1" "@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" @@ -802,45 +767,42 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.10.4" - "@babel/plugin-transform-arrow-functions" "^7.10.4" - "@babel/plugin-transform-async-to-generator" "^7.10.4" - "@babel/plugin-transform-block-scoped-functions" "^7.10.4" - "@babel/plugin-transform-block-scoping" "^7.10.4" - "@babel/plugin-transform-classes" "^7.10.4" - "@babel/plugin-transform-computed-properties" "^7.10.4" - "@babel/plugin-transform-destructuring" "^7.10.4" - "@babel/plugin-transform-dotall-regex" "^7.10.4" - "@babel/plugin-transform-duplicate-keys" "^7.10.4" - "@babel/plugin-transform-exponentiation-operator" "^7.10.4" - "@babel/plugin-transform-for-of" "^7.10.4" - "@babel/plugin-transform-function-name" "^7.10.4" - "@babel/plugin-transform-literals" "^7.10.4" - "@babel/plugin-transform-member-expression-literals" "^7.10.4" - "@babel/plugin-transform-modules-amd" "^7.10.4" - "@babel/plugin-transform-modules-commonjs" "^7.10.4" - "@babel/plugin-transform-modules-systemjs" "^7.10.4" - "@babel/plugin-transform-modules-umd" "^7.10.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" - "@babel/plugin-transform-new-target" "^7.10.4" - "@babel/plugin-transform-object-super" "^7.10.4" - "@babel/plugin-transform-parameters" "^7.10.4" - "@babel/plugin-transform-property-literals" "^7.10.4" - "@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.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/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.11.5" - browserslist "^4.12.0" + "@babel/types" "^7.12.1" core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" semver "^5.5.0" "@babel/preset-modules@^0.1.3": @@ -885,7 +847,7 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.12.1", "@babel/types@^7.4.4": +"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.4.4": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA== @@ -6025,13 +5987,6 @@ into-stream@^3.1.0: from2 "^2.1.1" p-is-promise "^1.1.0" -invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -6531,7 +6486,7 @@ js-base64@^2.1.8, js-base64@^2.1.9: resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" integrity sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ== -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -6729,18 +6684,6 @@ leven@^2.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -7086,13 +7029,6 @@ longest@^1.0.0: resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" @@ -9743,10 +9679,10 @@ regexpp@^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" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== dependencies: regenerate "^1.4.0" regenerate-unicode-properties "^8.2.0" From 24a60254464da7351c5368821dbb8df9a125c4b9 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Tue, 20 Oct 2020 09:57:52 +0000 Subject: [PATCH 524/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index e5bca02d52..dab49184dd 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -702,7 +702,7 @@ "LabelNewsCategories": "Chuyên mục tin tức:", "LabelStable": "Ổn Định", "LabelTonemappingAlgorithm": "Chọn thuật toán ánh xạ tông màu để sử dụng:", - "TonemappingAlgorithmHelp": "Ánh xạ tông màu có thể được tinh chỉnh. Nếu bạn không quen với tùy chọn này, hãy giữ mặc định. Giá trị mặc định: Reinhard.", + "TonemappingAlgorithmHelp": "Có thể điều chỉnh bố trí sắc thái. Nếu bạn không hiểu tùy chọn này, hãy giữ mặc định. Giá trị mặc định: Reinhard.", "TonemappingRangeHelp": "Chọn dải màu đầu ra. Tự động nghĩa là giống như dải màu đầu vào.", "StopPlayback": "Dừng Phát", "Preview": "Xem Trước", From a4b730f6cbac33b09c9e42de5e1920ab5222207e Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Tue, 20 Oct 2020 11:20:29 +0000 Subject: [PATCH 525/582] 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 086ab952e2..8ddd4efd05 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1349,7 +1349,7 @@ "LabelOpenclDevice": "OpenCL 设备:", "LabelOpenclDeviceHelp": "此 OpenCL 设备用来色调映射。点的左侧为平台号,右侧为此平台上的设备号。默认值为 0.0。需要包含 OpenCL 硬件加速方式的 FFmpeg 应用程序。", "EnableTonemapping": "启用色调映射", - "AllowTonemappingHelp": "色调映射可以将视频的动态范围从 HDR 变换成 SDR,同时保持图像细节与颜色等对于表现原始场景非常重要的信息。目前仅在转码内嵌 HDR10 或 HLG 元数据的视频时工作。如果播放不顺畅或失败,请考虑关闭对应的硬件解码器。", + "AllowTonemappingHelp": "色调映射可以将视频的动态范围从 HDR 变换成 SDR,同时保持图像细节与颜色等对于表现原始场景非常重要的信息。目前仅在转码内嵌 HDR10 或 HLG 元数据的视频时生效。如果播放不顺畅或失败,请考虑关闭对应的硬件解码器。", "LabelTonemappingAlgorithm": "选择要使用的色调映射算法:", "TonemappingAlgorithmHelp": "色调映射可以微调。如果你不是很熟悉这些选项,保持默认即可。建议值为 Reinhard。", "LabelTonemappingRange": "色调映射 Range:", From 57c8cd38d3d7262c4e8e4b24c65b30eb3b0ab19c Mon Sep 17 00:00:00 2001 From: Panopoulos Andreas Date: Wed, 21 Oct 2020 18:09:02 +0000 Subject: [PATCH 526/582] Translated using Weblate (Greek) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/el/ --- src/strings/el.json | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/strings/el.json b/src/strings/el.json index d96bd4146b..0140b0646b 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -42,7 +42,7 @@ "Box": "Κουτί", "Browse": "Αναζήτηση", "MessageBrowsePluginCatalog": "Πλοηγηθείτε στον κατάλογο plugin μας για να δείτε τα διαθέσιμα plugins.", - "BurnSubtitlesHelp": "Καθορίζει αν ο διακομιστής πρέπει να εγγράψει τους υπότιτλους κατά τη μετατροπή βίντεο ανάλογα με τη μορφή των υπότιτλων. Η αποφυγή της εγγραφής στους υπότιτλους θα βελτιώσει την απόδοση του διακομιστή. Επιλέξτε Αυτόματα για να εγγράψετε μορφές βασισμένες σε εικόνες (VOBSUB, PGS, SUB / IDX κ.λπ.) και ορισμένους υπότιτλους ASS / SSA.", + "BurnSubtitlesHelp": "Καθορίζει αν ο διακομιστής πρέπει να εγγράψει τους υπότιτλους κατά τη μετατροπή βίντεο . Η αποφυγή της εγγραφής στους υπότιτλους θα βελτιώσει την απόδοση του διακομιστή. Επιλέξτε Αυτόματα για να εγγράψετε μορφές βασισμένες σε εικόνες (VOBSUB, PGS, SUB / IDX κ.λπ.) και ορισμένους υπότιτλους ASS / SSA.", "ButtonAddMediaLibrary": "Προσθήκη βιβλιοθήκης πολυμέσων", "ButtonAddScheduledTaskTrigger": "Προσθήκη διακόπτη", "ButtonAddServer": "Προσθήκη διακομιστή", @@ -99,7 +99,7 @@ "ColorTransfer": "Μεταφορά χρώματος", "CommunityRating": "Βαθμολογία Κοινότητας", "Composer": "Συνθέτης", - "ConfigureDateAdded": "Ρυθμίστε τη ρύθμιση του τρόπου με τον οποίο προσδιορίζεται η ημερομηνία προσθήκης στον πίνακα ελέγχου του Jellyfin Server στις Ρυθμίσεις βιβλιοθήκης", + "ConfigureDateAdded": "Διαμορφώστε τον τρόπο καθορισμού της ημερομηνίας προσθήκης στον πίνακα ελέγχου στις ρυθμίσεις της βιβλιοθήκης", "ConfirmDeleteImage": "Διαγραφή εικόνας;", "ConfirmDeleteItem": "Η διαγραφή αυτού του στοιχείου θα το διαγράψει τόσο από το σύστημα αρχείων όσο και από τη βιβλιοθήκη πολυμέσων σας. Είστε βέβαιοι ότι θέλετε να συνεχίσετε;", "ConfirmDeleteItems": "Η διαγραφή αυτών των στοιχείων θα τα διαγράψει τόσο από το σύστημα αρχείων όσο και από τη βιβλιοθήκη πολυμέσων σας. Είστε βέβαιοι ότι θέλετε να συνεχίσετε;", @@ -131,7 +131,7 @@ "DeviceAccessHelp": "Αυτό ισχύει μόνο για συσκευές που μπορούν να αναγνωριστούν με μοναδικό τρόπο και δεν θα εμποδίσουν την πρόσβαση του προγράμματος περιήγησης. Το φιλτράρισμα της πρόσβασης των συσκευών χρήστη θα αποτρέψει τη χρήση νέων συσκευών μέχρι να εγκριθούν εδώ.", "DirectPlaying": "Απευθείας Αναπαραγωγή", "DirectStreamHelp1": "το μέσο είναι συμβατό με τη συσκευή σε σχέση με την ανάλυση και τον τύπο μέσου (H.264, AC3 κ.λπ.), αλλά βρίσκεται σε μη συμβατό περιέκτη αρχείων (.mkv, .avi, .wmv, κ.λπ.). Το βίντεο θα ανασυγκροτηθεί εκ νέου, πριν μεταφερθεί στη συσκευή.", - "DirectStreamHelp2": "Η άμεση ροή ενός αρχείου χρησιμοποιεί ελάχιστη ισχύ επεξεργασίας χωρίς απώλεια της ποιότητας του βίντεο.", + "DirectStreamHelp2": "Η άμεση ροή χρησιμοποιεί πολύ μικρή ισχύ επεξεργασίας με ελάχιστη απώλεια ποιότητας βίντεο.", "DirectStreaming": "Απευθείας Αναμετάδοση", "Director": "Σκηνοθέτης", "Directors": "Σκηνοθέτες", @@ -142,25 +142,25 @@ "DisplayInOtherHomeScreenSections": "Εμφάνιση στα τμήματα της αρχικής οθόνης, όπως τα πιο πρόσφατα πολυμέσα και συνεχίστε να παρακολουθείτε", "DisplayMissingEpisodesWithinSeasons": "Εμφάνιση επεισοδίων που λείπουν από την σαιζόν", "DisplayMissingEpisodesWithinSeasonsHelp": "Αυτό πρέπει επίσης να είναι ενεργοποιημένο για τις βιβλιοθήκες τηλεόρασης στην ρύθμιση του σέρβερ.", - "DisplayModeHelp": "Επιλέξτε τον τύπο οθόνης στον οποίο εκτελείτε το Jellyfin.", + "DisplayModeHelp": "Επιλέξτε το στυλ διάταξης που θέλετε για τη διεπαφή.", "DoNotRecord": "Μην εγγράψεις", "Down": "Κάτω", "Download": "Λήψη", "DownloadsValue": "Λήψεις: {0}", "DropShadow": "Σκίαση", - "EasyPasswordHelp": "Ο εύκολος κωδικός PIN χρησιμοποιείται για πρόσβαση χωρίς σύνδεση με υποστηριζόμενες εφαρμογές Jellyfin και μπορεί επίσης να χρησιμοποιηθεί για εύκολη είσοδο στο δίκτυο.", + "EasyPasswordHelp": "Ο εύκολος κωδικός pin σας χρησιμοποιείται για πρόσβαση εκτός σύνδεσης σε υποστηριζόμενους πελάτες και μπορεί επίσης να χρησιμοποιηθεί για εύκολη σύνδεση στο δίκτυο.", "Edit": "Επεξεργασία", "EditImages": "Επεξεργασία εικόνων", "EditMetadata": "Επεξεργασία μεταδεδομένων", "EditSubtitles": "Επεξεργασία υποτίτλων", "EnableBackdropsHelp": "Eμφάνιση φόντων στο παρασκήνιο ορισμένων σελίδων κατά την περιήγηση στη βιβλιοθήκη.", "EnableCinemaMode": "Λειτουργία Κινηματογράφου", - "EnableColorCodedBackgrounds": "Ενεργοποιήστε τα έγχρωμα κωδικοποιημένα φόντα", - "EnableDisplayMirroring": "Ενεργοποίηση του κατοπτρισμού εμφάνισης", - "EnableExternalVideoPlayers": "Εξωτερικά players για βίντεο", + "EnableColorCodedBackgrounds": "Έγχρωμα κωδικοποιημένα φόντα", + "EnableDisplayMirroring": "αντικατοπτρισμός οθόνης", + "EnableExternalVideoPlayers": "Εξωτερικά προγράμματα αναπαραγωγής βίντεο", "EnableExternalVideoPlayersHelp": "Ένα εξωτερικό μενού αναπαραγωγής θα εμφανιστεί κατά την εκκίνηση της αναπαραγωγής βίντεο.", "EnableHardwareEncoding": "Ενεργοποίηση αποκωδικοποίησης υλικού", - "EnableNextVideoInfoOverlay": "Ενεργοποιήστε τις επόμενες πληροφορίες βίντεο κατά την αναπαραγωγή", + "EnableNextVideoInfoOverlay": "Εμφάνιση πληροφοριών επόμενου βίντεο κατά την αναπαραγωγή", "EnableNextVideoInfoOverlayHelp": "Στο τέλος ενός βίντεο, εμφανίστε πληροφορίες σχετικά με το επόμενο βίντεο που εμφανίζεται στην τρέχουσα λίστα αναπαραγωγής.", "EnableThemeSongsHelp": "Αν είναι ενεργοποιημένη, τα τραγούδια θεμάτων θα αναπαραχθούν στο παρασκήνιο κατά την περιήγηση στη βιβλιοθήκη.", "EnableThemeVideosHelp": "Αν είναι ενεργοποιημένη, τα βίντεο θεμάτων θα αναπαραχθούν στο παρασκήνιο κατά την περιήγηση στη βιβλιοθήκη.", @@ -1051,5 +1051,10 @@ "ClientSettings": "Ρυθμίσεις πελάτη", "ChangingMetadataImageSettingsNewContent": "Οι αλλαγές στις ρυθμίσεις λήψης μεταδεδομένων ή εικόνων θα εφαρμοστούν μόνο στο νέο περιεχόμενο που προστίθεται στη βιβλιοθήκη σας. Για να εφαρμόσετε τις αλλαγές στους υπάρχοντες τίτλους, θα πρέπει να ανανεώσετε τα μεταδεδομένα τους χειροκίνητα.", "ButtonActivate": "Ενεργοποίηση", - "Authorize": "Εξουσιοδότηση" + "Authorize": "Εξουσιοδότηση", + "EnableQuickConnect": "Ενεργοποιήστε τη γρήγορη σύνδεση σε αυτόν τον διακομιστή", + "EnableDecodingColorDepth10Vp9": "Ενεργοποίηση αποκωδικοποίησης υλικού 10-bit για το VP9", + "EnableDecodingColorDepth10Hevc": "Ενεργοποίηση αποκωδικοποίησης υλικού 10-bit για HEVC", + "EnableAutoCast": "Ορίσετε ως προεπιλογή", + "ButtonUseQuickConnect": "Χρήση γρήγορης σύνδεσης" } From 2ec0f9e153b8839bd46960c25e713e0475aefd55 Mon Sep 17 00:00:00 2001 From: Dmitriy Bezmelnitsin Date: Wed, 21 Oct 2020 20:52:02 +0000 Subject: [PATCH 527/582] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index b8566fc82a..b7da6f581c 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1409,5 +1409,6 @@ "EnableAutoCast": "Задать по умолчанию", "ButtonUseQuickConnect": "Использовать Quick Connect", "ButtonActivate": "Активация", - "Authorize": "Авторизация" + "Authorize": "Авторизация", + "LabelUserMaxActiveSessions": "Максимальное количество одновременных пользовательских сессий:" } From d8f8f417a371e9bf309f4d326e1188372a46ff47 Mon Sep 17 00:00:00 2001 From: sHa Date: Thu, 22 Oct 2020 07:46:17 +0000 Subject: [PATCH 528/582] Translated using Weblate (Ukrainian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/uk/ --- src/strings/uk.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/strings/uk.json b/src/strings/uk.json index 75bee799e4..31745557ca 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -229,7 +229,7 @@ "ErrorDefault": "Виникла помилка при обробці запиту. Будь-ласка повторіть пізніше.", "DatePlayed": "Дата програвання", "DateAdded": "Дата додана", - "Default": "За замовчуванням", + "Default": "Типово", "Delete": "Видалити", "DeleteImage": "Видалити зображення", "DeleteMedia": "Видалити медіа", @@ -241,5 +241,9 @@ "Directors": "Режисери", "Disc": "Диск", "Display": "Дисплей", - "Disconnect": "Відключити" + "Disconnect": "Відключити", + "DeleteImageConfirmation": "Ви впевнені, що хочете видалити це зображення?", + "DeleteDeviceConfirmation": "Ви впевнені, що хочете видалити цей пристрій? Він з’явиться наступного разу, коли користувач увійде.", + "ButtonActivate": "Активувати", + "Authorize": "Авторизувати" } From 3bd06ea5b3a29edf5be43afc11053dc5f6882578 Mon Sep 17 00:00:00 2001 From: sHa Date: Thu, 22 Oct 2020 07:50:30 +0000 Subject: [PATCH 529/582] Translated using Weblate (Ukrainian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/uk/ --- src/strings/uk.json | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/strings/uk.json b/src/strings/uk.json index 31745557ca..3156bdc995 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -225,7 +225,7 @@ "Download": "Завантажити", "Down": "Вниз", "DoNotRecord": "Не записувати", - "Depressed": "Подавлений", + "Depressed": "Пригнічений", "ErrorDefault": "Виникла помилка при обробці запиту. Будь-ласка повторіть пізніше.", "DatePlayed": "Дата програвання", "DateAdded": "Дата додана", @@ -234,7 +234,7 @@ "DeleteImage": "Видалити зображення", "DeleteMedia": "Видалити медіа", "DeleteUser": "Видалити користувача", - "Desktop": "Робочий стіл", + "Desktop": "Стільниця", "DetectingDevices": "Виявлення пристроїв", "DirectStreaming": "Пряме мовлення", "Director": "Режисер", @@ -245,5 +245,12 @@ "DeleteImageConfirmation": "Ви впевнені, що хочете видалити це зображення?", "DeleteDeviceConfirmation": "Ви впевнені, що хочете видалити цей пристрій? Він з’явиться наступного разу, коли користувач увійде.", "ButtonActivate": "Активувати", - "Authorize": "Авторизувати" + "Authorize": "Авторизувати", + "EndsAtValue": "Завершиться о {0}", + "EnableAutoCast": "Встановити як типовий", + "DisplayMissingEpisodesWithinSeasons": "Відображати відсутні серії сезону", + "DirectPlaying": "Пряме відтворення", + "DisplayInMyMedia": "Відображення на головному екрані", + "Descending": "За спаданням", + "DeleteUserConfirmation": "Ви впевнені, що хочете видалити цього користувача?" } From 014a97ef97c8f413e00ed76ed8f8f0080c7c18cd Mon Sep 17 00:00:00 2001 From: sHa Date: Thu, 22 Oct 2020 11:36:01 +0000 Subject: [PATCH 530/582] Translated using Weblate (Ukrainian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/uk/ --- src/strings/uk.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/strings/uk.json b/src/strings/uk.json index 3156bdc995..e740d5afe6 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -252,5 +252,14 @@ "DirectPlaying": "Пряме відтворення", "DisplayInMyMedia": "Відображення на головному екрані", "Descending": "За спаданням", - "DeleteUserConfirmation": "Ви впевнені, що хочете видалити цього користувача?" + "DeleteUserConfirmation": "Ви впевнені, що хочете видалити цього користувача?", + "HeaderAddToCollection": "Додати до колекції", + "HeaderActivity": "Активність", + "Other": "Інше", + "Genre": "Жанр", + "Friday": "П'ятниця", + "FormatValue": "Формат: {0}", + "Filters": "Фільтри", + "FileNotFound": "Файл не знайдено.", + "File": "Файл" } From d43913ad0245768fa803e6bd62f1f4e2f52fcbda Mon Sep 17 00:00:00 2001 From: SHALMON ANANDAS Date: Fri, 23 Oct 2020 02:57:46 +0000 Subject: [PATCH 531/582] Translated using Weblate (Hindi) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hi/ --- src/strings/hi-in.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index 5e26c9ad69..2095c3a642 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -24,7 +24,7 @@ "AllComplexFormats": "सभी जटिल प्रारूप (ASS, SSA, VOBSUB, PGS, SUB, IDX,…)", "AllChannels": "सभी चैनल्स", "Alerts": "चेतावनियां", - "Albums": "संग्रहिकाएँ", + "Albums": "आल्बुम्", "Aired": "प्रसारित हो चुका", "AdditionalNotificationServices": "अतिरिक्त सूचना सेवाओं को स्थापित करने के लिए प्लगइन सूची पर नज़र डालें।", "AddedOnValue": "जोड़ दिया", From b0df7fc6bf966156d8244b23ec0dae7ed20825f1 Mon Sep 17 00:00:00 2001 From: Pietro Iuliano Date: Thu, 22 Oct 2020 22:55:24 +0000 Subject: [PATCH 532/582] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index 365e3b0b9d..b900a79d52 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1401,5 +1401,15 @@ "OptionMaxActiveSessionsHelp": "Il valore 0 disabilita la funzionalità.", "OptionMaxActiveSessions": "Imposta il numero massimo di connessioni utente simultanee.", "LabelUserMaxActiveSessions": "Numero massimo di sessioni utente contemporanee:", - "EnableAutoCast": "Imposta come Default" + "EnableAutoCast": "Imposta come Default", + "LabelTonemappingDesat": "Desaturazione appatura dei toni:", + "TonemappingRangeHelp": "Seleziona l'intervallo di colore in uscita. Auto imposta lo stesso del valore di entrata.", + "LabelTonemappingRange": "Intervallo mappatura dei toni:", + "TonemappingAlgorithmHelp": "La mappatura dei toni può essere messa a punto. Se non sei abbastanza familiare con queste opzioni, lascia quelle predefinite. Il valore raccomandato è Reinhard.", + "AllowTonemappingHelp": "La mappatura dei toni può trasformare l'intervallo dinamico di un video da HDR a SDR mantenendo dettaglio e colori dell'immagine, i quali sono informazioni molto importanti per rappresentare la scena originale. Attualmente funziona solo quando vengono transcodificati video con HDR10 o metadati HLG incorporati. Se la riproduzione non è fluida o fallisce, considera la possibilità di disattivare il corrispondente decoder hardware.", + "LabelOpenclDeviceHelp": "Questo è il dispositivo OpenCL utilizzato per la mappatura dei toni. Il lato sinistro del punto è il numero di piattaforma, mentre la parte destra è il numero del dispositivo sulla piattaforma. Il valore base è 0.0. Il file di applicazione ffmpeg contenente il metodo di accelerazione hardware OpenCL è richiesto.", + "LabelColorPrimaries": "Primari colore:", + "LabelColorTransfer": "Trasferimento colore:", + "MediaInfoColorPrimaries": "Colori primari", + "MediaInfoColorTransfer": "Trasferimento colore" } From 31683efea99e7d05b598f78703081f1b1baf0e5d Mon Sep 17 00:00:00 2001 From: Gubb Jonas Date: Fri, 23 Oct 2020 18:08:45 +0000 Subject: [PATCH 533/582] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 5b10629318..6c1dcdcfcc 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -1376,5 +1376,7 @@ "QuickConnect": "Snabbanslutning", "Profile": "Profil", "PreviousTrack": "Hoppa över till föregående", - "MessageGetInstalledPluginsError": "Ett fel inträffade när listan över installerade tillägg skulle hämtas." + "MessageGetInstalledPluginsError": "Ett fel inträffade när listan över installerade tillägg skulle hämtas.", + "QuickConnectInvalidCode": "Ogiltig Snabbanslutningskod", + "QuickConnectDescription": "För att logga in med snabbanslutning, klicka på Snabbanslutning-knappen på den enhet du loggar in från, och ange koden som visas nedan." } From 6ca5d0b7d7cd29e2faf81b1b442b86d329c4e2bf Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Sat, 24 Oct 2020 05:13:39 +0000 Subject: [PATCH 534/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index dab49184dd..42bbe3b3f1 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -34,8 +34,8 @@ "LabelName": "Tên:", "LabelNewPassword": "Mật khẩu mới:", "LabelNewPasswordConfirm": "Xác nhận mật khẩu mới:", - "LabelSaveLocalMetadata": "Lưu các ảnh bìa phim và dữ liệu mô tả vào trong các thư mục phương tiện", - "LabelSaveLocalMetadataHelp": "Lưu ảnh bìa phim vào trong các thư mục phương tiện, sẽ đưa chúng vào một nơi có thể chỉnh sửa dễ dàng hơn.", + "LabelSaveLocalMetadata": "Lưu các ảnh bìa minh họa và dữ liệu mô tả vào trong các thư mục phương tiện", + "LabelSaveLocalMetadataHelp": "Lưu ảnh bìa minh họa vào các thư mục phương tiện giúp đưa chúng vào một nơi dễ chỉnh sửa hơn.", "LabelTime": "Thời gian:", "LabelYoureDone": "Bạn đã hoàn thành!", "MaxParentalRatingHelp": "Nội dung với đánh giá cao hơn sẽ được ẩn đi từ người dùng này.", @@ -200,7 +200,7 @@ "Channels": "Các Kênh", "ChannelNameOnly": "Chỉ kênh {0}", "ChannelAccessHelp": "Chọn những kênh để chia vẻ với người dùng này. Người quản lý sẽ có thể thay đổi toàn bộ kênh bằng cách sử dụng bộ quản lý thông tin.", - "ChangingMetadataImageSettingsNewContent": "Thay đổi về thiết lập của việc tải thông tin hoặc hình ảnh sẽ chỉ có tác dụng với những nội dung mới được thêm vào thư viện. Để những thiết lập mới có tác dụng với nội dung đã có sẵn, bạn sẽ phải cập nhật lại thông tin của chúng.", + "ChangingMetadataImageSettingsNewContent": "Thay đổi cài đặt tải xuống dữ liệu mô tả hoặc ảnh bìa minh họa chỉ áp dụng với nội dung mới thêm vào thư viện. Để áp dụng thay đổi đến các tiêu đề hiện có, bạn cần phải làm mới dữ liệu mô tả của chúng theo cách thủ công.", "CancelSeries": "Hủy loạt phim", "ButtonTogglePlaylist": "Danh sách phát", "BoxSet": "Tuyển tập", @@ -684,7 +684,7 @@ "LabelMetadataSavers": "Lưu Dữ liệu Mô Tả Dưới Dạng:", "LabelMetadataReadersHelp": "Sắp xếp thứ tự ưu tiên những dữ liệu mô tả cục bộ. Tập tin đầu tiên được tìm thấy sẽ được đọc.", "LabelMetadataReaders": "Trình đọc dữ liệu mô tả:", - "LabelMetadataPathHelp": "Chọn một đường dẫn để tải xuống hình ảnh và dữ liệu mô tả.", + "LabelMetadataPathHelp": "Chọn một vị trí tải xuống ảnh bìa minh họa và dữ liệu mô tả.", "LabelMetadataPath": "Đường dẫn dữ liệu mô tả:", "LabelMetadataDownloadersHelp": "Kích hoạt và sắp xếp thứ tự ưu tiên của các trình tải dữ liệu mô tả. Trình tải có thứ tự ưu tiên thấp sẽ chỉ sử dụng để tải những thông tin bị thiếu.", "LabelMetadataDownloadLanguage": "Ngôn ngữ tải ưu tiên:", @@ -1192,7 +1192,7 @@ "SearchResults": "Kết Quả Tìm Kiếm", "SearchForSubtitles": "Tìm kiếm phụ đề", "SearchForMissingMetadata": "Tìm kiếm dữ liệu mô tả bị thiếu", - "SearchForCollectionInternetMetadata": "Tìm kiếm ảnh bìa phim và dữ liệu mô tả trên Internet", + "SearchForCollectionInternetMetadata": "Tìm kiếm ảnh bìa minh họa và dữ liệu mô tả qua Internet", "Search": "Tìm Kiếm", "Screenshots": "Ảnh chụp màn hình", "Screenshot": "Ảnh chụp màn hình", From feccf1bbe1c2dbd653f1261fae29f1cc6b49fb0a Mon Sep 17 00:00:00 2001 From: minob Date: Sat, 24 Oct 2020 13:24:34 +0000 Subject: [PATCH 535/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 3b8ec22b10..d0cf257c86 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -948,7 +948,7 @@ "AlbumArtist": "アルバム アーティスト", "Album": "アルバム", "ButtonSyncPlay": "SyncPlay", - "DeinterlaceMethodHelp": "インターレースコンテンツをトランスコードする際に使用するデインターレース方式を選びます。", + "DeinterlaceMethodHelp": "インターレースコンテンツをソフトウェアでトランスコードする際に使用するデインターレース方式を選びます。 ハードウェアデインタレースをサポートしているハードウェアアクセラレーションが有効な場合はこの設定でなくハードウェアデインタレースを使用します。", "ButtonTogglePlaylist": "プレイリスト", "BoxSet": "ボックスセット", "AllowFfmpegThrottlingHelp": "トランスコードや remux が現在の再生位置から十分に先に進んだ場合、処理を一時停止してリソースの消費を抑えます。これは、あまり早送り・早戻しをしないで視聴する場合に便利です。再生に問題が発生した場合は、この機能をオフにしてください。", @@ -1098,5 +1098,13 @@ "LabelMaxParentalRating": "最大許容ペアレントレイティング:", "LabelKodiMetadataEnablePathSubstitutionHelp": "サーバーのパス補完を使った画像パスの補完を有効にする。", "ButtonActivate": "アクティベート", - "Authorize": "承認" + "Authorize": "承認", + "LabelAlbumArtMaxResHelp": "upnp:albumArtURIプロパティで使用されるアルバムアートの最大解像度。", + "KnownProxiesHelp": "Jellyfinインスタンスへ接続するとき使用されるコンマで区切られた既知のプロキシのIPアドレスリスト。X-Forwarded-Forヘッダを適切に使用するため必要となります。保存後に再起動が必要です。", + "Image": "画像", + "Other": "その他", + "EnableQuickConnect": "このサーバへのクイックコネクトを有効化", + "EnableAutoCast": "デフォルトとして設定", + "Data": "データ", + "ButtonUseQuickConnect": "クイックコネクトを使用" } From 04d70c3551ebc9d1f62f49d89b9fecdf0f1c0f08 Mon Sep 17 00:00:00 2001 From: minob Date: Sat, 24 Oct 2020 14:31:36 +0000 Subject: [PATCH 536/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index d0cf257c86..5a96a3ecda 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1106,5 +1106,10 @@ "EnableQuickConnect": "このサーバへのクイックコネクトを有効化", "EnableAutoCast": "デフォルトとして設定", "Data": "データ", - "ButtonUseQuickConnect": "クイックコネクトを使用" + "ButtonUseQuickConnect": "クイックコネクトを使用", + "LabelRecordingPathHelp": "デフォルトの録画保存先を指定します。空白にした場合、サーバーのプログラムデータフォルダを使用します。", + "LabelQuickConnectCode": "クイックコネクトコード:", + "LabelKnownProxies": "既知のプロキシ:", + "LabelIconMaxResHelp": "upnp:iconプロパティで使用されるアイコンの最大解像度。", + "LabelCurrentStatus": "現在の状態:" } From 4fbdcb301c35a27d248435ba7898368d6eff4b2c Mon Sep 17 00:00:00 2001 From: Carlos Romani Date: Sat, 24 Oct 2020 22:16:29 +0000 Subject: [PATCH 537/582] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index fa9334ada9..632e2d5d8c 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -589,7 +589,7 @@ "MessageUnableToConnectToServer": "Não foi possível estabelecer ligação ao servidor. Por favor, certifique-se que o servidor está a correr e tente de novo.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "As seguintes pastas multimédia serão removidas da Biblioteca:", "MessageReenableUser": "Veja abaixo como reactivar", - "MessagePluginInstallDisclaimer": "As extensões desenvolvidas pela comunidade Jellyfin adicionam novas funcionalidades e benefícios, sendo uma óptima forma de extender a experiência de utilização do Jellyfin. Antes de instalar uma extensão, considere os impactos que pode ter no Servidor Jellyfin, como tempos de actualização da Biblioteca mais longos, adicional processamento em segundo plano e reduzida estabilidade do sistema.", + "MessagePluginInstallDisclaimer": "As extensões desenvolvidas pela comunidade Jellyfin adicionam novas funcionalidades e benefícios, sendo uma ótima forma de estender a experiência de utilização do Jellyfin. Antes de instalar uma extensão, considere os impactos que pode ter no Servidor Jellyfin, como tempos de atualização da Biblioteca mais longos, adicional processamento em segundo plano e reduzida estabilidade do sistema.", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar esta extensão, inicie sessão localmente no servidor.", "MessagePleaseEnsureInternetMetadata": "Certifique-se que a transferência de metadados da Internet está activada.", "MessagePasswordResetForUsers": "As palavras-passe dos utilizadores abaixo foram repostas. Deverão utilizar o PIN de reposição de palavra-passe para fazer login.", @@ -773,8 +773,8 @@ "Disc": "Disco", "Directors": "Realização", "Director": "Realizador", - "DirectStreaming": "Reprodução directa", - "DirectStreamHelp2": "A reprodução directa de um ficheiro requer pouco processamento e não implica perda de qualidade num vídeo.", + "DirectStreaming": "Reprodução direta", + "DirectStreamHelp2": "O fluxo direto usa muito pouco poder de processamento com uma perda mínima na qualidade do vídeo.", "DirectStreamHelp1": "O tipo de multimídia (H.264, AC3, etc.) e a sua resolução são compatíveis com o dispositivo, no entanto, o formato (mkv, avi, wmv, etc.) não é. O conteúdo sera reempacotado em tempo real antes de ser enviado para o dispositivo.", "DirectPlaying": "Reprodução directa", "DeviceAccessHelp": "Apenas se aplica a dispositivos que podem ser identificados como únicos e que não impedem o acesso ao navegador. Filtrar o acesso a dispositivos a um utilizador, impede-o de utilizar novos dispositivos, até estes serem aprovados aqui.", @@ -947,7 +947,7 @@ "AddToCollection": "Adicionar à coleção", "Add": "Adicionar", "Actor": "Ator", - "AccessRestrictedTryAgainLater": "O acesso está atualmente restrito. Por favor, tente mais tarde.", + "AccessRestrictedTryAgainLater": "O acesso está atualmente restrito. Por favor, tente novamente mais tarde.", "Absolute": "Absoluto", "AlwaysPlaySubtitlesHelp": "As legendas correspondentes à preferência de idioma serão carregadas, independentemente do idioma do áudio.", "SearchForMissingMetadata": "Procurar metadados ausentes", @@ -1203,5 +1203,11 @@ "Data": "Dados", "ButtonUseQuickConnect": "Usar conexão rápida", "ButtonActivate": "Ativar", - "Authorize": "Autorizar" + "Authorize": "Autorizar", + "EnableDetailsBannerHelp": "Exibir banner no topo da página de detalhes do item.", + "EnableDetailsBanner": "Banner de Detalhes", + "EnableQuickConnect": "Ativar conexão rápida neste servidor", + "EnableDecodingColorDepth10Vp9": "Habilitar decodificação de hardware de 10 bits para VP9", + "EnableDecodingColorDepth10Hevc": "Habilitar decodificação de hardware de 10 bits para HEVC", + "EnableAutoCast": "Definir como padrão" } From 8bccf305314b505969de9399a0642f7461aeeba2 Mon Sep 17 00:00:00 2001 From: minob Date: Sun, 25 Oct 2020 01:55:31 +0000 Subject: [PATCH 538/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 5a96a3ecda..d18d09ade1 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -842,7 +842,7 @@ "MessageConfirmDeleteGuideProvider": "本当にこのガイドプロバイダーを削除しますか?", "MessageConfirmDeleteTunerDevice": "本当にこのデバイスを削除しますか?", "MessageConfirmRecordingCancellation": "録画を停止しますか?", - "MessageConfirmRestart": "本当にこのJekkyfinサーバーを再起動しますか?", + "MessageConfirmRestart": "本当にJellyfinを再起動しますか?", "MessageConfirmShutdown": "本当にこのサーバーをシャットダウンしますか?", "MessageDeleteTaskTrigger": "本当にこのタスクトリガーを削除しますか?", "MessageNoAvailablePlugins": "利用可能なプラグインはありません。", @@ -948,7 +948,7 @@ "AlbumArtist": "アルバム アーティスト", "Album": "アルバム", "ButtonSyncPlay": "SyncPlay", - "DeinterlaceMethodHelp": "インターレースコンテンツをソフトウェアでトランスコードする際に使用するデインターレース方式を選びます。 ハードウェアデインタレースをサポートしているハードウェアアクセラレーションが有効な場合はこの設定でなくハードウェアデインタレースを使用します。", + "DeinterlaceMethodHelp": "インターレースコンテンツをソフトウェアでトランスコードする際に使用するデインターレース方式を選びます。 ハードウェアデインターレースをサポートしているハードウェアアクセラレーションが有効な場合はこの設定でなくハードウェアデインターレースを使用します。", "ButtonTogglePlaylist": "プレイリスト", "BoxSet": "ボックスセット", "AllowFfmpegThrottlingHelp": "トランスコードや remux が現在の再生位置から十分に先に進んだ場合、処理を一時停止してリソースの消費を抑えます。これは、あまり早送り・早戻しをしないで視聴する場合に便利です。再生に問題が発生した場合は、この機能をオフにしてください。", @@ -1111,5 +1111,29 @@ "LabelQuickConnectCode": "クイックコネクトコード:", "LabelKnownProxies": "既知のプロキシ:", "LabelIconMaxResHelp": "upnp:iconプロパティで使用されるアイコンの最大解像度。", - "LabelCurrentStatus": "現在の状態:" + "LabelCurrentStatus": "現在の状態:", + "MessageConfirmRevokeApiKey": "本当にこのAPI キーを取り消してよろしいですか?アプリケーションによるサーバー接続が突然終了します。", + "MessageConfirmRemoveMediaLocation": "本当にこのロケーションを削除してよろしいですか?", + "MessageConfirmAppExit": "終了しますか?", + "MediaIsBeingConverted": "再生中のデバイスに対応するフォーマットへメディアの変換を開始しました。", + "MediaInfoRefFrames": "参照フレーム", + "MediaInfoInterlaced": "インターレース", + "MediaInfoForced": "強制", + "MediaInfoContainer": "コンテナ", + "MaxParentalRatingHelp": "高いレイティングのコンテンツをユーザーから隠します。", + "LibraryAccessHelp": "ユーザーと共有するライブラリを選択してください。管理者はメタデータマネージャを使用してすべてのフォルダーを編集できます。", + "LanNetworksHelp": "帯域制限を設ける際にローカルネットワークと見なすIPアドレスまたはIP/ネットマスクのコンマで分割されるリストです。設定されている場合、他のすべてのIPアドレスは外部ネットワークと見なされて外部帯域制限の対象となります。空白の場合、サーバーのサブネットのみがローカルネットワークと見なされます。", + "LabelXDlnaDocHelp": "urn:schemas-dlna-org:device-1-0 ネームスペース内のX_DLNADOC エレメントのコンテンツを決定します。", + "LabelXDlnaCapHelp": "urn:schemas-dlna-org:device-1-0 ネームスペース内のX_DLNACAP エレメントのコンテンツを決定します。", + "LabelVaapiDeviceHelp": "ハードウェアアクセラレーションに使用されるレンダーノードです。", + "LabelUserMaxActiveSessions": "同時ユーザーセッション数の最大:", + "LabelTranscodingThreadCountHelp": "トランスコードで使用する最大スレッド数を選択します。スレッド数を減らすとCPU使用率が下がりますがスムーズに再生できる変換速度ではなくなるかもしれません。", + "LabelTranscodingTempPathHelp": "クライアントへ提供するトランスコードファイルのカスタムパスを指定します。空白にした場合はサーバのデフォルトを使用します。", + "LabelSonyAggregationFlagsHelp": "urn:schemas-sonycom:av ネームスペース内のaggregationFlags エレメントのコンテンツを決定します。", + "LabelSkipIfGraphicalSubsPresentHelp": "テキストバージョンの字幕を維持することで配信が効率的になりビデオをトランスコードする可能性も減ります。", + "LabelSkipIfAudioTrackPresentHelp": "チェックを外すと音声言語に関係なくすべてのビデオで字幕を確認します。", + "LabelSelectFolderGroupsHelp": "チェックのないフォルダはそのまま表示されます。", + "LabelSelectFolderGroups": "以下のフォルダ内のコンテンツをムービー、ミュージック、TVのビューへ自動的にグループ化します:", + "LabelSaveLocalMetadataHelp": "保存したアートワークをメディアフォルダーに置くことで簡単に編集できるようになります。", + "LabelRemoteClientBitrateLimitHelp": "すべての外部ネットワークデバイスにストリームごとのビットレート制限を設定します。あなたのインターネット接続で処理できる以上のビットレートを要求するデバイスを防ぐのに便利です。低ビットレートで動画をトランスコードするためにCPU負荷が増加する可能性があります。" } From d86d3363c6835ac4d08f9e6f015b8b229f9213da Mon Sep 17 00:00:00 2001 From: minob Date: Sun, 25 Oct 2020 06:41:55 +0000 Subject: [PATCH 539/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index d18d09ade1..34c2208cd9 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -546,7 +546,7 @@ "LabelParentalRating": "個人評価:", "LabelPassword": "パスワード:", "LabelPasswordConfirm": "パスワード (確認):", - "LabelPasswordRecoveryPinCode": "ピンコード:", + "LabelPasswordRecoveryPinCode": "PINコード:", "LabelPath": "パス:", "LabelPersonRole": "役割:", "LabelSortOrder": "並び順:", @@ -591,8 +591,8 @@ "OptionWeekends": "休日", "Overview": "概要", "PasswordResetComplete": "パスワードは再設定されました。", - "PinCodeResetComplete": "ピンコードが再設定されました。", - "PinCodeResetConfirmation": "本当にピンコードを再設定しますか?", + "PinCodeResetComplete": "PINコードが再設定されました。", + "PinCodeResetConfirmation": "本当にPINコードを再設定しますか?", "PleaseRestartServerName": "Jellyfinサーバーを再起動してください - {0}。", "OptionEveryday": "毎日", "Premieres": "初日", @@ -750,7 +750,7 @@ "LabelForgotPasswordUsernameHelp": "ユーザー名を覚えていたら入力してください。", "LabelFormat": "フォーマット:", "LabelDropImageHere": "画像を個々にドロップするか検索する。", - "LabelEasyPinCode": "イージーピンコード:", + "LabelEasyPinCode": "簡単なPINコード:", "LabelManufacturerUrl": "製作社のURL:", "LabelHomeScreenSectionValue": "ホームスクリーンセクション {0}:", "LabelHttpsPort": "ローカルHTTPSポート番号:", @@ -1135,5 +1135,15 @@ "LabelSelectFolderGroupsHelp": "チェックのないフォルダはそのまま表示されます。", "LabelSelectFolderGroups": "以下のフォルダ内のコンテンツをムービー、ミュージック、TVのビューへ自動的にグループ化します:", "LabelSaveLocalMetadataHelp": "保存したアートワークをメディアフォルダーに置くことで簡単に編集できるようになります。", - "LabelRemoteClientBitrateLimitHelp": "すべての外部ネットワークデバイスにストリームごとのビットレート制限を設定します。あなたのインターネット接続で処理できる以上のビットレートを要求するデバイスを防ぐのに便利です。低ビットレートで動画をトランスコードするためにCPU負荷が増加する可能性があります。" + "LabelRemoteClientBitrateLimitHelp": "すべての外部ネットワークデバイスにストリームごとのビットレート制限を設定します。あなたのインターネット接続で処理できる以上のビットレートを要求するデバイスを防ぐのに便利です。低ビットレートで動画をトランスコードするためにCPU負荷が増加する可能性があります。", + "MessageLeaveEmptyToInherit": "空白の場合は親アイテムかグローバルのデフォルト値の設定を継承します。", + "MessageInvalidForgotPasswordPin": "無効か期限切れのPINコードが入力されました。もう一度やり直してください。", + "MessageImageTypeNotSelected": "ドロップダウンメニューから画像タイプを選択してください。", + "MessageForgotPasswordInNetworkRequired": "パスワードのリセットをすすめるにはホームネットワーク上でもう一度やり直してください。", + "MessageForgotPasswordFileCreated": "手順の説明が記載された以下のファイルがサーバ上に作成されました:", + "MessageFileReadError": "ファイルの読み込みでエラーが発生しました。もう一度やり直してください。", + "MessageEnablingOptionLongerScans": "このオプションを有効にするとライブラリのスキャンが大幅に長くなる可能性があります。", + "MessageDirectoryPickerLinuxInstruction": "LinuxのArch Linux、CentOS、Debian、Fedora、openSUSE、Ubuntuではサービスユーザーにストレージの場所への読み取り権限が最低限必要となります。", + "MessageDirectoryPickerBSDInstruction": "BSDでは、メディアへアクセスできるようにするためFreeNAS Jail にストレージを設定する必要があるかもしれません。", + "MessageCreateAccountAt": "アカウントを作成 {0}" } From d9655263322fc2a734e828a8be999c5180a11fb0 Mon Sep 17 00:00:00 2001 From: minob Date: Sun, 25 Oct 2020 07:38:53 +0000 Subject: [PATCH 540/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 34c2208cd9..071d54bb3d 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1145,5 +1145,12 @@ "MessageEnablingOptionLongerScans": "このオプションを有効にするとライブラリのスキャンが大幅に長くなる可能性があります。", "MessageDirectoryPickerLinuxInstruction": "LinuxのArch Linux、CentOS、Debian、Fedora、openSUSE、Ubuntuではサービスユーザーにストレージの場所への読み取り権限が最低限必要となります。", "MessageDirectoryPickerBSDInstruction": "BSDでは、メディアへアクセスできるようにするためFreeNAS Jail にストレージを設定する必要があるかもしれません。", - "MessageCreateAccountAt": "アカウントを作成 {0}" + "MessageCreateAccountAt": "アカウントを作成 {0}", + "MessageAddRepository": "リポジトリを追加したい場合、ヘッダーの横にあるボタンをクリックして要求された情報を入力してください。", + "LabelRepositoryNameHelp": "サーバーに追加された他のリポジトリと区別するための名前。", + "LabelRepositoryName": "リポジトリの名前", + "LabelRepositoryUrlHelp": "あなたが含めたいリポジトリマニフェストの場所。", + "LabelRepositoryUrl": "リポジトリのURL", + "HeaderNewRepository": "新しいリポジトリ", + "MessageNoRepositories": "リポジトリはありません。" } From a134b73ff1dce4a001dbd3ef5eca5ff49cff5dc9 Mon Sep 17 00:00:00 2001 From: minob Date: Sun, 25 Oct 2020 07:54:04 +0000 Subject: [PATCH 541/582] 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, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 071d54bb3d..638351ad1e 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1152,5 +1152,7 @@ "LabelRepositoryUrlHelp": "あなたが含めたいリポジトリマニフェストの場所。", "LabelRepositoryUrl": "リポジトリのURL", "HeaderNewRepository": "新しいリポジトリ", - "MessageNoRepositories": "リポジトリはありません。" + "MessageNoRepositories": "リポジトリはありません。", + "MessageNoGenresAvailable": "一部のメタデータプロバイダでインターネットからのジャンル取得を有効化します。", + "MessageNoCollectionsAvailable": "コレクションによりムービー、シリーズ、アルバムを個人的にグループ化して楽しむことができます。 + ボタンをクリックするとコレクションの作成を始めます。" } From d99a782c7b5973c29444a069a871efa7632213e1 Mon Sep 17 00:00:00 2001 From: minob Date: Sun, 25 Oct 2020 08:08:25 +0000 Subject: [PATCH 542/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 638351ad1e..c0877a5ddc 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -102,7 +102,7 @@ "CancelSeries": "中止したシリーズ", "Categories": "カテゴリ", "ChangingMetadataImageSettingsNewContent": "メタデータまたはアートワークのダウンロード設定に対する変更は、ライブラリに追加された新しいコンテンツにのみ適用されます。 既存のタイトルに変更を適用するには、それらのメタデータを手動で更新する必要があります。", - "ChannelAccessHelp": "ユーザーと共有するチャンネルを選択してください。管理者はメタデータマネージャを使用してすべてのチャンネルを編集できます。", + "ChannelAccessHelp": "ユーザーと共有するチャンネルを選択してください。管理者はメタデータマネージャーを使用してすべてのチャンネルを編集できます。", "ChannelNameOnly": "チャンネル{0} のみ", "ChannelNumber": "チャンネル番号", "Channels": "チャンネル", @@ -1121,7 +1121,7 @@ "MediaInfoForced": "強制", "MediaInfoContainer": "コンテナ", "MaxParentalRatingHelp": "高いレイティングのコンテンツをユーザーから隠します。", - "LibraryAccessHelp": "ユーザーと共有するライブラリを選択してください。管理者はメタデータマネージャを使用してすべてのフォルダーを編集できます。", + "LibraryAccessHelp": "ユーザーと共有するライブラリを選択してください。管理者はメタデータマネージャーを使用してすべてのフォルダーを編集できます。", "LanNetworksHelp": "帯域制限を設ける際にローカルネットワークと見なすIPアドレスまたはIP/ネットマスクのコンマで分割されるリストです。設定されている場合、他のすべてのIPアドレスは外部ネットワークと見なされて外部帯域制限の対象となります。空白の場合、サーバーのサブネットのみがローカルネットワークと見なされます。", "LabelXDlnaDocHelp": "urn:schemas-dlna-org:device-1-0 ネームスペース内のX_DLNADOC エレメントのコンテンツを決定します。", "LabelXDlnaCapHelp": "urn:schemas-dlna-org:device-1-0 ネームスペース内のX_DLNACAP エレメントのコンテンツを決定します。", @@ -1154,5 +1154,32 @@ "HeaderNewRepository": "新しいリポジトリ", "MessageNoRepositories": "リポジトリはありません。", "MessageNoGenresAvailable": "一部のメタデータプロバイダでインターネットからのジャンル取得を有効化します。", - "MessageNoCollectionsAvailable": "コレクションによりムービー、シリーズ、アルバムを個人的にグループ化して楽しむことができます。 + ボタンをクリックするとコレクションの作成を始めます。" + "MessageNoCollectionsAvailable": "コレクションによりムービー、シリーズ、アルバムを個人的にグループ化して楽しむことができます。 + ボタンをクリックするとコレクションの作成を始めます。", + "MetadataSettingChangeHelp": "メタデータの設定変更は今後追加される新しいコンテンツに影響します。既存のコンテンツを更新する場合、詳細画面を開きリフレッシュボタンをクリックするか、メタデータマネージャーを使用して一括リフレッシュを行ってください。", + "MessageSyncPlayErrorMedia": "SyncPlayの有効化に失敗しました!メディアエラーです。", + "MessageSyncPlayErrorMissingSession": "SyncPlayの有効化に失敗しました!セッションが見つかりません。", + "MessageSyncPlayErrorNoActivePlayer": "アクティブなプレーヤーが見つかりません。SyncPlayは無効になりました。", + "MessageSyncPlayErrorAccessingGroups": "グループリストへのアクセス中にエラーが発生しました。", + "MessageSyncPlayLibraryAccessDenied": "このコンテンツへのアクセスは制限されています。", + "MessageSyncPlayJoinGroupDenied": "SyncPlayを使用するには権限が必要です。", + "MessageSyncPlayCreateGroupDenied": "グループ作成の権限が必要です。", + "MessageSyncPlayGroupDoesNotExist": "グループが存在しないため参加できませんでした。", + "MessageSyncPlayPlaybackPermissionRequired": "再生の権限が必要です。", + "MessageSyncPlayNoGroupsAvailable": "グループがありません。まず何かの再生を始めてください。", + "MessageSyncPlayGroupWait": "{0} はバッファリング中です…", + "MessageSyncPlayUserLeft": "{0} がグループから退出しました。", + "MessageSyncPlayUserJoined": "{0} がグループに参加しました。", + "MessageSyncPlayDisabled": "SyncPlayを無効にしました。", + "MessageSyncPlayEnabled": "SyncPlayを有効にしました。", + "MessageUnsetContentHelp": "コンテンツはプレーンフォルダとして表示されます。良い結果を得るためには、メタデータマネージャーでサブフォルダのコンテンツタイプを設定します。", + "MessageUnableToConnectToServer": "現在、選択されたサーバーへの接続ができません。稼働していることを確認しもう一度やり直してください。", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "以下のメディアロケーションがあなたのライブラリから削除されます:", + "MessagePluginInstallDisclaimer": "コミュニティメンバーによって作成されたプラグインは機能や利点を追加することであなたの体験を向上するとても良い方法です。インストールする前に、ライブラリスキャンの時間が長くなる、バックグラウンドの処理が増える、システムの安定性が下がるなど、サーバへの影響がありうることに注意してください。", + "MessagePluginConfigurationRequiresLocalAccess": "このプラグインを設定する場合はローカルサーバーに直接サインインしてください。", + "MessagePleaseEnsureInternetMetadata": "インターネットからのメタデータのダウンロードが有効化されているか確認してください。", + "MessagePlayAccessRestricted": "このコンテンツの再生は現在制限されています。詳細はサーバー管理者にお問い合わせください。", + "MessagePasswordResetForUsers": "以下のユーザーのパスワードをリセットしました。リセットに使用したPINコードでサインインすることができるようになっています。", + "MessageNoTrailersFound": "トレーラーチャンネルをインストールするとインターネットのトレーラーがライブラリに追加されて映画体験が向上します。", + "MessageNoServersAvailable": "サーバーの自動探索ではサーバーが発見できませんでした。", + "MessageNoMovieSuggestionsAvailable": "おすすめの映画は現在ありません。視聴を始めてムービーを評価し、戻ってくるとあなたの推薦が表示されます。" } From f716315056f9e553fb59df48ac1bea43baf5f815 Mon Sep 17 00:00:00 2001 From: minob Date: Sun, 25 Oct 2020 09:44:57 +0000 Subject: [PATCH 543/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index c0877a5ddc..f82e47cf2a 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1181,5 +1181,12 @@ "MessagePasswordResetForUsers": "以下のユーザーのパスワードをリセットしました。リセットに使用したPINコードでサインインすることができるようになっています。", "MessageNoTrailersFound": "トレーラーチャンネルをインストールするとインターネットのトレーラーがライブラリに追加されて映画体験が向上します。", "MessageNoServersAvailable": "サーバーの自動探索ではサーバーが発見できませんでした。", - "MessageNoMovieSuggestionsAvailable": "おすすめの映画は現在ありません。視聴を始めてムービーを評価し、戻ってくるとあなたの推薦が表示されます。" + "MessageNoMovieSuggestionsAvailable": "おすすめの映画は現在ありません。視聴を始めてムービーを評価し、戻ってくるとあなたの推薦が表示されます。", + "Never": "しない", + "MySubtitles": "マイ字幕", + "MusicVideos": "ミュージックビデオ", + "MusicLibraryHelp": "{0}ミュージックの命名規則ガイド{1}を閲覧。", + "Movie": "ムービー", + "MovieLibraryHelp": "{0}ムービーの命名規則ガイド{1}を閲覧。", + "MoreUsersCanBeAddedLater": "ダッシュボードで後からユーザーの追加が可能です。" } From 2ba436c4dd9a18499de36ce339245a138a2eb2aa Mon Sep 17 00:00:00 2001 From: minob Date: Sun, 25 Oct 2020 12:27:38 +0000 Subject: [PATCH 544/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index f82e47cf2a..3904eef1e3 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -676,8 +676,8 @@ "Whitelist": "ホワイトリスト", "Writer": "著書", "ValueAlbumCount": "{0} アルバム", - "ValueAudioCodec": "音声オーデック: {0}", - "ValueCodec": "オーデック: {0}", + "ValueAudioCodec": "音声コーデック: {0}", + "ValueCodec": "コーデック: {0}", "ValueMinutes": "{0} 分", "ValueMovieCount": "{0} ムービー", "ValueOneAlbum": "1 アルバム", @@ -1188,5 +1188,28 @@ "MusicLibraryHelp": "{0}ミュージックの命名規則ガイド{1}を閲覧。", "Movie": "ムービー", "MovieLibraryHelp": "{0}ムービーの命名規則ガイド{1}を閲覧。", - "MoreUsersCanBeAddedLater": "ダッシュボードで後からユーザーの追加が可能です。" + "MoreUsersCanBeAddedLater": "ダッシュボードで後からユーザーの追加が可能です。", + "OptionAllowManageLiveTv": "テレビ放送録画の管理を許可", + "OptionAllowLinkSharingHelp": "メディア情報を含むウェブページのみを共有します。メディアファイルは決して公に共有されません。共有には時間制限があり {0} 日で期限切れとなります。", + "OptionAllowContentDownloading": "メディアのダウンロードと同期を許可", + "OptionForceRemoteSourceTranscoding": "リモートメディアソースの強制トランスコード(テレビ放送など)", + "OptionAllowVideoPlaybackTranscoding": "トランスコードが必要な動画の再生を許可", + "OptionAllowAudioPlaybackTranscoding": "トランスコードが必要な音声の再生を許可", + "OnlyImageFormats": "イメージフォーマットのみ(VOBSUB、PGS、SUB)", + "OnlyForcedSubtitlesHelp": "強制表示になっている字幕のみ読み込みます。", + "OnlyForcedSubtitles": "強制表示のみ", + "Off": "オフ", + "Normal": "正常", + "None": "なし", + "NoSubtitlesHelp": "デフォルトで字幕を読み込みません。再生中に手動でオンにすることができます。", + "MessageNoPluginConfiguration": "このプラグインは設定がありません。", + "MessageNoNextUpItems": "何も見つかりませんでした。番組の視聴を始めましょう!", + "NoNewDevicesFound": "新しいデバイスは見つかりませんでした。新しいチューナーを追加する場合、このダイアログを閉じてデバイス情報を手動で入力してください。", + "NoCreatedLibraries": "まだライブラリが作成されていないようです。{0}今すぐ作成しますか?{1}", + "NextUp": "次", + "PreviousTrack": "前へスキップ", + "NextTrack": "次へスキップ", + "News": "ニュース", + "NewEpisodesOnly": "新しいエピソードのみ", + "NewCollectionHelp": "コレクションによりムービーとその他のライブラリコンテンツを個人的にグループ化することができます。" } From 88ebe07b9cc2b5cce51bfbe3349ee443da5f15c2 Mon Sep 17 00:00:00 2001 From: minob Date: Sun, 25 Oct 2020 13:47:20 +0000 Subject: [PATCH 545/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 3904eef1e3..a5475452f7 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -524,7 +524,7 @@ "MusicAlbum": "ミュージックアルバム", "OptionEnableAccessToAllChannels": "すべてのチャンネルへのアクセスを有効化", "OptionEnableAccessToAllLibraries": "すべてのライブラリへのアクセスを優幸化", - "OptionWeekly": "週間", + "OptionWeekly": "毎週", "OriginalAirDateValue": "元の公開日: {0}", "RepeatOne": "リピート", "SeriesSettings": "シリーズ設計", @@ -1127,7 +1127,7 @@ "LabelXDlnaCapHelp": "urn:schemas-dlna-org:device-1-0 ネームスペース内のX_DLNACAP エレメントのコンテンツを決定します。", "LabelVaapiDeviceHelp": "ハードウェアアクセラレーションに使用されるレンダーノードです。", "LabelUserMaxActiveSessions": "同時ユーザーセッション数の最大:", - "LabelTranscodingThreadCountHelp": "トランスコードで使用する最大スレッド数を選択します。スレッド数を減らすとCPU使用率が下がりますがスムーズに再生できる変換速度ではなくなるかもしれません。", + "LabelTranscodingThreadCountHelp": "トランスコーディングで使用する最大スレッド数を選択します。スレッド数を減らすとCPU使用率が下がりますがスムーズに再生できる変換速度ではなくなるかもしれません。", "LabelTranscodingTempPathHelp": "クライアントへ提供するトランスコードファイルのカスタムパスを指定します。空白にした場合はサーバのデフォルトを使用します。", "LabelSonyAggregationFlagsHelp": "urn:schemas-sonycom:av ネームスペース内のaggregationFlags エレメントのコンテンツを決定します。", "LabelSkipIfGraphicalSubsPresentHelp": "テキストバージョンの字幕を維持することで配信が効率的になりビデオをトランスコードする可能性も減ります。", @@ -1192,9 +1192,9 @@ "OptionAllowManageLiveTv": "テレビ放送録画の管理を許可", "OptionAllowLinkSharingHelp": "メディア情報を含むウェブページのみを共有します。メディアファイルは決して公に共有されません。共有には時間制限があり {0} 日で期限切れとなります。", "OptionAllowContentDownloading": "メディアのダウンロードと同期を許可", - "OptionForceRemoteSourceTranscoding": "リモートメディアソースの強制トランスコード(テレビ放送など)", - "OptionAllowVideoPlaybackTranscoding": "トランスコードが必要な動画の再生を許可", - "OptionAllowAudioPlaybackTranscoding": "トランスコードが必要な音声の再生を許可", + "OptionForceRemoteSourceTranscoding": "リモートメディアソースの強制トランスコーディング(テレビ放送など)", + "OptionAllowVideoPlaybackTranscoding": "トランスコーディングが必要な動画の再生を許可", + "OptionAllowAudioPlaybackTranscoding": "トランスコーディングが必要な音声の再生を許可", "OnlyImageFormats": "イメージフォーマットのみ(VOBSUB、PGS、SUB)", "OnlyForcedSubtitlesHelp": "強制表示になっている字幕のみ読み込みます。", "OnlyForcedSubtitles": "強制表示のみ", @@ -1211,5 +1211,18 @@ "NextTrack": "次へスキップ", "News": "ニュース", "NewEpisodesOnly": "新しいエピソードのみ", - "NewCollectionHelp": "コレクションによりムービーとその他のライブラリコンテンツを個人的にグループ化することができます。" + "NewCollectionHelp": "コレクションによりムービーとその他のライブラリコンテンツを個人的にグループ化することができます。", + "OptionDisplayFolderView": "プレーンメディアフォルダーを表示するときにフォルダービューを表示", + "OptionDisableUserHelp": "サーバーはこのユーザーからの接続を許可しなくなります。既存の接続は突然終了します。", + "OptionDateAddedImportTime": "ライブラリでスキャンされた日時を使用する", + "OptionDateAddedFileTime": "ファイル作成日時を使用する", + "OptionDateAdded": "追加日時", + "OptionDaily": "毎日", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionAutomaticallyGroupSeriesHelp": "このライブラリで複数のフォルダに分散しているシリーズは自動的に単一のシリーズとして統合されます。", + "OptionAllowVideoPlaybackRemuxing": "変換の必要な動画を再エンコードせず再生することを許可", + "OptionAllowSyncTranscoding": "トランスコーディングが必要なメディアのダウンロードと同期を許可", + "OptionAllowRemoteSharedDevicesHelp": "DLNAデバイスはユーザーが制御するまで共有されていると見なされます。", + "OptionAllowMediaPlaybackTranscodingHelp": "トランスコーディングへのアクセスを制限するとクライアントがサポートしていないメディアフォーマットの再生に失敗する可能性があります。", + "OptionAllowMediaPlayback": "メディア再生を許可" } From 6d658cbd0877a5fdcb02e584136d5efbe456eb24 Mon Sep 17 00:00:00 2001 From: minob Date: Sun, 25 Oct 2020 15:05:13 +0000 Subject: [PATCH 546/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index a5475452f7..9bf6d80fde 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1224,5 +1224,11 @@ "OptionAllowSyncTranscoding": "トランスコーディングが必要なメディアのダウンロードと同期を許可", "OptionAllowRemoteSharedDevicesHelp": "DLNAデバイスはユーザーが制御するまで共有されていると見なされます。", "OptionAllowMediaPlaybackTranscodingHelp": "トランスコーディングへのアクセスを制限するとクライアントがサポートしていないメディアフォーマットの再生に失敗する可能性があります。", - "OptionAllowMediaPlayback": "メディア再生を許可" + "OptionAllowMediaPlayback": "メディア再生を許可", + "OptionExternallyDownloaded": "外部からダウンロード", + "OptionHlsSegmentedSubtitles": "HLS分割字幕", + "OptionEmbedSubtitles": "コンテナに埋め込む", + "OptionDownloadImagesInAdvanceHelp": "デフォルトでは、大多数の画像はクライアントから要求された時にのみダウンロードされます。このオプションを有効にすると新しいメディアをインポートした時にすべての画像を事前にダウンロードします。これによりライブラリのスキャンが大幅に長くなる可能性があります。", + "OptionDownloadImagesInAdvance": "画像を事前にダウンロード", + "OptionDisplayFolderViewHelp": "その他のメディアライブラリと一緒にフォルダを表示します。プレーンフォルダビューにしたい時に便利です。" } From 7975f57e73df09b0879ef3dbf80acfe535657c22 Mon Sep 17 00:00:00 2001 From: Solain Date: Sun, 25 Oct 2020 18:29:36 +0000 Subject: [PATCH 547/582] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/he.json b/src/strings/he.json index 86cad06f80..7c845686cf 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -829,5 +829,12 @@ "ClientSettings": "הגדרות לקוח", "BoxSet": "מארז", "ButtonActivate": "הפעל", - "Authorize": "הרשה" + "Authorize": "הרשה", + "EnableStreamLoopingHelp": "אשר זה אם שידורי לייב מכילים רק מספר שניות של מידע ויש צורך לבקש את המידע באופן קבוע. אישור של הגדרה זו כשאין צורך עלול לגרום לבעיות.", + "EnableQuickConnect": "אפשר חיבור מהיר בשרת זה", + "EnableAutoCast": "הגדר כברירת מחדל", + "EasyPasswordHelp": "הקוד הסודי הפשוט שלך משומש לגישה לא מחוברת במכשירים נתמכים ויכולה גם לשמש להתחברות פשוטה בתוך הרשת.", + "DirectStreamHelp2": "הזרמה ישירה צורכת מעט מאוד כוח עיבוד עם הפסד מינימלי באיכות הווידיאו.", + "DirectStreamHelp1": "המדיה נתמכת עם המכשיר מבחינת רזולוציה וסוג מדיה (H.264, AC3, וכו'), אבל במעטפת קובץ אשר לא נתמכת (mkv, avi, wmv, וכו'). הווידיאו ייעטף-מחדש בדרך למכשיר.", + "ButtonUseQuickConnect": "השתמש בQuick Connect" } From 0cfd71140852f5c5c8dc7ee990511c3b54e32299 Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Sun, 25 Oct 2020 19:55:38 +0000 Subject: [PATCH 548/582] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index b7da6f581c..bf094eb171 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1410,5 +1410,7 @@ "ButtonUseQuickConnect": "Использовать Quick Connect", "ButtonActivate": "Активация", "Authorize": "Авторизация", - "LabelUserMaxActiveSessions": "Максимальное количество одновременных пользовательских сессий:" + "LabelUserMaxActiveSessions": "Максимальное количество одновременных пользовательских сессий:", + "OptionMaxActiveSessionsHelp": "Значение 0 отключит эту функцию.", + "OptionMaxActiveSessions": "Устанавливает максимальное количество одновременных пользовательских сеансов." } From 028038259331921e32fa606e0fd1a600aeb33a38 Mon Sep 17 00:00:00 2001 From: kevin Date: Sun, 25 Oct 2020 20:38:36 +0000 Subject: [PATCH 549/582] Added translation using Weblate (Albanian) --- src/strings/sq.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/strings/sq.json diff --git a/src/strings/sq.json b/src/strings/sq.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/strings/sq.json @@ -0,0 +1 @@ +{} From d27f984fec8b965feca54a31ed4df63f51bb8b17 Mon Sep 17 00:00:00 2001 From: kevin Date: Sun, 25 Oct 2020 20:38:57 +0000 Subject: [PATCH 550/582] Translated using Weblate (Albanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sq/ --- src/strings/sq.json | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/strings/sq.json b/src/strings/sq.json index 0967ef424b..9d91adc7c1 100644 --- a/src/strings/sq.json +++ b/src/strings/sq.json @@ -1 +1,27 @@ -{} +{ + "AllowOnTheFlySubtitleExtraction": "Lejo titrat të ekstraktohen në kohë reale", + "AllowMediaConversionHelp": "Lejo ose blloko aksesin e veçorisë së transkodimit të medias.", + "AllowMediaConversion": "Lejo konvertimin e medias", + "AllowHWTranscodingHelp": "Lejo Tuner-in të transkodojë transmetimet në kohë reale. Kjo mund të ndihmojë në zvogëlimin e transkodimit nga ana e serverit.", + "AllLibraries": "Të gjithë libraritë", + "AllLanguages": "Të gjitha gjuhët", + "AllEpisodes": "Të gjithë episodet", + "AllComplexFormats": "Të gjithë formatet kompleks (ASS, SSA, VOBSUB, PGS, SUB, IDX, …)", + "AllChannels": "Të gjithë kanalet", + "All": "Të gjithë", + "Alerts": "Alarm", + "Albums": "Albume", + "AlbumArtist": "Album Artist", + "Album": "Album", + "Aired": "Transmetuar", + "AirDate": "Data e transmetimit", + "AdditionalNotificationServices": "Shfleto katalogun e shtojcave për të instaluar të tjera shërbime njoftimi.", + "AddedOnValue": "Shtuar {0}", + "AddToPlaylist": "Shto tek lista e luajtjes", + "AddToPlayQueue": "Shto tek rradha e luajtjes", + "AddToCollection": "Shto tek koleksioni", + "Add": "Shto", + "Actor": "Aktor", + "AccessRestrictedTryAgainLater": "Aksesi aktualisht është i kufizuar. Ju lutemi provoni përsëri më vonë.", + "Absolute": "Absolut" +} From 3281b8b9ce4337a36d59ff110cfb717376c5314c Mon Sep 17 00:00:00 2001 From: minob Date: Mon, 26 Oct 2020 02:04:02 +0000 Subject: [PATCH 551/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 9bf6d80fde..f235b5e02f 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1230,5 +1230,8 @@ "OptionEmbedSubtitles": "コンテナに埋め込む", "OptionDownloadImagesInAdvanceHelp": "デフォルトでは、大多数の画像はクライアントから要求された時にのみダウンロードされます。このオプションを有効にすると新しいメディアをインポートした時にすべての画像を事前にダウンロードします。これによりライブラリのスキャンが大幅に長くなる可能性があります。", "OptionDownloadImagesInAdvance": "画像を事前にダウンロード", - "OptionDisplayFolderViewHelp": "その他のメディアライブラリと一緒にフォルダを表示します。プレーンフォルダビューにしたい時に便利です。" + "OptionDisplayFolderViewHelp": "その他のメディアライブラリと一緒にフォルダを表示します。プレーンフォルダビューにしたい時に便利です。", + "OptionEnableForAllTuners": "すべてのチューナーデバイスを有効化", + "OptionEnableExternalContentInSuggestionsHelp": "インターネットのトレーラーやテレビ放送の番組をおすすめの欄のコンテンツに含めることを許可します。", + "OptionEnableAccessFromAllDevices": "すべてのデバイスからのアクセスを有効化" } From 17dc594901be86c8be1d8316c96651f56d929f16 Mon Sep 17 00:00:00 2001 From: minob Date: Mon, 26 Oct 2020 02:20:49 +0000 Subject: [PATCH 552/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index f235b5e02f..1fc9eac3ed 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1233,5 +1233,6 @@ "OptionDisplayFolderViewHelp": "その他のメディアライブラリと一緒にフォルダを表示します。プレーンフォルダビューにしたい時に便利です。", "OptionEnableForAllTuners": "すべてのチューナーデバイスを有効化", "OptionEnableExternalContentInSuggestionsHelp": "インターネットのトレーラーやテレビ放送の番組をおすすめの欄のコンテンツに含めることを許可します。", - "OptionEnableAccessFromAllDevices": "すべてのデバイスからのアクセスを有効化" + "OptionEnableAccessFromAllDevices": "すべてのデバイスからのアクセスを有効化", + "OptionEnableM2tsModeHelp": "mpegtsをエンコードする際にm2tsモードを有効化。" } From 1551180e0be5677f432f4e1eeb22c54a29e7c5ae Mon Sep 17 00:00:00 2001 From: minob Date: Mon, 26 Oct 2020 02:35:56 +0000 Subject: [PATCH 553/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 1fc9eac3ed..2c8ebd6292 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -585,7 +585,7 @@ "MessageImageFileTypeAllowed": "JPEGとPNGファイルのみサポートしています。", "NoSubtitleSearchResultsFound": "何も見つかりません。", "OptionRandom": "ランダム", - "OptionSubstring": "字幕", + "OptionSubstring": "部分一致", "OptionTrackName": "トラック名", "OptionTvdbRating": "TVDB評価", "OptionWeekends": "休日", @@ -1126,7 +1126,7 @@ "LabelXDlnaDocHelp": "urn:schemas-dlna-org:device-1-0 ネームスペース内のX_DLNADOC エレメントのコンテンツを決定します。", "LabelXDlnaCapHelp": "urn:schemas-dlna-org:device-1-0 ネームスペース内のX_DLNACAP エレメントのコンテンツを決定します。", "LabelVaapiDeviceHelp": "ハードウェアアクセラレーションに使用されるレンダーノードです。", - "LabelUserMaxActiveSessions": "同時ユーザーセッション数の最大:", + "LabelUserMaxActiveSessions": "同時ユーザーセッション数の最大値:", "LabelTranscodingThreadCountHelp": "トランスコーディングで使用する最大スレッド数を選択します。スレッド数を減らすとCPU使用率が下がりますがスムーズに再生できる変換速度ではなくなるかもしれません。", "LabelTranscodingTempPathHelp": "クライアントへ提供するトランスコードファイルのカスタムパスを指定します。空白にした場合はサーバのデフォルトを使用します。", "LabelSonyAggregationFlagsHelp": "urn:schemas-sonycom:av ネームスペース内のaggregationFlags エレメントのコンテンツを決定します。", @@ -1234,5 +1234,19 @@ "OptionEnableForAllTuners": "すべてのチューナーデバイスを有効化", "OptionEnableExternalContentInSuggestionsHelp": "インターネットのトレーラーやテレビ放送の番組をおすすめの欄のコンテンツに含めることを許可します。", "OptionEnableAccessFromAllDevices": "すべてのデバイスからのアクセスを有効化", - "OptionEnableM2tsModeHelp": "mpegtsをエンコードする際にm2tsモードを有効化。" + "OptionEnableM2tsModeHelp": "mpegtsをエンコードする際にm2tsモードを有効化。", + "OptionPlainStorageFolders": "すべてのフォルダーをプレーンストレージフォルダーとして表示", + "OnApplicationStartup": "アプリケーション起動時", + "OptionOnInterval": "間隔", + "OptionNew": "新規…", + "OptionMaxActiveSessionsHelp": "値が0の場合はこの機能を無効化します。", + "OptionMaxActiveSessions": "同時ユーザーセッション数の最大値を設定します。", + "OptionLoginAttemptsBeforeLockoutHelp": "値をゼロにした場合は通常のユーザーでは3回、管理者では5回のデフォルト値を継承します。設定を-1にするとこの機能は無効化されます。", + "OptionLoginAttemptsBeforeLockout": "ロックアウトが発生するまでに間違ったログインを何回行うことができるかを決定します。", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "リクエストは尊重されますが byte range ヘッダーは無視されます。", + "OptionIgnoreTranscodeByteRangeRequests": "トランスコードの byte range リクエストを無視", + "OptionHideUserFromLoginHelp": "プライベートや管理者アカウントを隠すのに便利です。このユーザーはユーザー名とパスワードを手動で入力してサインインする必要があります。", + "OptionExtractChapterImage": "チャプター画像の抽出を有効化", + "OptionEstimateContentLength": "トランスコーディングの際にコンテンツの長さを推定", + "OptionEquals": "一致" } From 83cf117ae538c9705fa5d4a12017f262e9d280bd Mon Sep 17 00:00:00 2001 From: minob Date: Mon, 26 Oct 2020 03:31:19 +0000 Subject: [PATCH 554/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 2c8ebd6292..d5c6afd88f 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1248,5 +1248,29 @@ "OptionHideUserFromLoginHelp": "プライベートや管理者アカウントを隠すのに便利です。このユーザーはユーザー名とパスワードを手動で入力してサインインする必要があります。", "OptionExtractChapterImage": "チャプター画像の抽出を有効化", "OptionEstimateContentLength": "トランスコーディングの際にコンテンツの長さを推定", - "OptionEquals": "一致" + "OptionEquals": "一致", + "PlayFromBeginning": "初めから再生", + "PlayCount": "再生回数", + "PlaybackRate": "再生速度", + "PlaybackData": "再生情報", + "PlaceFavoriteChannelsAtBeginning": "お気に入りのチャンネルを先頭にする", + "Photo": "画像", + "Person": "人物", + "PasswordResetProviderHelp": "このユーザーがパスワードリセットを要求した時に提供するかの選択。", + "PackageInstallFailed": "{0} (version {1}) のインストールに失敗しました。", + "PackageInstallCompleted": "{0} (version {1}) のインストールが完了しました。", + "PackageInstallCancelled": "{0} (version {1}) のインストールはキャンセルされました。", + "OptionSaveMetadataAsHiddenHelp": "変更すると今後保存される新しいメタデータに適用されます。既存のメタデータファイルは次にサーバーへ保存される際に更新されます。", + "OptionSaveMetadataAsHidden": "メタデータと画像を隠しファイルとして保存", + "OptionResumable": "途中から", + "OptionResElement": "res 要素", + "OptionRequirePerfectSubtitleMatchHelp": "完全にマッチすることを要求した場合は動画ファイルとのテストおよび検証で完全な字幕のみ含まれるようフィルタリングします。このチェックを外すと字幕がダウンロードされる可能性が高くなりますが、間違いのある字幕テキストになる可能性も高くなります。", + "OptionRequirePerfectSubtitleMatch": "動画ファイルと完全にマッチする字幕のみダウンロード", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "これはシークが十分にできないデバイスに必要です。", + "OptionReportByteRangeSeekingWhenTranscoding": "トランスコーディングする際にサーバーがbyte seekingをサポートしていることをレポート", + "OptionPremiereDate": "初公開日", + "OptionPlayCount": "再生回数", + "OptionPlainVideoItemsHelp": "すべての動画を\"object.item.videoItem.movie\"のような特定のタイプに代わって\"object.item.videoItem\"のようにDIDLで表現します。", + "OptionPlainVideoItems": "すべての動画をプレーン動画アイテムとして表示", + "OptionPlainStorageFoldersHelp": "すべてのフォルダーで\"object.container.person.musicArtist\"のような特定のタイプに代わって\"object.container.storageFolder\"のようにDIDLで表現します。" } From 1b7d7f76be0ab961118a794cb0ff08e2f4bffeb9 Mon Sep 17 00:00:00 2001 From: millallo Date: Mon, 26 Oct 2020 06:51:31 +0000 Subject: [PATCH 555/582] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index b900a79d52..d7e51b8cc7 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1402,7 +1402,7 @@ "OptionMaxActiveSessions": "Imposta il numero massimo di connessioni utente simultanee.", "LabelUserMaxActiveSessions": "Numero massimo di sessioni utente contemporanee:", "EnableAutoCast": "Imposta come Default", - "LabelTonemappingDesat": "Desaturazione appatura dei toni:", + "LabelTonemappingDesat": "Desaturazione mappatura dei toni:", "TonemappingRangeHelp": "Seleziona l'intervallo di colore in uscita. Auto imposta lo stesso del valore di entrata.", "LabelTonemappingRange": "Intervallo mappatura dei toni:", "TonemappingAlgorithmHelp": "La mappatura dei toni può essere messa a punto. Se non sei abbastanza familiare con queste opzioni, lascia quelle predefinite. Il valore raccomandato è Reinhard.", From ead084c9560c8d966f7640ef092c1bcf716c94fd Mon Sep 17 00:00:00 2001 From: minob Date: Mon, 26 Oct 2020 06:39:21 +0000 Subject: [PATCH 556/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index d5c6afd88f..017e089371 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -593,7 +593,7 @@ "PasswordResetComplete": "パスワードは再設定されました。", "PinCodeResetComplete": "PINコードが再設定されました。", "PinCodeResetConfirmation": "本当にPINコードを再設定しますか?", - "PleaseRestartServerName": "Jellyfinサーバーを再起動してください - {0}。", + "PleaseRestartServerName": "{0} のJellyfinを再起動してください。", "OptionEveryday": "毎日", "Premieres": "初日", "Producer": "プロデューサー", @@ -1272,5 +1272,17 @@ "OptionPlayCount": "再生回数", "OptionPlainVideoItemsHelp": "すべての動画を\"object.item.videoItem.movie\"のような特定のタイプに代わって\"object.item.videoItem\"のようにDIDLで表現します。", "OptionPlainVideoItems": "すべての動画をプレーン動画アイテムとして表示", - "OptionPlainStorageFoldersHelp": "すべてのフォルダーで\"object.container.person.musicArtist\"のような特定のタイプに代わって\"object.container.storageFolder\"のようにDIDLで表現します。" + "OptionPlainStorageFoldersHelp": "すべてのフォルダーで\"object.container.person.musicArtist\"のような特定のタイプに代わって\"object.container.storageFolder\"のようにDIDLで表現します。", + "PreferEmbeddedTitlesOverFileNames": "ファイル名より埋め込みタイトルを優先", + "MessageGetInstalledPluginsError": "インストール済みプラグインの一覧を取得する際にエラーが発生しました。", + "MessagePluginInstallError": "プラグインをインストールする際にエラーが発生しました。", + "MessagePluginInstalled": "プラグインは正常にインストールされました。変更を有効にするためにサーバーを再起動する必要があります。", + "PosterCard": "ポスターカード", + "Poster": "ポスター", + "PleaseSelectTwoItems": "少なくとも2つの項目を選択してください。", + "PleaseEnterNameOrId": "名前か外部IDを入力してください。", + "PleaseConfirmPluginInstallation": "プラグインのインストールを進めるには上記を確認し OK をクリックしてください。", + "PleaseAddAtLeastOneFolder": "追加ボタンをクリックして少なくとも一つのフォルダーをこのライブラリに追加してください。", + "PlaybackErrorNoCompatibleStream": "このクライアントはメディアと互換性がなく、サーバーも互換性のあるメディアフォーマットで送信しません。", + "PlayNextEpisodeAutomatically": "次のエピソードを自動で再生" } From 082b0f94c4a26fc39192c47a5fa4061af3bbd947 Mon Sep 17 00:00:00 2001 From: minob Date: Mon, 26 Oct 2020 07:17:50 +0000 Subject: [PATCH 557/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 017e089371..dab78d9c3b 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1284,5 +1284,12 @@ "PleaseConfirmPluginInstallation": "プラグインのインストールを進めるには上記を確認し OK をクリックしてください。", "PleaseAddAtLeastOneFolder": "追加ボタンをクリックして少なくとも一つのフォルダーをこのライブラリに追加してください。", "PlaybackErrorNoCompatibleStream": "このクライアントはメディアと互換性がなく、サーバーも互換性のあるメディアフォーマットで送信しません。", - "PlayNextEpisodeAutomatically": "次のエピソードを自動で再生" + "PlayNextEpisodeAutomatically": "次のエピソードを自動で再生", + "Profile": "プロフィール", + "ProductionLocations": "制作拠点", + "Primary": "主画像", + "Previous": "前", + "PreferEmbeddedEpisodeInfosOverFileNames": "ファイル名より埋め込まれたエピソード情報を優先", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "埋め込まれたメタデータにエピソードの情報があった場合にそれを使用します。", + "PreferEmbeddedTitlesOverFileNamesHelp": "これはインターネットメタデータやローカルメタデータが利用できない時にデフォルトで表示するタイトルを決定します。" } From eca4de2dde77a2c01644fac1df9dbb163ff6972e Mon Sep 17 00:00:00 2001 From: minob Date: Mon, 26 Oct 2020 07:35:58 +0000 Subject: [PATCH 558/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 56 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index dab78d9c3b..c9ecf4bf16 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -618,7 +618,7 @@ "Search": "検索", "SearchResults": "検索結果", "Series": "シリーズ", - "ServerNameIsRestarting": "Jellyfinサーバー - {0} は再起動中です。", + "ServerNameIsRestarting": "サーバー - {0} は再起動中です。", "Settings": "設定", "ShowAdvancedSettings": "高度な設定を表示", "ShowYear": "年を表示", @@ -911,7 +911,7 @@ "PasswordMatchError": "パスワードと確認用のパスワードは同一でないといけません。", "ReplaceExistingImages": "現在の画像を置き換える", "SearchForSubtitles": "字幕を検索", - "ServerNameIsShuttingDown": "Jellyfinサーバー - {0} は停止中です。", + "ServerNameIsShuttingDown": "サーバー - {0} は停止中です。", "SettingsSaved": "設定を保存しました。", "ValueSeconds": "{0} 秒", "ValueTimeLimitSingleHour": "タイムリミット: 1 時間", @@ -1291,5 +1291,55 @@ "Previous": "前", "PreferEmbeddedEpisodeInfosOverFileNames": "ファイル名より埋め込まれたエピソード情報を優先", "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "埋め込まれたメタデータにエピソードの情報があった場合にそれを使用します。", - "PreferEmbeddedTitlesOverFileNamesHelp": "これはインターネットメタデータやローカルメタデータが利用できない時にデフォルトで表示するタイトルを決定します。" + "PreferEmbeddedTitlesOverFileNamesHelp": "これはインターネットメタデータやローカルメタデータが利用できない時にデフォルトで表示するタイトルを決定します。", + "SubtitleAppearanceSettingsDisclaimer": "これらの設定は画像字幕(PGS、DVD等) やSS/SSAのように独自のスタイルを埋め込む字幕には適用されません。", + "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "これらの設定はこのデバイスから再生を開始する Chromecast にも適用されます。", + "SpecialFeatures": "特殊機能", + "SortChannelsBy": "チャンネルの並び替え:", + "SortByValue": "{0} で並び替え", + "SmartSubtitlesHelp": "外国語の音声だった場合に優先言語に合わせた字幕が読み込まれます。", + "Smart": "スマート", + "Smaller": "最小", + "SmallCaps": "スモールキャピタル", + "SkipEpisodesAlreadyInMyLibraryHelp": "シーズンとエピソード番号を取得可能な場合はエピソードの比較に使用します。", + "SkipEpisodesAlreadyInMyLibrary": "すでにライブラリに存在する場合はエピソードを録画しません", + "SimultaneousConnectionLimitHelp": "許可する同時ストリームの最大数。0を入力した場合は制限されません。", + "Filter": "フィルター", + "New": "新規", + "ShowMore": "さらに表示", + "ShowLess": "表示を減らす", + "ShowIndicatorsFor": "表示対象:", + "SettingsWarning": "これらの値を変更すると不安定や接続失敗などの原因となる可能性があります。もし問題が発生した場合、デフォルトに戻すことをおすすめします。", + "ServerUpdateNeeded": "このサーバーはアップデートする必要があります。最新バージョンをダウンロードする場合、 {0} をご参照ください", + "ServerRestartNeededAfterPluginInstall": "Jellyfin はプラグインをインストールした後に再起動を必要とします。", + "SeriesRecordingScheduled": "シリーズの録画スケジュール。", + "SeriesDisplayOrderHelp": "放送日、DVDの順番、番号順でエピソードを並び替えます。", + "SelectServer": "サーバーを選択", + "SelectAdminUsername": "管理アカウントのユーザ名を選択してください。", + "Season": "シーズン", + "SaveSubtitlesIntoMediaFoldersHelp": "動画ファイルと一緒に字幕を保存することでより管理しやすくなります。", + "SaveChanges": "変更を保存", + "Restart": "再起動", + "ResetPassword": "パスワードをリセット", + "RefreshDialogHelp": "メタデータはダッシュボードで有効化されている設定やインターネットサービスに基づいて更新されます。", + "MessageChangeRecordingPath": "録画フォルダーを変更しても既存の録画は以前の場所から新しい場所へは移行されません。もし必要であれば手動で移動してください。", + "RecordSeries": "シリーズ録画", + "Record": "録画", + "RecommendationBecauseYouWatched": "{0} を視聴したので", + "RecommendationBecauseYouLike": "{0} がお気に入りのため", + "RecommendationStarring": "{0} 主演", + "RecentlyWatched": "最近視聴", + "Rate": "評価", + "Raised": "浮き上がり", + "QuickConnectNotActive": "クイックコネクトはこのサーバーで有効化されていません", + "QuickConnectNotAvailable": "サーバー管理者にクイックコネクトを有効化するようお問い合わせください", + "QuickConnectInvalidCode": "無効なクイックコネクトコードです", + "QuickConnectDescription": "クイックコネクトでサインインする場合、ログインするデバイスのクイックコネクトボタンを選択して以下のコードを入力します。", + "QuickConnectDeactivated": "ログインのリクエストが承認される前にクイックコネクトが無効化されました", + "QuickConnectAuthorizeFail": "不明なクイックコネクトコードです", + "QuickConnectAuthorizeSuccess": "リクエストが承認されました", + "QuickConnectAuthorizeCode": "コード {0} を入力してログイン", + "QuickConnectActivationSuccessful": "有効化に成功しました", + "QuickConnect": "クイックコネクト", + "Programs": "番組" } From 7b6dab41db9a594bd66514cdafaaac928fd0c244 Mon Sep 17 00:00:00 2001 From: minob Date: Mon, 26 Oct 2020 10:39:58 +0000 Subject: [PATCH 559/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index c9ecf4bf16..e8230fa71f 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -953,7 +953,7 @@ "BoxSet": "ボックスセット", "AllowFfmpegThrottlingHelp": "トランスコードや remux が現在の再生位置から十分に先に進んだ場合、処理を一時停止してリソースの消費を抑えます。これは、あまり早送り・早戻しをしないで視聴する場合に便利です。再生に問題が発生した場合は、この機能をオフにしてください。", "LabelDisplaySpecialsWithinSeasons": "放送されたシーズン内のスペシャルを表示", - "LabelDeinterlaceMethod": "インターレス解除方法:", + "LabelDeinterlaceMethod": "インターレース解除方法:", "LabelDefaultUserHelp": "接続されたデバイスに表示するユーザーライブラリを決定します。これは、プロファイルを使用して各デバイスに対してオーバーライドすることができます。", "LabelDateAddedBehavior": "新規コンテンツの追加日のふるまい:", "LabelCustomCertificatePathHelp": "カスタムドメインでTLSサポートを有効にするための証明書と秘密鍵を含むPKCS #12ファイルのパス。", @@ -1341,5 +1341,29 @@ "QuickConnectAuthorizeCode": "コード {0} を入力してログイン", "QuickConnectActivationSuccessful": "有効化に成功しました", "QuickConnect": "クイックコネクト", - "Programs": "番組" + "Programs": "番組", + "Writers": "脚本", + "WizardCompleted": "今必要なものはこれだけです。Jellyfin はメディアライブラリについての情報を集め始めました。完了をクリックしてからダッシュボードを表示し、アプリを確認してください。", + "ViewAlbumArtist": "アルバムアーティストを表示", + "VideoAudio": "動画の音声", + "Video": "動画", + "ValueConditions": "状態: {0}", + "UserProfilesIntro": "Jellyfin には画面設定、再生状態、ペアレンタルコントロールなどの細かいユーザープロファイルが含まれています。", + "Unplayed": "未再生", + "UninstallPluginConfirmation": "本当に {0} をアンインストールしてよろしいですか?", + "Uniform": "境界線", + "UseDoubleRateDeinterlacingHelp": "この設定ではインターレース解除にフィールドレートが使用されます。これは多くの場合bobデインターレースと呼ばれ、フレームレートを2倍にすることでテレビでインターレースされたビデオを見るときのようなフルモーションを提供します。", + "UseDoubleRateDeinterlacing": "インターレース解除の際にフレームレートを倍にする", + "TvLibraryHelp": "{0}TV 命名規則ガイド{1} をご参照ください。", + "ThumbCard": "サムネイルカード", + "Thumb": "サムネイル", + "ThisWizardWillGuideYou": "このウィザードはセットアッププロセスを助けるガイドとなります。まず始めに、お好みの言語を選択してください。", + "TellUsAboutYourself": "あなたのことを教えてください", + "TabUpcoming": "近日公開", + "TabScheduledTasks": "スケジュールタスク", + "TabRepositories": "リポジトリ", + "SystemDlnaProfilesHelp": "システムプロファイルは読み取り専用です。システムプロファイルの変更は、新しいカスタムプロファイルに保存されます。", + "SyncPlayAccessHelp": "このユーザーはアクセスできるSyncPlayの機能のレベルを 選択します。SyncPlay は他のデバイスとの同期再生を可能にします。", + "Subtitle": "字幕", + "SubtitleDownloadersHelp": "あなたの好みに応じて有効化とランク付けで字幕ダウンローダーを優先度順にしてください。" } From ad2ee8481ab27969753f6eb1cde6af2b95b32061 Mon Sep 17 00:00:00 2001 From: minob Date: Mon, 26 Oct 2020 11:48:45 +0000 Subject: [PATCH 560/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index e8230fa71f..b8c302a427 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1365,5 +1365,6 @@ "SystemDlnaProfilesHelp": "システムプロファイルは読み取り専用です。システムプロファイルの変更は、新しいカスタムプロファイルに保存されます。", "SyncPlayAccessHelp": "このユーザーはアクセスできるSyncPlayの機能のレベルを 選択します。SyncPlay は他のデバイスとの同期再生を可能にします。", "Subtitle": "字幕", - "SubtitleDownloadersHelp": "あなたの好みに応じて有効化とランク付けで字幕ダウンローダーを優先度順にしてください。" + "SubtitleDownloadersHelp": "あなたの好みに応じて有効化とランク付けで字幕ダウンローダーを優先度順にしてください。", + "XmlDocumentAttributeListHelp": "これらの属性はすべてのXMLレスポンスのルートエレメントにも適用されます。" } From 3045ab495872ed16c7cdc10fba3d09ea2097479b Mon Sep 17 00:00:00 2001 From: minob Date: Mon, 26 Oct 2020 13:30:09 +0000 Subject: [PATCH 561/582] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 56 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index b8c302a427..c62d1a8e51 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1366,5 +1366,59 @@ "SyncPlayAccessHelp": "このユーザーはアクセスできるSyncPlayの機能のレベルを 選択します。SyncPlay は他のデバイスとの同期再生を可能にします。", "Subtitle": "字幕", "SubtitleDownloadersHelp": "あなたの好みに応じて有効化とランク付けで字幕ダウンローダーを優先度順にしてください。", - "XmlDocumentAttributeListHelp": "これらの属性はすべてのXMLレスポンスのルートエレメントにも適用されます。" + "XmlDocumentAttributeListHelp": "これらの属性はすべてのXMLレスポンスのルートエレメントにも適用されます。", + "LabelMaxMuxingQueueSizeHelp": "すべてのストリームが初期化されるのを待つ間にバッファリングできるパケットの最大数。ffmpeg のログで \"Too many packets buffered for output stream\" エラーが発生した場合は、この値を増やしてみてください。推奨値は 2048 です。", + "LabelMaxMuxingQueueSize": "最大多重化キューサイズ:", + "Preview": "プレビュー", + "SubtitleVerticalPositionHelp": "テキストが表示される行番号です。正数は上から下を示します。負数は下から上を示します。", + "LabelSubtitleVerticalPosition": "垂直位置:", + "ClearQueue": "キューをクリア", + "StopPlayback": "再生を停止", + "LabelTonemappingParam": "トーンマッピング パラメータ:", + "LabelTonemappingParamHelp": "トーンマッピングアルゴリズムを調整します。推奨値とデフォルト値はありません。一般的には空白のままとなります。", + "LabelTonemappingPeakHelp": "この値でsignal/nominal/referenceピークをオーバーライドします。表示メタデータに埋め込まれたピーク情報が信頼できない場合や、低域から高域へのトーンマッピングを行う場合に便利です。推奨値とデフォルト値は0です。", + "LabelTonemappingPeak": "トーンマッピングのピーク:", + "LabelTonemappingThreshold": "トーンマッピングのしきい値:", + "LabelTonemappingThresholdHelp": "トーンマッピングアルゴリズムのパラメータはシーンごとに微調整されます。そしてシーンが変化したかどうかを検出するためにしきい値を使用します。現在のフレーム平均輝度と現在の走行平均との差がしきい値を超えた場合、シーン平均とピークの輝度を再計算します。推奨値とデフォルト値は0.8と0.2です。", + "LabelTonemappingDesat": "トーンマッピングの彩度低下:", + "LabelTonemappingDesatHelp": "この明るさのレベルを超えるハイライトには彩度の低下を適用します。パラメータが高いほど色情報が保存されます。この設定はスーパーハイライトの色が不自然な白になるのを防ぐのに役立ちます。これにより画像がより自然に感じられるようになりますが、範囲外の色の情報が減少します。推奨値とデフォルト値は 0 と 0.5 です。", + "TonemappingRangeHelp": "出力のカラーレンジを選択します。自動の場合は入力のカラーレンジと同じになります。", + "LabelTonemappingRange": "トーンマッピング レンジ:", + "TonemappingAlgorithmHelp": "トーンマッピングを微調整することができます。もしこれらのオプションに馴染みがない場合はデフォルトのままにしてください。推奨値は Reinhard です。", + "LabelTonemappingAlgorithm": "使用するトーンマッピング アルゴリズムを選択:", + "AllowTonemappingHelp": "トーンマッピングは元のシーンを表現する上で非常に重要な情報である画像の詳細や色を維持したまま、動画のダイナミックレンジを HDR から SDR に変換することができます。現在はHDR10 または HLG メタデータが埋め込まれた動画をトランスコーディングする場合にのみ機能します。スムーズに再生されない場合や失敗する場合は、対応するハードウェアデコーダをオフにすることを検討してください。", + "EnableTonemapping": "トーンマッピングを有効化", + "LabelOpenclDeviceHelp": "これはトーンマッピングに使用される OpenCL デバイスです。ドットの左側がプラットフォーム番号、右側がプラットフォーム上のデバイス番号となります。デフォルト値は0.0です。OpenCL ハードウェアアクセラレーションの方法を含むffmpeg アプリケーションファイルである必要があります。", + "LabelOpenclDevice": "OpenCL デバイス:", + "LabelColorPrimaries": "プライマリーカラー:", + "LabelColorTransfer": "カラートランスファー:", + "LabelColorSpace": "色空間:", + "LabelVideoRange": "ビデオレンジ:", + "MediaInfoColorPrimaries": "プライマリーカラー", + "MediaInfoColorTransfer": "カラートランスファー", + "MediaInfoColorSpace": "色空間", + "MediaInfoVideoRange": "ビデオレンジ", + "ButtonPlayer": "プレーヤー", + "ButtonCast": "キャスト", + "EnableBlurHashHelp": "読み込み途中の画像を独自のプレースホルダーで表示します。", + "EnableBlurHash": "プレースホルダー画像のぼやかしを有効化", + "UnsupportedPlayback": "Jellyfin はプロテクトされたタイトルも含めすべてのコンテンツを試みますが、DRMでプロテクトされたコンテンツを解読することはできません。ファイルによっては暗号化やインタラクティブタイトルなどのサポートしていない機能により完全に黒く見える可能性があります。", + "EveryXHours": "{0} 時間ごと", + "EveryHour": "毎時", + "EveryXMinutes": "{0} 分ごと", + "OnWakeFromSleep": "スリープから復帰した時", + "WeeklyAt": "{0} の {1}", + "DailyAt": "毎日 {0}", + "LastSeen": "最後に視聴 {0}", + "PersonRole": "{0} として", + "ListPaging": "{2} 中の {0}-{1}", + "WriteAccessRequired": "Jellyfin はこのフォルダへの書き込み権限を要求します。書き込みアクセスを確認してもう一度お試しください。", + "PathNotFound": "パスを見つけることができませんでした。パスが有効であることを確認してもう一度お試しください。", + "Bwdif": "BWDIF", + "Yadif": "YADIF", + "XmlTvSportsCategoriesHelp": "これらのカテゴリの番組はスポーツ番組として表示されます。複数の場合は '|' で区切ってください。", + "XmlTvPathHelp": "XMLTV ファイルのパス。Jellyfin はこのファイルを読み込んで定期的に更新を確認します。ファイルの作成と更新はあなたが責任を持って行ってください。", + "XmlTvNewsCategoriesHelp": "これらのカテゴリの番組はニュース番組として表示されます。複数の場合は '|' で区切ってください。", + "XmlTvMovieCategoriesHelp": "これらのカテゴリの番組は映画として表示されます。複数の場合は '|' で区切ってください。", + "XmlTvKidsCategoriesHelp": "これらのカテゴリの番組は子供向けとして表示されます。複数の場合は '|' で区切ってください。" } From 90b31102c059746c4af6cfd8dfd1e2721a8e76a1 Mon Sep 17 00:00:00 2001 From: Tomi Date: Mon, 26 Oct 2020 18:07:21 +0000 Subject: [PATCH 562/582] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index d1b794b17e..f431c755e2 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -13,12 +13,12 @@ "FileReadError": "Virhe tiedostoa luettaessa.", "LabelAudioLanguagePreference": "Äänen ensisijainen kieli:", "LabelCountry": "Maa:", - "LabelCurrentPassword": "Tämän hetkinen salasana:", + "LabelCurrentPassword": "Nykyinen salasana:", "LabelFinish": "Valmis", "LabelLanguage": "Kieli:", "LabelMaxParentalRating": "Suurin sallittu ikäraja:", "LabelNewPassword": "Uusi salasana:", - "LabelNewPasswordConfirm": "Uuden salasanan varmistus:", + "LabelNewPasswordConfirm": "Vahvista salasana:", "LabelSaveLocalMetadata": "Tallenna kuvamateriaali mediakansioihin", "LabelSaveLocalMetadataHelp": "Kuvamateriaalin ja metadatan tallentaminen suoraan kansioihin missä niitä on helppo muuttaa.", "LabelYoureDone": "Valmista!", @@ -117,7 +117,7 @@ "ButtonRefreshGuideData": "Päivitä oppaan tiedot", "ButtonRemove": "Poista", "ButtonRename": "Nimeä uudelleen", - "ButtonResetEasyPassword": "Nollaa helppo PIN-koodi", + "ButtonResetEasyPassword": "Nollaa PIN-koodi", "ButtonResume": "Jatka", "ButtonRevoke": "Peruuta", "ButtonScanAllLibraries": "Skannaa kaikki kirjastot", @@ -186,7 +186,7 @@ "DownloadsValue": "{0} latausta", "DrmChannelsNotImported": "Kanavia joissa on tekijänoikeusesto-ohjelmia, ei ladata.", "DropShadow": "Varjostus", - "EasyPasswordHelp": "Helppoa PIN-koodiasi käytetään offline-käyttöä tukevissa sovelluksissa, ja sitä voidaan myös käyttää verkossa kirjautumiseen.", + "EasyPasswordHelp": "Yksinkertaista PIN-koodiasi käytetään offline-käyttöön tuetuilla päätteillä. Sitä voidaan käyttää myös helppoon sisäänkirjautumiseen paikallisverkosta.", "Edit": "Muokkaa", "EditImages": "Muokkaa kuvia", "EditMetadata": "Muokkaa metadataa", @@ -299,7 +299,7 @@ "MessagePluginConfigurationRequiresLocalAccess": "Kirjaudu suoraan paikalliselle palvelimellesi muokataksesi tätä liitännäistä.", "MessagePleaseEnsureInternetMetadata": "Varmista, että metadatan lataus on käytössä.", "MessageNoServersAvailable": "Automaattisen palvelintunnistuksen avulla ei löydy palvelimia.", - "MessageInvalidForgotPasswordPin": "PIN-koodi on kelpaa tai vanhentunut. Yritä uudelleen.", + "MessageInvalidForgotPasswordPin": "Koodi on väärä tai se on vanhentunut. Yritä uudelleen.", "MessageImageTypeNotSelected": "Valitse kuvatyyppi pudotusvalikosta.", "MessageImageFileTypeAllowed": "Vain JPEG ja PNG tiedostomuotoja tuetaan.", "MessageContactAdminToResetPassword": "Ota yhteyttä järjestelmänvalvojaan nollataksesi salasanasi.", @@ -380,7 +380,7 @@ "HeaderIdentificationCriteriaHelp": "Lisää ainakin yksi tunnistuskriteeri.", "HeaderExternalIds": "Ulkoiset IDt:", "HeaderDirectPlayProfile": "Suoratoistoprofiili", - "HeaderEasyPinCode": "Helppo PIN-koodi", + "HeaderEasyPinCode": "Yksinkertainen PIN-koodi", "HeaderDownloadSync": "Lataus ja synkronointi", "HeaderDeveloperInfo": "Kehittäjäinfo", "HeaderDetectMyDevices": "Havaitse laitteitani", @@ -816,7 +816,7 @@ "LabelEnableBlastAliveMessages": "Lähetä hereilläolo -viesti", "LabelEnableBlastAliveMessagesHelp": "Ota tämä käyttöön, jos muilla verkon UPnP-laitteilla on ongelmia palvelimen havaitsemisessa.", "LabelEnableDlnaClientDiscoveryInterval": "Asiakaslaitteiden havaintoväli (sekunteina)", - "LabelEasyPinCode": "Helppo PIN-koodi:", + "LabelEasyPinCode": "Yksinkertainen PIN-koodi:", "LabelDynamicExternalId": "{0} Id:", "LabelDisplayLanguageHelp": "Jellyfinin kääntäminen on käynnissä oleva projekti.", "LabelDisplayLanguage": "Näytön kieli:", @@ -1165,7 +1165,7 @@ "LabelModelName": "Mallinimi", "LabelModelDescription": "Mallikuvaus", "LabelModelNumber": "Mallinumero", - "LabelInNetworkSignInWithEasyPassword": "Salli sisäverkkokirjautuminen helpolla PIN-koodilla", + "LabelInNetworkSignInWithEasyPassword": "Salli sisäverkkokirjautuminen PIN-koodilla", "HeaderCodecProfileHelp": "Dekooderiprofiilit määrittävät laitteen rajoitukset, kun se toistaa erityyppisiä koodauksia. Jos rajoitus on voimassa, sisältö koodataan uudelleen, vaikka koodaustyypiksi on asetettu suora toisto.", "Authorize": "Valtuuta", "EnableAutoCast": "Aseta oletukseksi", @@ -1184,5 +1184,6 @@ "ImportFavoriteChannelsHelp": "Ainoastaan kanavat, jotka on merkitty suosikkiksi viritinlaitteessa, tuodaan.", "HeaderTranscodingProfileHelp": "Lisää transkoodausprofiileja osoittamaan, mitä muotoja tulisi käyttää, kun transkoodaus on tarpeen.", "LabelAlbumArtMaxResHelp": "Upnp: albumArtURI -ominaisuuden kautta näytetyn albumikuvan enimmäistarkkuus.", - "KnownProxiesHelp": "Pilkuilla erotettu luettelo tunnettujen välityspalvelinten IP-osoitteista, joita käytetään muodostettaessa yhteyttä Jellyfin-palvelusi. Tämä vaaditaan X-Forwarded-For-otsikkojen oikeaan käyttöön. Uudelleenkäynnistys vaaditaan tallennuksen jälkeen." + "KnownProxiesHelp": "Pilkuilla erotettu luettelo tunnettujen välityspalvelinten IP-osoitteista, joita käytetään muodostettaessa yhteyttä Jellyfin-palvelusi. Tämä vaaditaan X-Forwarded-For-otsikkojen oikeaan käyttöön. Uudelleenkäynnistys vaaditaan tallennuksen jälkeen.", + "LabelInNetworkSignInWithEasyPasswordHelp": "Kirjaudu helppokäyttöisen PIN-koodin avulla sisään lähiverkon päätteisiin. Normaalia salasanaasi tarvitaan vain, kun kirjaudut sisään etäverkosta. Jos PIN-koodi jätetään tyhjäksi, et tarvitse salasanaa kotiverkossasi." } From 2bced31f42b397c4b388a86dacd47e1ab1eefd06 Mon Sep 17 00:00:00 2001 From: Tomi Date: Mon, 26 Oct 2020 19:09:36 +0000 Subject: [PATCH 563/582] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index f431c755e2..4ecb41fe7c 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -168,7 +168,7 @@ "DetectingDevices": "Tunnistetaan laitteita", "DeviceAccessHelp": "Tämä pätee ainoastaan laitteisiin, jotka voidaan tunnistaa uniikkina ja ei estä selainpääsyä. Uusien laitteiden suodattaminen estää niiden käyttämisen ennen hyväksyntää täältä.", "DirectPlaying": "Suoraan toistaminen", - "DirectStreamHelp1": "Tämä media on yhteensopiva laitteen kanssa katsoen resoluutiota ja mediatyyppiä (H.264, AC3, jne.), mutta se ei ole yhteensopivassa tiedostosäiliössä (mkv, avi, wmv, jne.). Tämä video uudelleenpakataan lennossa ennen laitteeseen lähetystä.", + "DirectStreamHelp1": "Tämä media on yhteensopiva laitteen kanssa resoluution ja mediatyyppin suhteen (H.264, AC3, jne.), mutta se ei tue tiedostomuotoja (mkv, avi, wmv, jne.). Tämä video uudelleenpakataan lennossa ennen laitteeseen lähetystä.", "DirectStreamHelp2": "Tiedoston suoratoisto käyttää erittäin vähän prosessorin resursseja ilman laadun heikkenemistä.", "DirectStreaming": "Suoratoisto", "Director": "Ohjaaja", @@ -197,7 +197,7 @@ "ButtonAddImage": "Lisää kuva", "Movies": "Elokuvat", "HeaderContinueWatching": "Jatka katsomista", - "HeaderAlbumArtists": "Albumin esittäjä", + "HeaderAlbumArtists": "Albumin artistit", "Genres": "Tyylilajit", "Folders": "Kansiot", "Favorites": "Suosikit", @@ -207,7 +207,7 @@ "ValueSpecialEpisodeName": "Erikois - {0}", "Sync": "Synkronoi", "Songs": "Kappaleet", - "Shows": "Sarjat", + "Shows": "Ohjelmat", "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.", "DeathDateValue": "Kuoli: {}", "CustomDlnaProfilesHelp": "Luo uusi profiili kohdistaaksesi uuteen laitteeseen tai ohittaaksesi järjestelmäprofiilin.", @@ -1021,12 +1021,12 @@ "EnableDetailsBannerHelp": "Näyttää julistekuvan yksityiskohdat -sivun ylälaidassa.", "EnableDetailsBanner": "Yksityiskohtien julistekuva", "ButtonSyncPlay": "SyncPlay", - "HeaderAccessSchedule": "Käyttöoikeusaikataulu", - "HeaderAccessScheduleHelp": "Luo käyttöoikeusaikataulu rajoittaaksesi käyttöä tietylle aikavälille.", + "HeaderAccessSchedule": "Käyttöaikataulu", + "HeaderAccessScheduleHelp": "Luo käyttötaulu rajoittaaksesi käyttöä tietylle aikavälille.", "HardwareAccelerationWarning": "Laitteistokiihdytyksen käyttöönotto voi aiheuttaa epävakautta joissain ympäristöissä. Varmista että sekä käyttöjärjestelmäsi että videoajurisi ovat ajan tasalla. Mikäli huomaat ongelmia videotoistossa säädettyäsi tätä asetusta, sinun täytyy muuttaa asetus takaisin kohtaan \"Ei mitään\".", "EncoderPresetHelp": "Valitse nopeampi arvo kohentaaksesi suorituskykyä tai hitaampi arvo parantaaksesi kuvanlaatua.", "H264CrfHelp": "Constant Rate Factor (CRF) on x264 -enkooderin kuvanlaadun vakioasetus. Voit valita arvon lukujen 0 ja 51 väliltä, jossa matalammat arvot tarkoittavat parempaa kuvanlaatua (suurempien tiedostokokojen hinnalla). Järkevät arvot ovat väliltä 18-28. Vakioarvo x264:lle on 23, joten voit käyttää sitä lähtökohtana.", - "GuideProviderSelectListings": "Valitse listaukset", + "GuideProviderSelectListings": "Valitse luettelot", "GuideProviderLogin": "Kirjaudu", "GuestStar": "Vieraileva tähti", "GroupVersions": "Ryhmitä versiot", @@ -1041,10 +1041,10 @@ "HeaderCancelRecording": "Peruuta tallennus", "HeaderBranding": "Brändäys", "HeaderBlockItemsWithNoRating": "Estä kaikki joissa ei ole luokitusta tai jonka luokitusta ei voida tunnistaa:", - "HeaderAppearsOn": "Esiintyy seuraavissa", + "HeaderAppearsOn": "Osallistuu", "ApiKeysCaption": "Lista aktiivisista API-avaimista", "HeaderApiKeysHelp": "Ulkoiset sovellukset tarvitsevat API-avaimen voidakseen toimia palvelimen kanssa. Avaimet myönnetään joko kirjautumalla sisään normaalilla käyttäjätunnuksella tai myöntämällä sellainen sovellukselle manuaalisesti.", - "HeaderAdditionalParts": "Muut osat", + "HeaderAdditionalParts": "Lisäosat", "HeaderActiveRecordings": "Käynnissä olevat nauhoitukset", "Data": "Tieto", "LabelImportOnlyFavoriteChannels": "Rajaa vain suosikkikanaviin", From d8a0abc6e90cfce2d4d23df347265b95797371ad Mon Sep 17 00:00:00 2001 From: Gubb Jonas Date: Mon, 26 Oct 2020 20:16:35 +0000 Subject: [PATCH 564/582] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 6c1dcdcfcc..ffd511339c 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -969,8 +969,8 @@ "SeriesRecordingScheduled": "Serieinspelning schemalagd.", "SeriesSettings": "Serieinställningar", "SeriesYearToPresent": "{0} - nu", - "ServerNameIsRestarting": "Jellyfin Server - {0} startas om.", - "ServerNameIsShuttingDown": "Jellyfin Server - {0} stängs ner.", + "ServerNameIsRestarting": "Servern på {0} startas om.", + "ServerNameIsShuttingDown": "Servern på {0} stängs ner.", "ServerRestartNeededAfterPluginInstall": "Jellyfin behöver startas om efter ett tillägg installeras.", "ServerUpdateNeeded": "Den här servern behöver uppdateras. För att ladda ner senaste versionen, gå till {0}", "Settings": "Inställningar", @@ -1251,7 +1251,7 @@ "DailyAt": "Dagligen vid {0}", "PersonRole": "som {0}", "ListPaging": "{0}-{1} av {2}", - "WriteAccessRequired": "Jellyfin Server kräver skrivrättigheter till denna katalog. Säkerställ skrivrättigheter och försök igen.", + "WriteAccessRequired": "Jellyfin kräver skrivrättigheter till denna katalog. Säkerställ skrivrättigheter och försök igen.", "PathNotFound": "Sökvägen hittades inte. Säkerställ att sökvägen är korrekt och försök igen.", "Season": "Säsong", "PreferEmbeddedEpisodeInfosOverFileNames": "Föredra inbäddad avsnittsinformation före filnamn", @@ -1378,5 +1378,16 @@ "PreviousTrack": "Hoppa över till föregående", "MessageGetInstalledPluginsError": "Ett fel inträffade när listan över installerade tillägg skulle hämtas.", "QuickConnectInvalidCode": "Ogiltig Snabbanslutningskod", - "QuickConnectDescription": "För att logga in med snabbanslutning, klicka på Snabbanslutning-knappen på den enhet du loggar in från, och ange koden som visas nedan." + "QuickConnectDescription": "För att logga in med snabbanslutning, klicka på Snabbanslutning-knappen på den enhet du loggar in från, och ange koden som visas nedan.", + "LabelSubtitleVerticalPosition": "Vertikal position:", + "LabelOpenclDevice": "OpenCL-enhet:", + "Video": "Video", + "ThumbCard": "Tumkort", + "Subtitle": "Undertext", + "SpecialFeatures": "Specialfunktioner", + "SelectServer": "Välj server", + "Restart": "Starta om", + "ResetPassword": "Återställ lösenord", + "QuickConnectNotActive": "Snabbanslutning är inte aktiverat på denna server", + "QuickConnectNotAvailable": "Be din serveradministratör aktivera snabbanslutning" } From 629871f5e98e6683066fbaec80c7a1d20fc42358 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 27 Oct 2020 02:56:18 +0000 Subject: [PATCH 565/582] Bump swiper from 6.3.3 to 6.3.4 Bumps [swiper](https://github.com/nolimits4web/Swiper) from 6.3.3 to 6.3.4. - [Release notes](https://github.com/nolimits4web/Swiper/releases) - [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md) - [Commits](https://github.com/nolimits4web/Swiper/compare/v6.3.3...v6.3.4) 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 12ad0536da..48391d4201 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.0.2", "sortablejs": "^1.12.0", - "swiper": "^6.3.3", + "swiper": "^6.3.4", "webcomponents.js": "^0.7.24", "whatwg-fetch": "^3.4.1" }, diff --git a/yarn.lock b/yarn.lock index 9df43191bc..da0eca8b9d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11227,10 +11227,10 @@ svgo@^1.0.0, svgo@^1.3.2: unquote "~1.1.1" util.promisify "~1.0.0" -swiper@^6.3.3: - version "6.3.3" - resolved "https://registry.yarnpkg.com/swiper/-/swiper-6.3.3.tgz#e0b2e27621c07e789bfa91569b5676e896d18001" - integrity sha512-SnG1weu2GhqKxuG4NTIA1A6OE9x3P/+d2DW6APLUgYNHm0ZgkAOxL/tEDubiHvgwqtaVaz6QWqkSbCaDYffSNg== +swiper@^6.3.4: + version "6.3.4" + resolved "https://registry.yarnpkg.com/swiper/-/swiper-6.3.4.tgz#94bebb39437825d303afd19d9f28927fa943e5f2" + integrity sha512-6XWBJCAjOTQd3yVVZO9y47B007QPeiCcn/pm9OkueVLpYNWZBAXpoX0P8JaGch/bzcaH3oXteWCj5KC8R3AloA== dependencies: dom7 "^3.0.0-alpha.7" ssr-window "^3.0.0-alpha.4" From abd66121c59f115299420e4a4b003838068765d4 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 27 Oct 2020 02:56:48 +0000 Subject: [PATCH 566/582] Bump confusing-browser-globals from 1.0.9 to 1.0.10 Bumps [confusing-browser-globals](https://github.com/facebook/create-react-app/tree/HEAD/packages/confusing-browser-globals) from 1.0.9 to 1.0.10. - [Release notes](https://github.com/facebook/create-react-app/releases) - [Changelog](https://github.com/facebook/create-react-app/blob/master/CHANGELOG-1.x.md) - [Commits](https://github.com/facebook/create-react-app/commits/confusing-browser-globals@1.0.10/packages/confusing-browser-globals) 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 12ad0536da..4f279c18fc 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "autoprefixer": "^9.8.6", "babel-loader": "^8.0.6", "browser-sync": "^2.26.13", - "confusing-browser-globals": "^1.0.9", + "confusing-browser-globals": "^1.0.10", "copy-webpack-plugin": "^5.1.1", "css-loader": "^5.0.0", "cssnano": "^4.1.10", diff --git a/yarn.lock b/yarn.lock index 9df43191bc..1deab8fae8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2830,10 +2830,10 @@ config-chain@^1.1.11: ini "^1.3.4" proto-list "~1.2.1" -confusing-browser-globals@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" - integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== +confusing-browser-globals@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== connect-history-api-fallback@^1: version "1.6.0" From 8ee87d4a65473e7c0c40c448f601898184370df5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 27 Oct 2020 02:57:18 +0000 Subject: [PATCH 567/582] Bump eslint from 7.11.0 to 7.12.0 Bumps [eslint](https://github.com/eslint/eslint) from 7.11.0 to 7.12.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.11.0...v7.12.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 12ad0536da..30f6be114c 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "css-loader": "^5.0.0", "cssnano": "^4.1.10", "del": "^6.0.0", - "eslint": "^7.11.0", + "eslint": "^7.12.0", "eslint-plugin-compat": "^3.5.1", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.22.1", diff --git a/yarn.lock b/yarn.lock index 9df43191bc..aa653092c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -861,10 +861,10 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@eslint/eslintrc@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" - integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== +"@eslint/eslintrc@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.0.tgz#bc7e3c4304d4c8720968ccaee793087dfb5fe6b4" + integrity sha512-+cIGPCBdLCzqxdtwppswP+zTsH9BOIGzAeKfBIbtb4gW/giMlfMwP0HUSFfhzh20f9u8uZ8hOp62+4GPquTbwQ== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -4143,13 +4143,13 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@^7.11.0: - version "7.11.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.11.0.tgz#aaf2d23a0b5f1d652a08edacea0c19f7fadc0b3b" - integrity sha512-G9+qtYVCHaDi1ZuWzBsOWo2wSwd70TXnU6UHA3cTYHp7gCTXZcpggWFoUVAMRarg68qtPoNfFbzPh+VdOgmwmw== +eslint@^7.12.0: + version "7.12.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.12.0.tgz#7b6a85f87a9adc239e979bb721cde5ce0dc27da6" + integrity sha512-n5pEU27DRxCSlOhJ2rO57GDLcNsxO0LPpAbpFdh7xmcDmjmlGUfoyrsB3I7yYdQXO5N3gkSTiDrPSPNFiiirXA== dependencies: "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.1.3" + "@eslint/eslintrc" "^0.2.0" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" From 7525794f21c29646ddcda73574a5526ef013de93 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 27 Oct 2020 02:58:28 +0000 Subject: [PATCH 568/582] Bump headroom.js from 0.11.0 to 0.12.0 Bumps [headroom.js](https://github.com/WickyNilliams/headroom.js) from 0.11.0 to 0.12.0. - [Release notes](https://github.com/WickyNilliams/headroom.js/releases) - [Commits](https://github.com/WickyNilliams/headroom.js/compare/v0.11.0...v0.12.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 12ad0536da..983e6a0e5c 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "epubjs": "^0.3.85", "fast-text-encoding": "^1.0.3", "flv.js": "^1.5.0", - "headroom.js": "^0.11.0", + "headroom.js": "^0.12.0", "hls.js": "^0.14.15", "howler": "^2.2.0", "intersection-observer": "^0.11.0", diff --git a/yarn.lock b/yarn.lock index 9df43191bc..b090b24157 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5593,10 +5593,10 @@ he@1.2.x, he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -headroom.js@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/headroom.js/-/headroom.js-0.11.0.tgz#26547a932025e4243abf8ace001b4ce5e110ed20" - integrity sha512-yI4ciZRD1WH22wa5uJDg2kMtRvhJwUJWo2l41Eby0BoAD+lzXL98lf5jDFxP4Q5W3HmlrpfItSfmqc3jCtasbw== +headroom.js@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/headroom.js/-/headroom.js-0.12.0.tgz#e09b466b18d22457f2023fb946ff620e47a5c205" + integrity sha512-iXnAafUm3FdzfJ91uixLws2hkKI1jC8bAKK/pt7XYr8Ie1jO7xbK48Ycpl9tUPyBgkzuj1p/PhJS0fy4E/5anA== hex-color-regex@^1.1.0: version "1.1.0" From f140dc54455f7fde33cb5146e8f3712e5674236d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 27 Oct 2020 06:27:38 +0000 Subject: [PATCH 569/582] Bump hls.js from 0.14.15 to 0.14.16 Bumps [hls.js](https://github.com/video-dev/hls.js) from 0.14.15 to 0.14.16. - [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.15...v0.14.16) 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 983e6a0e5c..cc7ef742e3 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "fast-text-encoding": "^1.0.3", "flv.js": "^1.5.0", "headroom.js": "^0.12.0", - "hls.js": "^0.14.15", + "hls.js": "^0.14.16", "howler": "^2.2.0", "intersection-observer": "^0.11.0", "jellyfin-apiclient": "^1.4.2", diff --git a/yarn.lock b/yarn.lock index b090b24157..18f8cafdb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5603,10 +5603,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.15: - version "0.14.15" - resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.15.tgz#3d41c6a51cef31d2629df2d9ad4333215770febe" - integrity sha512-zKOY9PZVeDBu3iXL6Dg8DfUPDEf71lTyy7JFgCOJXkqV48HeDfNoMhcN1trMrYRtMyFnpA7YBiI8c1DzSdLAFA== +hls.js@^0.14.16: + version "0.14.16" + resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.16.tgz#4ff68a1fa7260a43d316270e9bc7f7bdf93c5731" + integrity sha512-VACiO99DQFBpflR4fI+6GVHUZn35R0SGGQo0XTDZOm2BUXbeuDHTghTC/k2/3wGln6KBmG8/bXIcDIzDsY2UEg== dependencies: eventemitter3 "^4.0.3" url-toolkit "^2.1.6" From d1dc398cc53b3ba09cc88084cac24c1ac76fd9cf Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 27 Oct 2020 06:29:47 +0000 Subject: [PATCH 570/582] Bump webpack from 5.0.0 to 5.2.0 Bumps [webpack](https://github.com/webpack/webpack) from 5.0.0 to 5.2.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v5.0.0...v5.2.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 194 +++++++++------------------------------------------ 2 files changed, 35 insertions(+), 161 deletions(-) diff --git a/package.json b/package.json index 3da8bb4b93..9a28b01661 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "stylelint-config-rational-order": "^0.1.2", "stylelint-no-browser-hacks": "^1.2.1", "stylelint-order": "^4.1.0", - "webpack": "^5.0.0", + "webpack": "^5.2.0", "webpack-merge": "^4.2.2", "webpack-stream": "^6.1.0", "worker-plugin": "^5.0.0" diff --git a/yarn.lock b/yarn.lock index 50d8240197..7951f056ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -930,13 +930,6 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@npmcli/move-file@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" - integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== - dependencies: - mkdirp "^1.0.4" - "@sindresorhus/is@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" @@ -1306,7 +1299,7 @@ acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== -acorn@^8.0.3: +acorn@^8.0.4: version "8.0.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.4.tgz#7a3ae4191466a6984eee0fe3407a4f3aa9db8354" integrity sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ== @@ -2123,7 +2116,7 @@ browserslist@^1.1.3: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.14.3, browserslist@^4.6.4, browserslist@^4.8.5: +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.14.5, browserslist@^4.6.4, browserslist@^4.8.5: version "4.14.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.5.tgz#1c751461a102ddc60e40993639b709be7f2c4015" integrity sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA== @@ -2229,29 +2222,6 @@ cacache@^12.0.2, cacache@^12.0.3: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^15.0.5: - version "15.0.5" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" - integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== - dependencies: - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.0" - tar "^6.0.2" - unique-filename "^1.1.1" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2526,11 +2496,6 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -3877,10 +3842,10 @@ enhanced-resolve@^4.3.0: memory-fs "^0.5.0" tapable "^1.0.0" -enhanced-resolve@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.2.0.tgz#3db3307a608f236f33aeea79303d32915792cbab" - integrity sha512-NZlGLl8DxmZoq0uqPPtJfsCAir68uR047+Udsh1FH4+5ydGQdMurn/A430A1BtxASVmMEuS7/XiJ5OxJ9apAzQ== +enhanced-resolve@^5.3.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.3.1.tgz#3f988d0d7775bdc2d96ede321dc81f8249492f57" + integrity sha512-G1XD3MRGrGfNcf6Hg0LVZG7GIKcYkbfHa5QMxt1HDUTdYoXH0JR1xXyg+MaKLF73E9A27uWNVxvFivNRYeUB6w== dependencies: graceful-fs "^4.2.4" tapable "^2.0.0" @@ -4118,7 +4083,7 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.1.0, eslint-scope@^5.1.1: +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -4617,15 +4582,6 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -4811,13 +4767,6 @@ fs-extra@3.0.1: jsonfile "^3.0.0" universalify "^0.1.0" -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - fs-mkdirp-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" @@ -5936,7 +5885,7 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= -infer-owner@^1.0.3, infer-owner@^1.0.4: +infer-owner@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -6467,10 +6416,10 @@ jellyfin-apiclient@^1.4.2: version "1.0.3" resolved "https://github.com/jellyfin/jellyfin-noto#b784602db063734c721a46563ae5d6577ec2b35d" -jest-worker@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30" - integrity sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug== +jest-worker@^26.6.1: + version "26.6.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.1.tgz#c2ae8cde6802cc14056043f997469ec170d9c32a" + integrity sha512-R5IE3qSGz+QynJx8y+ICEkdI2OJ3RJjRQVEyCcFAd3yVhQSEtquziPO29Mlzgn07LOVE8u8jhJ1FqcwegiXWOw== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -7084,13 +7033,6 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - lru-queue@0.1: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" @@ -7113,7 +7055,7 @@ make-dir@^2.0.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -7430,42 +7372,6 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -7502,11 +7408,6 @@ mixin-deep@^1.2.0: dependencies: minimist "^1.2.5" -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -8470,7 +8371,7 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.1.0, pkg-dir@^4.2.0: +pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -10656,13 +10557,6 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -ssri@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" - integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== - dependencies: - minipass "^3.1.1" - stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -11292,18 +11186,6 @@ tar@^2.0.0: fstream "^1.0.12" inherits "2" -tar@^6.0.2: - version "6.0.5" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" - integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" @@ -11342,20 +11224,17 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser-webpack-plugin@^4.1.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" - integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== +terser-webpack-plugin@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.0.1.tgz#b1f02e43d93ca61a0bdd9e870f4e3489e12a6c9b" + integrity sha512-EwUe+XDTFf/2cAlmAlZZ7vRpNKMZUAypX2kIRm0Fmjlz4l7SqbI/VabmgiesNZW2nq/LR0N7ku/wlTQ6ygen0w== dependencies: - cacache "^15.0.5" - find-cache-dir "^3.3.1" - jest-worker "^26.5.0" + jest-worker "^26.6.1" p-limit "^3.0.2" schema-utils "^3.0.0" serialize-javascript "^5.0.1" source-map "^0.6.1" - terser "^5.3.4" - webpack-sources "^1.4.3" + terser "^5.3.8" terser@>=4, terser@^4.1.2, terser@^4.6.3: version "4.8.0" @@ -11366,10 +11245,10 @@ terser@>=4, terser@^4.1.2, terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.3.4: - version "5.3.5" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.5.tgz#9e080baa0568f96654621b20eb9effa440b1484e" - integrity sha512-Qw3CZAMmmfU824AoGKalx+riwocSI5Cs0PoGp9RdSLfmxkmJgyBxqLBP/isDNtFyhHnitikvRMZzyVgeq+U+Tg== +terser@^5.3.8: + version "5.3.8" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.8.tgz#991ae8ba21a3d990579b54aa9af11586197a75dd" + integrity sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ== dependencies: commander "^2.20.0" source-map "~0.7.2" @@ -12246,7 +12125,7 @@ webpack-merge@^4.2.2: dependencies: lodash "^4.17.15" -webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: +webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -12306,10 +12185,10 @@ webpack@^4.26.1: watchpack "^1.7.4" webpack-sources "^1.4.1" -webpack@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.0.0.tgz#c028b2f0c1db2322de1f4a30cc36f6e373d5a26a" - integrity sha512-OK+Q9xGgda3idw/DgCf75XsVFxRLPu48qPwygqI3W9ls5sDdKif5Ay4SM/1UVob0w4juJy14Zv9nNv0WeyV0aA== +webpack@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.2.0.tgz#02f22466b79751a80a50f20f027a716e296b3ef5" + integrity sha512-evtOjOJQq3zaHJIWsJjM4TGtNHtSrNVAIyQ+tdPW/fRd+4PLGbUG6S3xt+N4+QwDBOaCVd0xCWiHd4R6lWO5DQ== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.45" @@ -12317,11 +12196,11 @@ webpack@^5.0.0: "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/wasm-edit" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^8.0.3" - browserslist "^4.14.3" + acorn "^8.0.4" + browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.2.0" - eslint-scope "^5.1.0" + enhanced-resolve "^5.3.0" + eslint-scope "^5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" graceful-fs "^4.2.4" @@ -12332,7 +12211,7 @@ webpack@^5.0.0: pkg-dir "^4.2.0" schema-utils "^3.0.0" tapable "^2.0.0" - terser-webpack-plugin "^4.1.0" + terser-webpack-plugin "^5.0.0" watchpack "^2.0.0" webpack-sources "^2.0.1" @@ -12505,11 +12384,6 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - yaml@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" From 1049fa7396e69b9436a216fb1d14aacaf542e7d8 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 27 Oct 2020 06:30:32 +0000 Subject: [PATCH 571/582] Bump howler from 2.2.0 to 2.2.1 Bumps [howler](https://github.com/goldfire/howler.js) from 2.2.0 to 2.2.1. - [Release notes](https://github.com/goldfire/howler.js/releases) - [Changelog](https://github.com/goldfire/howler.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/goldfire/howler.js/compare/v2.2.0...v2.2.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 2c900eed8e..817975e9b6 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "flv.js": "^1.5.0", "headroom.js": "^0.12.0", "hls.js": "^0.14.16", - "howler": "^2.2.0", + "howler": "^2.2.1", "intersection-observer": "^0.11.0", "jellyfin-apiclient": "^1.4.2", "jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto", diff --git a/yarn.lock b/yarn.lock index d8fb8d2b7c..8b3f194e65 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5632,10 +5632,10 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== -howler@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/howler/-/howler-2.2.0.tgz#0e2c780997ae65ab9a1a186333031beac1c63c6b" - integrity sha512-sGPkrAQy7jh5mNDbkRNG0F82R2HFDYNsQXBcX4smXQT0y0F4UMsa/+jXaGwWvcrajWr2tDB7JUkH7G5qSnuIyQ== +howler@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/howler/-/howler-2.2.1.tgz#a521a9b495841e8bb9aa12e651bebba0affc179e" + integrity sha512-0iIXvuBO/81CcrQ/HSSweYmbT50fT2mIc9XMFb+kxIfk2pW/iKzDbX1n3fZmDXMEIpYvyyfrB+gXwPYSDqUxIQ== hsl-regex@^1.0.0: version "1.0.0" From 329a6feafce5feb58eb9a6c35f3a3cb2a6768d2b Mon Sep 17 00:00:00 2001 From: dkanada Date: Wed, 28 Oct 2020 14:27:19 +0900 Subject: [PATCH 572/582] remove broken features from user settings --- src/controllers/dashboard/users/useredit.html | 27 +++---------------- src/controllers/dashboard/users/useredit.js | 6 ----- .../dashboard/users/userlibraryaccess.js | 8 ++++-- src/strings/en-gb.json | 2 +- src/strings/en-us.json | 5 ++-- src/strings/fa.json | 2 +- 6 files changed, 15 insertions(+), 35 deletions(-) diff --git a/src/controllers/dashboard/users/useredit.html b/src/controllers/dashboard/users/useredit.html index dbf9cc066b..70a42afd50 100644 --- a/src/controllers/dashboard/users/useredit.html +++ b/src/controllers/dashboard/users/useredit.html @@ -140,32 +140,13 @@
    ${OptionAllowRemoteSharedDevicesHelp}
    -
    -

    ${HeaderDownloadSync}

    -
    - - -
    -
    +

    ${Other}

    -
    ${AllowMediaConversionHelp}
    -
    -
    - -
    +
    ${OptionAllowContentDownloadHelp}
    '; $('.deviceAccess', page).show().html(html); - $('#chkEnableAllDevices', page).prop('checked', user.Policy.EnableAllDevices); + const chkEnableAllDevices = page.querySelector('#chkEnableAllDevices'); + chkEnableAllDevices.checked = user.Policy.EnableAllDevices; + triggerChange(chkEnableAllDevices); if (user.Policy.IsAdministrator) { page.querySelector('.deviceAccessContainer').classList.add('hide'); diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index bf456e267e..850488862c 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1235,7 +1235,7 @@ "SelectAdminUsername": "Please select a username for the admin account.", "ButtonSplit": "Split", "HeaderNavigation": "Navigation", - "OptionForceRemoteSourceTranscoding": "Force transcoding of remote media sources (like LiveTV)", + "OptionForceRemoteSourceTranscoding": "Force transcoding of remote media sources such as Live TV", "MessageConfirmAppExit": "Do you want to exit?", "LabelVideoResolution": "Video resolution:", "LabelStreamType": "Stream type:", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index b3a1579b1e..ab547f3854 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1004,10 +1004,11 @@ "OptionAdminUsers": "Administrators", "OptionAllUsers": "All users", "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", - "OptionForceRemoteSourceTranscoding": "Force transcoding of remote media sources (like LiveTV)", + "OptionForceRemoteSourceTranscoding": "Force transcoding of remote media sources such as Live TV", "OptionAllowBrowsingLiveTv": "Allow Live TV access", - "OptionAllowContentDownloading": "Allow media downloading and syncing", + "OptionAllowContentDownload": "Allow media downloads", "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowContentDownloadHelp": "Users can download media and store it on their devices. This is not the same as a sync feature. Book libraries require this enabled to function properly.", "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", diff --git a/src/strings/fa.json b/src/strings/fa.json index a8f2202430..41daec8edf 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -832,7 +832,7 @@ "OptionAdminUsers": "Administrators", "OptionAllUsers": "All users", "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", - "OptionForceRemoteSourceTranscoding": "Force transcoding of remote media sources (like LiveTV)", + "OptionForceRemoteSourceTranscoding": "Force transcoding of remote media sources such as Live TV", "OptionAllowBrowsingLiveTv": "Allow Live TV access", "OptionAllowContentDownloading": "Allow media downloading and syncing", "OptionAllowLinkSharing": "Allow social media sharing", From c3a0900c3560cd5ed8a63aa1e91e91ad95a8ea37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=9C=BD?= Date: Wed, 28 Oct 2020 07:54:59 +0000 Subject: [PATCH 573/582] Translated using Weblate (Croatian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hr/ --- src/strings/hr.json | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/src/strings/hr.json b/src/strings/hr.json index d250eb449b..5bc95f7da3 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -65,7 +65,7 @@ "ChannelNumber": "Broj kanala", "CinemaModeConfigurationHelp": "Način kino donosi iskustvo kina izravno u vaš dnevni boravak s mogućnošću da se pokreću kratki filmovi i prilagođeni isječci prije glavne značajke.", "Composer": "Kompozitor", - "ConfigureDateAdded": "Podesite kako se datum dodavanja određuje na nadzornoj ploči Jellyfin Server-a u postavkama biblioteke", + "ConfigureDateAdded": "Podesite kako se datum dodavanja određuje na nadzornoj ploči u postavkama biblioteke", "ConfirmDeleteImage": "Izbriši sliku?", "ConfirmDeleteItem": "Brisanjem ove stavke će je izbrisati iz oba datotečnog sustava i medijskoj biblioteci. Jeste li sigurni da želite nastaviti?", "ConfirmDeleteItems": "Brisanjem ove stavke će se izbrisati iz oba datotečnog sustava i medijskoj biblioteci. Jeste li sigurni da želite nastaviti?", @@ -96,7 +96,7 @@ "Ended": "Završeno", "EndsAtValue": "Završava u {0}", "ErrorAddingListingsToSchedulesDirect": "Došlo je do pogreške prilikom dodavanja postava vašim zakazanim direktnim računima. Raspored dopušta samo ograničen broj postava po računu. Možda ćete morati se prijavite u zakazanim \"Direct\" web stranicama i ukloniti unose drugih s računa prije nastavka.", - "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.", + "ErrorAddingMediaPathToVirtualFolder": "Došlo je do pogreške prilikom dodavanja putanje medija. Provjerite dali je putanja valjana i da Jellyfin 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.", "ErrorStartHourGreaterThanEnd": "Vrijeme završetka mora biti veće od početka.", @@ -131,7 +131,7 @@ "HeaderAlert": "Uzbuna", "HeaderApiKey": "API ključ", "HeaderApiKeys": "API ključevi", - "HeaderApiKeysHelp": "Vanjske aplikacije moraju imati API ključ kako bi komunicirale s Jellyfin Serverom. Ključevi se izdaju prijavom s Jellyfin računom ili ručnim odobravanjem zahtjeva ključa.", + "HeaderApiKeysHelp": "Vanjske aplikacije moraju imati API ključ kako bi komunicirale s serverom. Ključevi se izdaju prijavom s korisničkim računom ili ručnim odobravanjem zahtjeva ključa.", "HeaderApp": "Aplikacija", "HeaderAudioSettings": "Postavke zvuka", "HeaderBranding": "Brendiranje", @@ -836,7 +836,7 @@ "XmlTvPathHelp": "Putanja do xml tv datoteke. Jellyfin će pročitati ovu datoteku i povremeno provjeravati ažuriranja. Vi ste odgovorni za stvaranje i ažuriranje datoteke.", "XmlTvSportsCategoriesHelp": "Programi s tim kategorijama će biti prikazani kao sportski programi. Odvojite više s '|'.", "Yesterday": "Jučer", - "AccessRestrictedTryAgainLater": "Dostup je trenutačno ograničen. Pokušajte poslije ponovno.", + "AccessRestrictedTryAgainLater": "Dostup je trenutačno ograničen. Pokušajte ponovo kasnije.", "Albums": "Albumi", "All": "Sve", "AllComplexFormats": "Svi kompleksni formati (ASS, SSA, VOBSUB, PGS, SUB, IDX, ...)", @@ -871,7 +871,7 @@ "AlwaysPlaySubtitlesHelp": "Prijevodi koji odgovaraju odabranom jeziku će uvijek biti odabrani unatoč jeziku audio zapisa.", "AlwaysPlaySubtitles": "Uvijek prikaži prijevod", "AllowRemoteAccessHelp": "Ako je odznačeno, svi udaljeni pristupi će biti blokirani.", - "AllowRemoteAccess": "Dopusti udaljene pristupe na ovaj Jellyfin server.", + "AllowRemoteAccess": "Dopusti udaljene pristupe na ovaj server.", "AllowOnTheFlySubtitleExtraction": "Dopusti izvlačenje prijevoda u hodu", "AllowMediaConversion": "Dopusti konverziju datoteke", "AllLanguages": "Svi jezici", @@ -1038,7 +1038,7 @@ "BoxRear": "Kutija (stražnja)", "ButtonSyncPlay": "SyncPlay", "DirectStreaming": "Direktno strujanje", - "DirectStreamHelp2": "Direktno strujanje datoteke koristi jako malo procesne snage bez gubitka kvalitete videozapisa.", + "DirectStreamHelp2": "Direktno strujanje datoteke koristi jako malo procesne snage sa zanemarljivim gubitkom kvalitete videozapisa.", "Desktop": "Stolno računalo", "ColorTransfer": "Prijenos boje", "ColorSpace": "Spektar boja", @@ -1047,5 +1047,28 @@ "Blacklist": "Crna lista", "AuthProviderHelp": "Odaberi pružatelja ovjere autentičnosti koji će se koristiti za provjeru lozinke.", "AllowFfmpegThrottling": "Uspori transkodiranje", - "AllowOnTheFlySubtitleExtractionHelp": "Ugrađeni titlovi mogu biti izvedeni iz videozapisa i dostavljena klijentima u običnom tekstu, u svrhu spriječavanja video transcodinga. Na nekim sustavima ovo može potrajati duže vrijeme i video reprodukcija može trzati tijekom postupka izvođenja. Onemogući ovo da imaš ugrađene titlove spaljene u video transkodingu kada nisu nativno podržani od strane uređaja klijenta." + "AllowOnTheFlySubtitleExtractionHelp": "Ugrađeni titlovi mogu biti izvedeni iz videozapisa i dostavljeni klijentima u običnom tekstu, u svrhu spriječavanja video transcodinga. Na nekim sustavima ovo može potrajati duže vrijeme i video reprodukcija može trzati tijekom postupka izvođenja. Onemogući ovo kako bi imao titlove ugrađene tokom video transkodinga u slučaju da ih uređaj klijenta ne podržava.", + "HeaderAppearsOn": "Pojavlja se u", + "Other": "Ostalo", + "ErrorDeletingItem": "Došlo je do greške prilikom brisanja stavke sa servera. Provjerite dali Jellyfin ima pristup pisanju media mapi i pokušajte ponovo.", + "ErrorAddingXmlTvFile": "Došlo je do greške pristupanju XMLTV datoteci. Potvrdite da datoteka postoji i pokušajte ponovo.", + "EnableDetailsBannerHelp": "Prikaži sliku natpisa na vrhu stranice detalja.", + "EnableDetailsBanner": "Natpis Detalja", + "EnableThemeVideosHelp": "Reprodukcija tematskih videa u pozadini za vrijeme pregleda biblioteke.", + "EnableThemeSongsHelp": "Reprodukcija tematskih pjesama u pozadini za vrijeme pregleda biblioteke.", + "EnableStreamLoopingHelp": "Omogući ovo ako se prijenosi uživo sastoje od samo nekoliko sekundi podataka i trebaju se neprekidno zahtjevati. Uključujući ovo kada nije potrebno može izazvati probleme.", + "EnableStreamLooping": "Automatski ponavljaj prijenose uživo", + "EnableQuickConnect": "Omogući brzo spajanje na ovom serveru", + "EnableNextVideoInfoOverlayHelp": "Na kraju videa, prikaži informacije o dolazećem videu u trenutnom popisu.", + "EnableNextVideoInfoOverlay": "Prikaži informacije idućeg videa za vrijeme reprodukcije", + "EnableDisplayMirroring": "Zrcaljenje prikaza", + "EnableBackdropsHelp": "Prikaži pozadinske slike u pozadini određenih stranica pri pregledavanju biblioteke.", + "EnableAutoCast": "Postavi kao zadano", + "DropShadow": "Bacanje Sjena", + "DisplayModeHelp": "Odaberi vrstu rasporeda koju želiš za sučelje.", + "Data": "Podatci", + "ChangingMetadataImageSettingsNewContent": "", + "ButtonUseQuickConnect": "Omogući Brzo Povezivanje", + "ButtonActivate": "Aktiviraj", + "AllowedRemoteAddressesHelp": "Popis IP adresa/mrežnih maska odvojen zarezom za sve mreže kojima je dozvoljen vanjski pristup. Ako je opcija prazna, svim vanjskim mrežama je pristup omogućen." } From 36323d6abf1e083502656b1af919d9bb00889ff1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Wed, 28 Oct 2020 09:10:57 +0000 Subject: [PATCH 574/582] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 209c725eb4..af991952ae 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1238,7 +1238,7 @@ "LabelPlayerDimensions": "Zobrazené rozlišení:", "LabelDroppedFrames": "Vynechané snímky:", "LabelCorruptedFrames": "Poškozené snímky:", - "OptionForceRemoteSourceTranscoding": "Vynutit překódování vzdálených zdrojů médií (např.: televizního vysílání)", + "OptionForceRemoteSourceTranscoding": "Vynutit překódování vzdálených zdrojů médií (např. televizního vysílání)", "NoCreatedLibraries": "Zdá se, že jste dosud nevytvořili žádnou knihovnu. {0}Chtěli byste nějakou vytvořit nyní?{1}", "AskAdminToCreateLibrary": "Požádejte administrátora o vytvoření knihovny.", "AllowFfmpegThrottlingHelp": "Pozastaví proces překódování či remuxování, pokud je dostatečně napřed, aby se spotřebovalo méně zdrojů. Nejvhodnější, pokud příliš nepřeskakujete. Pokud máte problémy s přehráváním, tuto funkci vypněte.", @@ -1420,5 +1420,7 @@ "EnableAutoCast": "Nastavit jako výchozí", "OptionMaxActiveSessionsHelp": "Hodnota 0 tuto funkci vypne.", "OptionMaxActiveSessions": "Nastavuje, kolik uživatelských relací může najednou existovat.", - "LabelUserMaxActiveSessions": "Maximální počet uživatelských relací najednou:" + "LabelUserMaxActiveSessions": "Maximální počet uživatelských relací najednou:", + "OptionAllowContentDownloadHelp": "Uživatelé si mohou média stáhnout a uložit na svá zařízení. Tato funkce není stejná jako synchronizace. Knihovny s knihami tuto funkci vyžadují ke správnému fungování.", + "OptionAllowContentDownload": "Povolit stahování médií" } From dcdf90870dd1270b74725f2dc456410efec807ad Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Wed, 28 Oct 2020 09:34:22 +0000 Subject: [PATCH 575/582] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 42bbe3b3f1..25efd5ebf1 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -1420,5 +1420,7 @@ "LabelXDlnaCap": "Phần đầu X-DLNA:", "OptionMaxActiveSessionsHelp": "Giá trị 0 sẽ vô hiệu hóa tính năng.", "OptionMaxActiveSessions": "Đặt số lượng phiên người dùng đồng thời tối đa.", - "LabelUserMaxActiveSessions": "Số lượng phiên người dùng cùng lúc tối đa:" + "LabelUserMaxActiveSessions": "Số lượng phiên người dùng cùng lúc tối đa:", + "OptionAllowContentDownloadHelp": "Người dùng có thể tải xuống phương tiện và lưu trữ trên thiết bị của họ. Điều này không giống như một tính năng đồng bộ hóa. Thư viện sách yêu cầu kích hoạt này để hoạt động bình thường.", + "OptionAllowContentDownload": "Cho phép tải xuống phương tiện" } From c16332162ca7f7ad791dc24de0750d1ce8e490d1 Mon Sep 17 00:00:00 2001 From: minob Date: Wed, 28 Oct 2020 13:49:34 +0000 Subject: [PATCH 576/582] 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, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index c62d1a8e51..1955df4ac2 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1420,5 +1420,7 @@ "XmlTvPathHelp": "XMLTV ファイルのパス。Jellyfin はこのファイルを読み込んで定期的に更新を確認します。ファイルの作成と更新はあなたが責任を持って行ってください。", "XmlTvNewsCategoriesHelp": "これらのカテゴリの番組はニュース番組として表示されます。複数の場合は '|' で区切ってください。", "XmlTvMovieCategoriesHelp": "これらのカテゴリの番組は映画として表示されます。複数の場合は '|' で区切ってください。", - "XmlTvKidsCategoriesHelp": "これらのカテゴリの番組は子供向けとして表示されます。複数の場合は '|' で区切ってください。" + "XmlTvKidsCategoriesHelp": "これらのカテゴリの番組は子供向けとして表示されます。複数の場合は '|' で区切ってください。", + "OptionAllowContentDownloadHelp": "ユーザーのデバイスにメディアのダウンロードと保存ができます。これは同期機能とは異なります。ブックライブラリが正しく機能するには有効化が必要です。", + "OptionAllowContentDownload": "メディアのダウンロードを許可" } From 9b015adeacd844baffb3b599a7325a27af2f134f Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 28 Oct 2020 15:45:02 +0000 Subject: [PATCH 577/582] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index fbb7b69a5c..5c57cc19c3 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1420,5 +1420,7 @@ "Authorize": "Autorisieren", "OptionMaxActiveSessionsHelp": "Ein Wert von 0 deaktiviert die Funktion.", "OptionMaxActiveSessions": "Legt die maximale Anzahl gleichzeitiger Benutzer-Sessions fest.", - "LabelUserMaxActiveSessions": "Maximale Anzahl von gleichzeitigen Benutzer-Sessions:" + "LabelUserMaxActiveSessions": "Maximale Anzahl von gleichzeitigen Benutzer-Sessions:", + "OptionAllowContentDownloadHelp": "Benutzer können Medien herunterladen und auf ihren Geräten speichern. Dies ist nicht dasselbe wie eine Synchronisierungsfunktion. Buchbibliotheken benötigen diese Funktion, um ordnungsgemäß zu funktionieren.", + "OptionAllowContentDownload": "Mediendownloads zulassen" } From b58561bcb6ac602bfd9333b1bbedaa4c619036c1 Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Wed, 28 Oct 2020 18:37:32 +0000 Subject: [PATCH 578/582] 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, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index b9ee50c1bd..c1d8623f3a 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -782,7 +782,7 @@ "OptionAllowLinkSharing": "Permitir compartir en redes sociales", "OptionAllowContentDownloading": "Permitir la descarga y sincronización de medios", "OptionAllowBrowsingLiveTv": "Permitir el acceso a TV en vivo", - "OptionForceRemoteSourceTranscoding": "Forzar la transcodificación de fuentes de medios remotos (como LiveTV)", + "OptionForceRemoteSourceTranscoding": "Forzar la transcodificación de fuentes de medios remotas como Live TV", "OptionAllowAudioPlaybackTranscoding": "Permitir reproducción de audio que requiere transcodificación", "OptionAllUsers": "Todos los usuarios", "OptionAdminUsers": "Administradores", @@ -1420,5 +1420,7 @@ "Authorize": "Autorizar", "OptionMaxActiveSessionsHelp": "Un valor de 0 deshabilita la función.", "OptionMaxActiveSessions": "Establece el número máximo de sesiones de usuario simultáneas.", - "LabelUserMaxActiveSessions": "Número máximo de sesiones de usuario simultáneas:" + "LabelUserMaxActiveSessions": "Número máximo de sesiones de usuario simultáneas:", + "OptionAllowContentDownloadHelp": "Los usuarios pueden descargar medios y almacenarlos en sus dispositivos. No es lo mismo que una función de sincronización. Las bibliotecas de libros requieren que esta habilitado funcione correctamente.", + "OptionAllowContentDownload": "Permitir descargas de medios" } From a412495ba8d5ba3dd531ada4c58376f079641437 Mon Sep 17 00:00:00 2001 From: Tomi Date: Thu, 29 Oct 2020 09:59:25 +0000 Subject: [PATCH 579/582] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 4ecb41fe7c..f46f4232bb 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1185,5 +1185,10 @@ "HeaderTranscodingProfileHelp": "Lisää transkoodausprofiileja osoittamaan, mitä muotoja tulisi käyttää, kun transkoodaus on tarpeen.", "LabelAlbumArtMaxResHelp": "Upnp: albumArtURI -ominaisuuden kautta näytetyn albumikuvan enimmäistarkkuus.", "KnownProxiesHelp": "Pilkuilla erotettu luettelo tunnettujen välityspalvelinten IP-osoitteista, joita käytetään muodostettaessa yhteyttä Jellyfin-palvelusi. Tämä vaaditaan X-Forwarded-For-otsikkojen oikeaan käyttöön. Uudelleenkäynnistys vaaditaan tallennuksen jälkeen.", - "LabelInNetworkSignInWithEasyPasswordHelp": "Kirjaudu helppokäyttöisen PIN-koodin avulla sisään lähiverkon päätteisiin. Normaalia salasanaasi tarvitaan vain, kun kirjaudut sisään etäverkosta. Jos PIN-koodi jätetään tyhjäksi, et tarvitse salasanaa kotiverkossasi." + "LabelInNetworkSignInWithEasyPasswordHelp": "Kirjaudu helppokäyttöisen PIN-koodin avulla sisään lähiverkon päätteisiin. Normaalia salasanaasi tarvitaan vain, kun kirjaudut sisään etäverkosta. Jos PIN-koodi jätetään tyhjäksi, et tarvitse salasanaa kotiverkossasi.", + "LabelDateAddedBehaviorHelp": "Jos metatietoarvo on olemassa, sitä käytetään aina näiden vaihtoehtojen sijaan.", + "LabelCurrentStatus": "Nykyinen tila:", + "LabelCachePathHelp": "Määritä välimuistitiedostojen, kuten kuvien, polku. Jätä tyhjäksi käyttääksesi palvelimen oletusarvoa.", + "LabelBlastMessageIntervalHelp": "Määrittää ajan sekunteina jokaisen \"Olen elossa\" -viestin välillä.", + "LabelBindToLocalNetworkAddressHelp": "Korvaa HTTP-palvelimen paikallinen IP-osoite. Jos se on tyhjä, palvelin linkitetään kaikkiin käytettävissä oleviin osoitteisiin. Tämän arvon muuttaminen edellyttää uudelleenkäynnistystä." } From 633821857281b80d05a735667060b8a2f6597360 Mon Sep 17 00:00:00 2001 From: Tomi Date: Thu, 29 Oct 2020 10:03:02 +0000 Subject: [PATCH 580/582] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index f46f4232bb..dbe4980484 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1190,5 +1190,6 @@ "LabelCurrentStatus": "Nykyinen tila:", "LabelCachePathHelp": "Määritä välimuistitiedostojen, kuten kuvien, polku. Jätä tyhjäksi käyttääksesi palvelimen oletusarvoa.", "LabelBlastMessageIntervalHelp": "Määrittää ajan sekunteina jokaisen \"Olen elossa\" -viestin välillä.", - "LabelBindToLocalNetworkAddressHelp": "Korvaa HTTP-palvelimen paikallinen IP-osoite. Jos se on tyhjä, palvelin linkitetään kaikkiin käytettävissä oleviin osoitteisiin. Tämän arvon muuttaminen edellyttää uudelleenkäynnistystä." + "LabelBindToLocalNetworkAddressHelp": "Korvaa HTTP-palvelimen paikallinen IP-osoite. Jos se on tyhjä, palvelin linkitetään kaikkiin käytettävissä oleviin osoitteisiin. Tämän arvon muuttaminen edellyttää uudelleenkäynnistystä.", + "LabelDefaultUserHelp": "Määrittää käyttäjän kirjaston, joka näytetään liitetyissä laitteissa. Tätä asetusta voidaan muuttaa laitekohtaisesti laiteprofiilin avulla." } From 53c12be19113c9d93450bf092b0987e0aacd4d0f Mon Sep 17 00:00:00 2001 From: karottenbaum Date: Thu, 29 Oct 2020 11:43:30 +0000 Subject: [PATCH 581/582] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 5c57cc19c3..2ad4f3d755 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1356,7 +1356,7 @@ "Subtitle": "Untertitel", "SelectServer": "Server auswählen", "Restart": "Neustarten", - "ResetPassword": "Passwort zurücksetzten", + "ResetPassword": "Passwort zurücksetzen", "Profile": "Profil", "MusicVideos": "Musikvideos", "Image": "Bild", From 6c1cecbff5282844468f17a71cfce99c735fb055 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Thu, 29 Oct 2020 17:10:26 +0000 Subject: [PATCH 582/582] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index bf094eb171..554f14cbc0 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1412,5 +1412,6 @@ "Authorize": "Авторизация", "LabelUserMaxActiveSessions": "Максимальное количество одновременных пользовательских сессий:", "OptionMaxActiveSessionsHelp": "Значение 0 отключит эту функцию.", - "OptionMaxActiveSessions": "Устанавливает максимальное количество одновременных пользовательских сеансов." + "OptionMaxActiveSessions": "Устанавливает максимальное количество одновременных пользовательских сеансов.", + "OptionAllowContentDownload": "Разрешить загрузку медиафайлов" }