diff --git a/dashboard-ui/autoorganizelog.html b/dashboard-ui/autoorganizelog.html index 708d982149..714114a68e 100644 --- a/dashboard-ui/autoorganizelog.html +++ b/dashboard-ui/autoorganizelog.html @@ -16,7 +16,7 @@
- + diff --git a/dashboard-ui/bower_components/emby-apiclient/.bower.json b/dashboard-ui/bower_components/emby-apiclient/.bower.json index 63c2505b90..7e52e65bb3 100644 --- a/dashboard-ui/bower_components/emby-apiclient/.bower.json +++ b/dashboard-ui/bower_components/emby-apiclient/.bower.json @@ -16,12 +16,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.1.87", - "_release": "1.1.87", + "version": "1.1.89", + "_release": "1.1.89", "_resolution": { "type": "version", - "tag": "1.1.87", - "commit": "21057764cdf82e9ef08514cca4e48c76d47e535f" + "tag": "1.1.89", + "commit": "eb7fd9c48824ee465f324e855025c8f66a37b628" }, "_source": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript.git", "_target": "^1.1.51", diff --git a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js index f594a455dc..48588941d3 100644 --- a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js +++ b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js @@ -216,7 +216,7 @@ return connectUser; }; - var minServerVersion = '3.0.5986'; + var minServerVersion = '3.0.5994'; self.minServerVersion = function (val) { if (val) { @@ -1087,7 +1087,8 @@ Servers: [server] }); - } if (result.Id !== server.Id) { + } + else if (result.Id !== server.Id) { // http request succeeded, but it's a different server than what was expected testNextConnectionMode(tests, index + 1, server, options, resolve); @@ -1249,49 +1250,40 @@ self.loginToConnect = function (username, password) { - return new Promise(function (resolve, reject) { + if (!username) { + return Promise.reject(); + return; + } + if (!password) { + return Promise.reject(); + return; + } - if (!username) { - reject(); - return; - } - if (!password) { - reject(); - return; + return ajax({ + type: "POST", + url: "https://connect.emby.media/service/user/authenticate", + data: { + nameOrEmail: username, + password: password + }, + dataType: "json", + contentType: 'application/x-www-form-urlencoded; charset=UTF-8', + headers: { + "X-Application": appName + "/" + appVersion } - require(['cryptojs-md5'], function () { + }).then(function (result) { - var md5 = getConnectPasswordHash(password); + var credentials = credentialProvider.credentials(); - ajax({ - type: "POST", - url: "https://connect.emby.media/service/user/authenticate", - data: { - nameOrEmail: username, - password: md5 - }, - dataType: "json", - contentType: 'application/x-www-form-urlencoded; charset=UTF-8', - headers: { - "X-Application": appName + "/" + appVersion - } + credentials.ConnectAccessToken = result.AccessToken; + credentials.ConnectUserId = result.User.Id; - }).then(function (result) { + credentialProvider.credentials(credentials); - var credentials = credentialProvider.credentials(); + onConnectUserSignIn(result.User); - credentials.ConnectAccessToken = result.AccessToken; - credentials.ConnectUserId = result.User.Id; - - credentialProvider.credentials(credentials); - - onConnectUserSignIn(result.User); - - resolve(result); - - }, reject); - }); + return result; }); }; @@ -1302,104 +1294,61 @@ var password = options.password; var passwordConfirm = options.passwordConfirm; - return new Promise(function (resolve, reject) { + if (!email) { + return Promise.reject({ errorCode: 'invalidinput' }); + } + if (!username) { + return Promise.reject({ errorCode: 'invalidinput' }); + } + if (!password) { + return Promise.reject({ errorCode: 'invalidinput' }); + } + if (!passwordConfirm) { + return Promise.reject({ errorCode: 'passwordmatch' }); + } + if (password !== passwordConfirm) { + return Promise.reject({ errorCode: 'passwordmatch' }); + } - if (!email) { - reject({ errorCode: 'invalidinput' }); - return; - } - if (!username) { - reject({ errorCode: 'invalidinput' }); - return; - } - if (!password) { - reject({ errorCode: 'invalidinput' }); - return; - } - if (!passwordConfirm) { - reject({ errorCode: 'passwordmatch' }); - return; - } - if (password !== passwordConfirm) { - reject({ errorCode: 'passwordmatch' }); - return; + var data = { + email: email, + userName: username, + password: password + }; + + if (options.grecaptcha) { + data.grecaptcha = options.grecaptcha; + } + + return ajax({ + type: "POST", + url: "https://connect.emby.media/service/register", + data: data, + dataType: "json", + contentType: 'application/x-www-form-urlencoded; charset=UTF-8', + headers: { + "X-Application": appName + "/" + appVersion, + "X-CONNECT-TOKEN": "CONNECT-REGISTER" } - require(['cryptojs-md5'], function () { + }).catch(function (response) { - var md5 = getConnectPasswordHash(password); + try { + return response.json(); + } catch (err) { + throw err; + } - var data = { - email: email, - userName: username, - password: md5 - }; + }).then(function (result) { - if (options.grecaptcha) { - data.grecaptcha = options.grecaptcha; - } - - ajax({ - type: "POST", - url: "https://connect.emby.media/service/register", - data: data, - dataType: "json", - contentType: 'application/x-www-form-urlencoded; charset=UTF-8', - headers: { - "X-Application": appName + "/" + appVersion, - "X-CONNECT-TOKEN": "CONNECT-REGISTER" - } - - }).then(resolve, function (response) { - - try { - return response.json(); - - } catch (err) { - reject(); - } - - }).then(function (result) { - - if (result && result.Status) { - reject({ errorCode: result.Status }); - } else { - reject(); - } - - }, reject); - }); + if (result && result.Status) { + return Promise.reject({ errorCode: result.Status }); + } else { + Promise.reject(); + } }); }; - function replaceAllWithSplit(str, find, replace) { - - return str.split(find).join(replace); - } - - function cleanConnectPassword(password) { - - password = password || ''; - - password = replaceAllWithSplit(password, "&", "&"); - password = replaceAllWithSplit(password, "/", "\"); - password = replaceAllWithSplit(password, "!", "!"); - password = replaceAllWithSplit(password, "$", "$"); - password = replaceAllWithSplit(password, "\"", """); - password = replaceAllWithSplit(password, "<", "<"); - password = replaceAllWithSplit(password, ">", ">"); - password = replaceAllWithSplit(password, "'", "'"); - - return password; - } - - function getConnectPasswordHash(password) { - - password = cleanConnectPassword(password); - - return CryptoJS.MD5(password).toString(); - } - self.getApiClient = function (item) { // Accept string + object diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index 1ff08bfc68..d1e494212e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/.bower.json +++ b/dashboard-ui/bower_components/emby-webcomponents/.bower.json @@ -14,12 +14,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.4.302", - "_release": "1.4.302", + "version": "1.4.307", + "_release": "1.4.307", "_resolution": { "type": "version", - "tag": "1.4.302", - "commit": "20e464bac58bf2fe4408dc20e98d127fdfa0c692" + "tag": "1.4.307", + "commit": "115fba2defaa8e0a08a0dc00b0ff03ba08e45b9f" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.1", diff --git a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css index 3149ba5da3..9e075d63e4 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css +++ b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css @@ -9,11 +9,13 @@ } .actionsheet-not-fullscreen { - background-color: #2a2a2a; + background-color: #121314; + max-width: 90%; + max-height: 90%; } .actionSheetMenuItem:hover { - background-color: #333; + background-color: #222; } .actionsheet-fullscreen { @@ -35,6 +37,7 @@ flex-grow: 1; align-items: center; text-align: center; + overflow: hidden; } .actionSheetMenuItem { @@ -63,7 +66,7 @@ } .actionSheetItemText-extraspacing { - padding: .8em 0; + padding: .9em 0; } .emby-button-noflex .actionSheetItemText { diff --git a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js index fd06b26f59..5a829c745f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js +++ b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js @@ -97,9 +97,7 @@ var dialogOptions = { removeOnClose: true, enableHistory: options.enableHistory, - scrollY: false, - entryAnimation: options.entryAnimation, - exitAnimation: options.exitAnimation + scrollY: false }; var backButton = false; @@ -113,7 +111,7 @@ } else { dialogOptions.modal = false; - dialogOptions.entryAnimationDuration = options.entryAnimationDuration || 140; + dialogOptions.entryAnimationDuration = options.entryAnimationDuration || 160; dialogOptions.exitAnimationDuration = options.exitAnimationDuration || 180; dialogOptions.autoFocus = false; } diff --git a/dashboard-ui/bower_components/emby-webcomponents/backdrop/backdrop.js b/dashboard-ui/bower_components/emby-webcomponents/backdrop/backdrop.js index 9c7725b26a..defcbdc205 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/backdrop/backdrop.js +++ b/dashboard-ui/bower_components/emby-webcomponents/backdrop/backdrop.js @@ -7,7 +7,7 @@ return false; } - return elem.animate; + return true; } function enableRotation() { @@ -23,6 +23,7 @@ var self = this; var isDestroyed; + var currentAnimatingElement; self.load = function (url, parent, existingBackdropImage) { @@ -39,6 +40,7 @@ backdropImage.style.backgroundImage = "url('" + url + "')"; backdropImage.setAttribute('data-url', url); + backdropImage.style.animation = 'backdrop-fadein ' + 800 + 'ms ease-in normal both'; parent.appendChild(backdropImage); if (!enableAnimation(backdropImage)) { @@ -49,37 +51,26 @@ return; } - var animation = fadeIn(backdropImage, 1); - currentAnimation = animation; - animation.onfinish = function () { + setTimeout(function () { - if (animation === currentAnimation) { - currentAnimation = null; + if (backdropImage === currentAnimatingElement) { + currentAnimatingElement = null; } if (existingBackdropImage && existingBackdropImage.parentNode) { existingBackdropImage.parentNode.removeChild(existingBackdropImage); } - }; + }, 800); internalBackdrop(true); }; img.src = url; }; - var currentAnimation; - function fadeIn(elem, iterations) { - var keyframes = [ - { opacity: '0', offset: 0 }, - { opacity: '1', offset: 1 }]; - var timing = { duration: 800, iterations: iterations, easing: 'ease-in' }; - return elem.animate(keyframes, timing); - } - function cancelAnimation() { - var animation = currentAnimation; - if (animation) { - animation.cancel(); - currentAnimation = null; + var elem = currentAnimatingElement; + if (elem) { + elem.style.animation = ''; + currentAnimatingElement = null; } } diff --git a/dashboard-ui/bower_components/emby-webcomponents/backdrop/style.css b/dashboard-ui/bower_components/emby-webcomponents/backdrop/style.css index 8055b653d3..4ee1cf6da6 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/backdrop/style.css +++ b/dashboard-ui/bower_components/emby-webcomponents/backdrop/style.css @@ -14,3 +14,13 @@ bottom: 0; contain: layout style; } + +@keyframes backdrop-fadein { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css index 175970f3af..447702485b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css +++ b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css @@ -92,14 +92,7 @@ button { } .cardBox-mobile { - margin: 1px; -} - -@media all and (min-width: 600px) { - - .cardBox-mobile { - margin: 2px; - } + margin: 2px; } .card:focus { @@ -156,14 +149,6 @@ button { height: 100%; } -@media all and (min-width: 600px) { - - .cardImageContainer { - /* Should be 0 with visualCardBox, but not really noticeable */ - border-radius: 1px; - } -} - .chapterCardImageContainer { background-color: #000; border-radius: 0; @@ -411,17 +396,17 @@ button { } .overflowPortraitCard-scalable { - width: 40%; + width: 42%; max-width: 200px; } .overflowBackdropCard-scalable { - width: 70%; + width: 72%; max-width: 400px; } .overflowSquareCard-scalable { - width: 40%; + width: 42%; max-width: 200px; } diff --git a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js index 4ce3387b19..4400081e71 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js +++ b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js @@ -149,7 +149,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo if (screenWidth >= 540) { return 100 / 30; } - return 100 / 40; + return 100 / 42; case 'overflowSquare': if (screenWidth >= 1000) { return 100 / 22; @@ -157,7 +157,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo if (screenWidth >= 540) { return 100 / 30; } - return 100 / 40; + return 100 / 42; case 'overflowBackdrop': if (screenWidth >= 1000) { return 100 / 40; @@ -168,7 +168,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo if (screenWidth >= 540) { return 100 / 64; } - return 100 / 70; + return 100 / 72; default: return 4; } diff --git a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.css b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.css index b223babc57..98c0d4eede 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.css +++ b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.css @@ -40,6 +40,74 @@ box-shadow: none; } +@keyframes scaledown { + from { + opacity: 1; + transform: none; + } + + to { + opacity: 0; + transform: scale(0); + } +} + +@keyframes scaleup { + from { + transform: scale(0); + } + + to { + transform: none; + } +} + +@keyframes fadein { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +@keyframes fadeout { + + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +@keyframes slideup { + from { + opacity: 0; + transform: translate3d(0, 30%, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +@keyframes slidedown { + + from { + opacity: 1; + transform: none; + } + + to { + opacity: 0; + transform: translate3d(0, 30%, 0); + } +} + @media all and (max-width: 1280px), all and (max-height: 720px) { .dialog-fixedSize, .dialog-fullscreen-lowres { diff --git a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js index b5e7ce2e46..7c4ca8c98a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js @@ -3,19 +3,6 @@ var globalOnOpenCallback; - function enableAnimation() { - - if (browser.animate) { - return true; - } - - if (browser.edge) { - return true; - } - - return false; - } - function removeCenterFocus(dlg) { if (layoutManager.tv) { @@ -207,60 +194,6 @@ } } - function scaleUp(elem, onFinish) { - - var keyframes = [ - { transform: 'scale(0)', offset: 0 }, - { transform: 'none', offset: 1 }]; - var timing = elem.animationConfig.entry.timing; - elem.animate(keyframes, timing).onfinish = onFinish; - } - - function slideUp(elem, onFinish) { - - var keyframes = [ - { transform: 'translate3d(0,30%,0)', opacity: 0, offset: 0 }, - { transform: 'none', opacity: 1, offset: 1 }]; - var timing = elem.animationConfig.entry.timing; - elem.animate(keyframes, timing).onfinish = onFinish; - } - - function fadeIn(elem, onFinish) { - - var keyframes = [ - { opacity: '0', offset: 0 }, - { opacity: '1', offset: 1 }]; - var timing = elem.animationConfig.entry.timing; - elem.animate(keyframes, timing).onfinish = onFinish; - } - - function scaleDown(elem) { - - var keyframes = [ - { transform: 'none', opacity: 1, offset: 0 }, - { transform: 'scale(0)', opacity: 0, offset: 1 }]; - var timing = elem.animationConfig.exit.timing; - return elem.animate(keyframes, timing); - } - - function fadeOut(elem) { - - var keyframes = [ - { opacity: '1', offset: 0 }, - { opacity: '0', offset: 1 }]; - var timing = elem.animationConfig.exit.timing; - return elem.animate(keyframes, timing); - } - - function slideDown(elem, onFinish) { - - var keyframes = [ - { transform: 'none', opacity: 1, offset: 0 }, - { transform: 'translate3d(0,30%,0)', opacity: 0, offset: 1 }]; - var timing = elem.animationConfig.entry.timing; - return elem.animate(keyframes, timing); - } - function closeDialog(dlg) { if (!dlg.classList.contains('hide')) { @@ -274,34 +207,13 @@ focusManager.popScope(dlg); dlg.classList.add('hide'); - if (dlg.close) { - dlg.close(); - } else { - dlg.dispatchEvent(new CustomEvent('close', { - bubbles: false, - cancelable: false - })); - } + dlg.dispatchEvent(new CustomEvent('close', { + bubbles: false, + cancelable: false + })); }; - if (!dlg.animationConfig) { - onAnimationFinish(); - return; - } - var animation; - - if (dlg.animationConfig.exit.name === 'fadeout') { - animation = fadeOut(dlg); - } else if (dlg.animationConfig.exit.name === 'scaledown') { - animation = scaleDown(dlg); - } else if (dlg.animationConfig.exit.name === 'slidedown') { - animation = slideDown(dlg); - } else { - onAnimationFinish(); - return; - } - - animation.onfinish = onAnimationFinish; + animateDialogClose(dlg, onAnimationFinish); } } @@ -314,17 +226,27 @@ } }; - if (!dlg.animationConfig) { - onAnimationFinish(); - return; - } - if (dlg.animationConfig.entry.name === 'fadein') { - fadeIn(dlg, onAnimationFinish); - } else if (dlg.animationConfig.entry.name === 'scaleup') { - scaleUp(dlg, onAnimationFinish); - } else if (dlg.animationConfig.entry.name === 'slideup') { - slideUp(dlg, onAnimationFinish); + setTimeout(onAnimationFinish, dlg.animationConfig.entry.timing.duration); + } + + function animateDialogClose(dlg, onAnimationFinish) { + + switch (dlg.animationConfig.exit.name) { + + case 'fadeout': + dlg.style.animation = 'fadeout ' + dlg.animationConfig.exit.timing.duration + 'ms ease-out normal both'; + break; + case 'scaledown': + dlg.style.animation = 'scaledown ' + dlg.animationConfig.exit.timing.duration + 'ms ease-out normal both'; + break; + case 'slidedown': + dlg.style.animation = 'slidedown ' + dlg.animationConfig.exit.timing.duration + 'ms ease-out normal both'; + break; + default: + break; } + + setTimeout(onAnimationFinish, dlg.animationConfig.exit.timing.duration); } function shouldLockDocumentScroll(options) { @@ -411,7 +333,6 @@ // scale up 'entry': { name: entryAnimation, - node: dlg, timing: { duration: entryAnimationDuration, easing: 'ease-out' @@ -420,7 +341,6 @@ // fade out 'exit': { name: exitAnimation, - node: dlg, timing: { duration: exitAnimationDuration, easing: 'ease-out', @@ -429,11 +349,6 @@ } }; - // too buggy in IE, not even worth it - if (!enableAnimation()) { - dlg.animationConfig = null; - } - dlg.classList.add('dialog'); if (options.scrollX) { @@ -460,6 +375,21 @@ dlg.classList.add('dialog-' + options.size); } + switch (dlg.animationConfig.entry.name) { + + case 'fadein': + dlg.style.animation = 'fadein ' + entryAnimationDuration + 'ms ease-out normal'; + break; + case 'scaleup': + dlg.style.animation = 'scaleup ' + entryAnimationDuration + 'ms ease-out normal both'; + break; + case 'slideup': + dlg.style.animation = 'slideup ' + entryAnimationDuration + 'ms ease-out normal'; + break; + default: + break; + } + return dlg; } diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.js b/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.js index 9e7563290c..63dc61fd05 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.js @@ -113,14 +113,6 @@ EmbySelectPrototype.createdCallback = function () { - var parent = this.parentNode; - if (parent && !parent.classList.contains('selectContainer')) { - var div = this.ownerDocument.createElement('div'); - div.classList.add('selectContainer'); - parent.replaceChild(div, this); - div.appendChild(this); - } - if (!this.id) { this.id = 'embyselect' + inputId; inputId++; diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide-settings.js b/dashboard-ui/bower_components/emby-webcomponents/guide/guide-settings.js index b2e9780d25..a9453cee36 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/guide/guide-settings.js +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide-settings.js @@ -43,7 +43,7 @@ context.querySelector('.chkColorCodedBackgrounds').checked = userSettings.get('guide-colorcodedbackgrounds') === 'true'; context.querySelector('.chkFavoriteChannelsAtTop').checked = userSettings.get('livetv-favoritechannelsattop') !== 'false'; - var sortByValue = userSettings.get('livetv-channelorder') || 'DatePlayed'; + var sortByValue = userSettings.get('livetv-channelorder') || 'Number'; var sortBys = context.querySelectorAll('.chkSortOrder'); for (i = 0, length = sortBys.length; i < length; i++) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js index 36cddd0499..390a695d54 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js @@ -1,4 +1,4 @@ -define(['require', 'browser', 'globalize', 'connectionManager', 'serverNotifications', 'loading', 'datetime', 'focusManager', 'userSettings', 'imageLoader', 'events', 'layoutManager', 'itemShortcuts', 'registrationservices', 'dom', 'clearButtonStyle', 'css!./guide.css', 'programStyles', 'material-icons', 'scrollStyles', 'emby-button', 'paper-icon-button-light'], function (require, browser, globalize, connectionManager, serverNotifications, loading, datetime, focusManager, userSettings, imageLoader, events, layoutManager, itemShortcuts, registrationServices, dom) { +define(['require', 'browser', 'globalize', 'connectionManager', 'serverNotifications', 'loading', 'datetime', 'focusManager', 'userSettings', 'imageLoader', 'events', 'layoutManager', 'itemShortcuts', 'registrationServices', 'dom', 'clearButtonStyle', 'css!./guide.css', 'programStyles', 'material-icons', 'scrollStyles', 'emby-button', 'paper-icon-button-light'], function (require, browser, globalize, connectionManager, serverNotifications, loading, datetime, focusManager, userSettings, imageLoader, events, layoutManager, itemShortcuts, registrationServices, dom) { 'use strict'; function showViewSettings(instance) { @@ -207,12 +207,12 @@ } } - if (userSettings.get('livetv-channelorder') === 'Number') { - channelQuery.SortBy = "SortName"; - channelQuery.SortOrder = "Ascending"; - } else { + if (userSettings.get('livetv-channelorder') === 'DatePlayed') { channelQuery.SortBy = "DatePlayed"; channelQuery.SortOrder = "Descending"; + } else { + channelQuery.SortBy = "SortName"; + channelQuery.SortOrder = "Ascending"; } var date = newStartDate; diff --git a/dashboard-ui/bower_components/emby-webcomponents/multiselect/multiselect.js b/dashboard-ui/bower_components/emby-webcomponents/multiselect/multiselect.js index f22f9418cf..fe91ddde77 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/multiselect/multiselect.js +++ b/dashboard-ui/bower_components/emby-webcomponents/multiselect/multiselect.js @@ -24,35 +24,6 @@ } } - var initCount = 0; - function showTapHoldHelp(element) { - - if (initCount >= 15) { - // All done - return; - } - - initCount++; - - if (initCount < 15) { - return; - } - - var expectedValue = "8"; - if (appStorage.getItem("tapholdhelp") == expectedValue) { - return; - } - - appStorage.setItem("tapholdhelp", expectedValue); - - require(['alert'], function (alert) { - alert({ - text: globalize.translate('sharedcomponents#TryMultiSelectMessage'), - title: globalize.translate('sharedcomponents#TryMultiSelect') - }); - }); - } - function onItemSelectionPanelClick(e, itemSelectionPanel) { // toggle the checkbox, if it wasn't clicked on @@ -504,8 +475,6 @@ self.manager = manager; }); } - - showTapHoldHelp(element); } initTapHold(container); diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js index 2c17a830f2..291cb0125c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js @@ -1,4 +1,4 @@ -define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom', 'recordingHelper', 'events', 'shell', 'paper-icon-button-light', 'emby-button'], function (globalize, connectionManager, require, loading, appHost, dom, recordingHelper, events, shell) { +define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom', 'recordingHelper', 'events', 'registrationServices', 'paper-icon-button-light', 'emby-button'], function (globalize, connectionManager, require, loading, appHost, dom, recordingHelper, events, registrationServices) { function getRegistration(apiClient, programId, feature) { @@ -148,11 +148,7 @@ } function onSupporterButtonClick() { - if (appHost.supports('externalpremium')) { - shell.openUrl('https://emby.media/premiere'); - } else { - - } + registrationServices.showPremiereInfo(); } function onManageRecordingClick(e) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/registrationservices/registrationservices.js b/dashboard-ui/bower_components/emby-webcomponents/registrationservices/registrationservices.js new file mode 100644 index 0000000000..70e0ce84f1 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/registrationservices/registrationservices.js @@ -0,0 +1,501 @@ +define(['appSettings', 'loading', 'apphost', 'iapManager', 'events', 'shell', 'globalize', 'dialogHelper', 'connectionManager', 'layoutManager', 'emby-button'], function (appSettings, loading, appHost, iapManager, events, shell, globalize, dialogHelper, connectionManager, layoutManager) { + + var validatedFeatures = []; + + function alertText(options) { + return new Promise(function (resolve, reject) { + + require(['alert'], function (alert) { + alert(options).then(resolve, reject); + }); + }); + } + + function showInAppPurchaseInfo(subscriptionOptions, unlockableProductInfo, dialogOptions) { + + return new Promise(function (resolve, reject) { + + require(['listViewStyle', 'formDialogStyle'], function () { + showInAppPurchaseElement(subscriptionOptions, unlockableProductInfo, dialogOptions, resolve, reject); + + currentDisplayingResolve = resolve; + }); + }); + } + + function validateFeature(feature) { + + console.log('validateFeature: ' + feature); + + if (validatedFeatures.indexOf(feature) != -1) { + return Promise.resolve(); + } + + return iapManager.isUnlockedByDefault(feature).catch(function () { + + var unlockableFeatureCacheKey = 'featurepurchased-' + feature; + if (appSettings.get(unlockableFeatureCacheKey) == '1') { + return Promise.resolve(); + } + + var unlockableProduct = iapManager.getProductInfo(feature); + if (unlockableProduct) { + + var unlockableCacheKey = 'productpurchased-' + unlockableProduct.id; + if (unlockableProduct.owned) { + + // Cache this to eliminate the store as a possible point of failure in the future + appSettings.set(unlockableFeatureCacheKey, '1'); + appSettings.set(unlockableCacheKey, '1'); + return Promise.resolve(); + } + + if (appSettings.get(unlockableCacheKey) == '1') { + return Promise.resolve(); + } + } + + var unlockableProductInfo = unlockableProduct ? { + enableAppUnlock: true, + id: unlockableProduct.id, + price: unlockableProduct.price, + feature: feature + + } : null; + + return iapManager.getSubscriptionOptions().then(function (subscriptionOptions) { + + if (subscriptionOptions.filter(function (p) { + return p.owned; + }).length > 0) { + return Promise.resolve(); + } + + // Get supporter status + return connectionManager.getRegistrationInfo(iapManager.getAdminFeatureName(feature), connectionManager.currentApiClient()).catch(function () { + + var dialogOptions = { + title: globalize.translate('sharedcomponents#HeaderUnlockFeature'), + feature: feature + }; + + return showInAppPurchaseInfo(subscriptionOptions, unlockableProductInfo, dialogOptions); + }); + }); + }); + } + + function cancelInAppPurchase() { + + var elem = document.querySelector('.inAppPurchaseOverlay'); + if (elem) { + dialogHelper.close(elem); + } + } + + var currentDisplayingProductInfos = []; + var currentDisplayingResolve = null; + + function clearCurrentDisplayingInfo() { + currentDisplayingProductInfos = []; + currentDisplayingResolve = null; + } + + function showExternalPremiereInfo() { + shell.openUrl('https://emby.media/premiere'); + } + + function centerFocus(elem, horiz, on) { + require(['scrollHelper'], function (scrollHelper) { + var fn = on ? 'on' : 'off'; + scrollHelper.centerFocus[fn](elem, horiz); + }); + } + + function showInAppPurchaseElement(subscriptionOptions, unlockableProductInfo, dialogOptions, resolve, reject) { + + cancelInAppPurchase(); + + // clone + currentDisplayingProductInfos = subscriptionOptions.slice(0); + + if (unlockableProductInfo) { + currentDisplayingProductInfos.push(unlockableProductInfo); + } + + var dlg = dialogHelper.createDialog({ + size: 'fullscreen-border', + removeOnClose: true, + scrollY: false + }); + + dlg.classList.add('formDialog'); + + var html = ''; + html += '
'; + html += ''; + html += '

'; + html += '

'; + html += '
'; + + html += '
'; + html += '
'; + html += '
'; + + html += '

'; + + if (unlockableProductInfo) { + html += globalize.translate('sharedcomponents#MessageUnlockAppWithPurchaseOrSupporter'); + } + else { + html += globalize.translate('sharedcomponents#MessageUnlockAppWithSupporter'); + } + html += '

'; + + html += '

'; + html += globalize.translate('sharedcomponents#MessageToValidateSupporter'); + html += '

'; + + var hasProduct = false; + + for (var i = 0, length = subscriptionOptions.length; i < length; i++) { + + hasProduct = true; + html += '

'; + html += ''; + html += '

'; + } + + if (unlockableProductInfo) { + + hasProduct = true; + var unlockText = globalize.translate('sharedcomponents#ButtonUnlockWithPurchase'); + if (unlockableProductInfo.price) { + unlockText = globalize.translate('sharedcomponents#ButtonUnlockPrice', unlockableProductInfo.price); + } + html += '

'; + html += ''; + html += '

'; + } + + html += '

'; + html += ''; + html += '

'; + + if (subscriptionOptions.length) { + html += '

' + globalize.translate('sharedcomponents#HeaderBenefitsEmbyPremiere') + '

'; + + html += '
'; + html += getSubscriptionBenefits().map(getSubscriptionBenefitHtml).join(''); + html += '
'; + } + + if (dialogOptions.feature == 'playback') { + html += '

'; + html += ''; + html += '

'; + } + + html += ''; + html += '
'; + html += '
'; + + dlg.innerHTML = html; + document.body.appendChild(dlg); + + var i, length; + var btnPurchases = dlg.querySelectorAll('.btnPurchase'); + for (i = 0, length = btnPurchases.length; i < length; i++) { + btnPurchases[i].addEventListener('click', onPurchaseButtonClick); + } + + var btnPurchases = dlg.querySelectorAll('.buttonPremiereInfo'); + for (i = 0, length = btnPurchases.length; i < length; i++) { + btnPurchases[i].addEventListener('click', showExternalPremiereInfo); + } + + dlg.querySelector('.btnRestorePurchase').addEventListener('click', function () { + restorePurchase(unlockableProductInfo); + }); + + loading.hide(); + + var rejected = false; + + function onCloseButtonClick() { + + var onConfirmed = function () { + rejected = true; + dialogHelper.close(dlg); + }; + + if (dialogOptions.feature == 'playback') { + alertText({ + text: globalize.translate('sharedcomponents#ThankYouForTryingEnjoyOneMinute'), + title: globalize.translate('sharedcomponents#HeaderTryPlayback') + }).then(onConfirmed); + } else { + onConfirmed(); + } + } + + var btnCloseDialogs = dlg.querySelectorAll('.btnCloseDialog'); + for (var i = 0, length = btnCloseDialogs.length; i < length; i++) { + btnCloseDialogs[i].addEventListener('click', onCloseButtonClick); + } + + dlg.classList.add('inAppPurchaseOverlay'); + + if (layoutManager.tv) { + centerFocus(dlg.querySelector('.formDialogContent'), false, true); + } + + dialogHelper.open(dlg).then(function () { + if (layoutManager.tv) { + centerFocus(dlg.querySelector('.formDialogContent'), false, false); + } + + clearCurrentDisplayingInfo(); + if (rejected) { + reject(); + } + }); + } + + function getSubscriptionBenefits() { + + var list = []; + + list.push({ + name: globalize.translate('sharedcomponents#HeaderFreeApps'), + icon: 'check', + text: globalize.translate('sharedcomponents#FreeAppsFeatureDescription') + }); + + if (appHost.supports('sync')) { + list.push({ + name: globalize.translate('sharedcomponents#HeaderOfflineDownloads'), + icon: 'file_download', + text: globalize.translate('sharedcomponents#HeaderOfflineDownloadsDescription') + }); + } + + list.push({ + name: globalize.translate('sharedcomponents#CoverArt'), + icon: 'photo', + text: globalize.translate('sharedcomponents#CoverArtFeatureDescription') + }); + + list.push({ + name: globalize.translate('sharedcomponents#HeaderCinemaMode'), + icon: 'movie', + text: globalize.translate('sharedcomponents#CinemaModeFeatureDescription') + }); + + list.push({ + name: globalize.translate('sharedcomponents#HeaderCloudSync'), + icon: 'sync', + text: globalize.translate('sharedcomponents#CloudSyncFeatureDescription') + }); + + return list; + } + + function getSubscriptionBenefitHtml(item) { + + var enableLink = appHost.supports('externalpremium'); + + var html = ''; + + var cssClass = "listItem"; + + cssClass += ' listItem-button'; + + if (layoutManager.tv) { + cssClass += ' listItem-focusscale'; + } + + if (enableLink) { + html += ''; + } + + return html; + } + + function onPurchaseButtonClick() { + + var featureId = this.getAttribute('data-featureid'); + + if (this.getAttribute('data-email') == 'true') { + getUserEmail().then(function (email) { + iapManager.beginPurchase(featureId, email); + }); + } else { + iapManager.beginPurchase(featureId); + } + } + + function restorePurchase(unlockableProductInfo) { + + var dlg = dialogHelper.createDialog({ + size: 'fullscreen-border', + removeOnClose: true, + scrollY: false + }); + + dlg.classList.add('formDialog'); + + var html = ''; + html += '
'; + html += ''; + html += '

'; + html += iapManager.getRestoreButtonText(); + html += '

'; + html += '
'; + + html += '
'; + html += '
'; + + html += '

'; + html += globalize.translate('sharedcomponents#HowDidYouPay'); + html += '

'; + + html += '

'; + html += ''; + html += '

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

'; + html += ''; + html += '

'; + } + + html += '
'; + html += '
'; + + dlg.innerHTML = html; + document.body.appendChild(dlg); + + loading.hide(); + + if (layoutManager.tv) { + centerFocus(dlg.querySelector('.formDialogContent'), false, true); + } + + dlg.querySelector('.btnCloseDialog').addEventListener('click', function () { + + dialogHelper.close(dlg); + }); + + dlg.querySelector('.btnRestoreSub').addEventListener('click', function () { + + dialogHelper.close(dlg); + alertText({ + text: globalize.translate('sharedcomponents#MessageToValidateSupporter'), + title: 'Emby Premiere' + }); + + }); + + var btnRestoreUnlock = dlg.querySelector('.btnRestoreUnlock'); + if (btnRestoreUnlock) { + btnRestoreUnlock.addEventListener('click', function () { + + dialogHelper.close(dlg); + iapManager.restorePurchase(); + }); + } + + dialogHelper.open(dlg).then(function () { + + if (layoutManager.tv) { + centerFocus(dlg.querySelector('.formDialogContent'), false, false); + } + }); + } + + function getUserEmail() { + + if (connectionManager.isLoggedIntoConnect()) { + + var connectUser = connectionManager.connectUser(); + + if (connectUser && connectUser.Email) { + return Promise.resolve(connectUser.Email); + } + } + + return new Promise(function (resolve, reject) { + + require(['prompt'], function (prompt) { + + prompt({ + + label: globalize.translate('sharedcomponents#LabelEmailAddress') + + }).then(resolve, reject); + }); + }); + } + + function onProductUpdated(e, product) { + + if (product.owned) { + + var resolve = currentDisplayingResolve; + + if (resolve && currentDisplayingProductInfos.filter(function (p) { + + return product.id == p.id; + + }).length) { + + cancelInAppPurchase(); + resolve(); + } + } + } + + function showPremiereInfo() { + + return iapManager.getSubscriptionOptions().then(function (subscriptionOptions) { + + var dialogOptions = { + title: 'Emby Premiere', + feature: 'sync' + }; + + return showInAppPurchaseInfo(subscriptionOptions, null, dialogOptions); + }); + } + + events.on(iapManager, 'productupdated', onProductUpdated); + + return { + + validateFeature: validateFeature, + showPremiereInfo: showPremiereInfo + }; +}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/registrationservices/style.css b/dashboard-ui/bower_components/emby-webcomponents/registrationservices/style.css new file mode 100644 index 0000000000..204fbdacab --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/registrationservices/style.css @@ -0,0 +1,26 @@ +.registrationDialog { + background: rgba(28, 28, 28, .98) !important; + flex-direction: column; + display: flex; + align-items: center; + justify-content: center; +} + +.registrationDialogContent { + max-width: 50%; + justify-content: center; + align-items: center; +} + + .registrationDialogContent h1 { + margin-top: 0; + } + +.btnRegistrationBack { + z-index: 1002; + position: absolute; + top: .5em; + left: .5em; + width: 5.2vh; + height: 5.2vh; +} diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json index 5fa3d7b8ab..a662015fd8 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "\u0627\u0644\u0633\u0628\u062a", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/bg-BG.json b/dashboard-ui/bower_components/emby-webcomponents/strings/bg-BG.json index 2c1802f251..8fe9ae9872 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/bg-BG.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/bg-BG.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "\u0414\u043e\u0431\u0430\u0432\u0438", @@ -39,8 +42,19 @@ "Saturday": "\u0421\u044a\u0431\u043e\u0442\u0430", "Days": "\u0414\u043d\u0438", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json index 5bb9648531..f766f47593 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Afegeix", @@ -39,8 +42,19 @@ "Saturday": "Dissabte", "Days": "Dies", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Obtenir Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json b/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json index a15a61514b..a2b99c6ddc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "P\u0159idat", @@ -39,8 +42,19 @@ "Saturday": "Sobota", "Days": "Dny", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Z\u00edskat Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "Aktivn\u00ed p\u0159edplatn\u00e9 Emby Premiere je zapot\u0159eb\u00ed pro vytvo\u0159en\u00ed automatick\u00e9ho nahr\u00e1v\u00e1n\u00ed \u0159ad.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "Tato funkce vy\u017eaduje aktivn\u00ed p\u0159edplatn\u00e9 Emby Premiere.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json index a650021ca6..1944b97afe 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Del", "Add": "Tilf\u00f8j", @@ -39,8 +42,19 @@ "Saturday": "L\u00f8rdag", "Days": "Dage", "RecordSeries": "Optag serie", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "F\u00e5 Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "Et aktivt Emby Premiere abonnement er n\u00f8dvendigt for at oprette automatiserede optagelser af serier.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "Denne funktion kr\u00e6ver et aktivt Emby Premiere abonnement.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json index afe056b0be..5cd4e94c96 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Teilen", "Add": "Hinzuf\u00fcgen", @@ -39,8 +42,19 @@ "Saturday": "Samstag", "Days": "Tage", "RecordSeries": "Serie aufnehmen", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Holen Sie Emby Premium", "MessageActiveSubscriptionRequiredSeriesRecordings": "Ein aktives Emby Premium Abo wird benn\u00f6tigt um automatische Serienaufnahmen zu erstellen.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Konvertiere Aufnahmen automatisch in ein Streaming-freundliches Format mit Emby Premiere. Aufnahmen werden, basierend auf den Emby Server-Einstellungen, dynamisch zu MP4 oder MKV konvertiert.", "FeatureRequiresEmbyPremiere": "Dieses Feature ben\u00f6tigt eine aktive Emby Premiere Mitgliedschaft.", "HeaderConvertYourRecordings": "Konvertiere deine Aufnahmen", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sortiere Kan\u00e4le nach:", "RecentlyWatched": "K\u00fcrzlich gesehen", "ChannelNumber": "Kanalnummer", - "PlaceFavoriteChannelsAtBeginning": "Platziere favorisierte Kan\u00e4le am Anfang" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Platziere favorisierte Kan\u00e4le am Anfang", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/el.json b/dashboard-ui/bower_components/emby-webcomponents/strings/el.json index f293139d8e..8445cfa040 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/el.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/el.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c3\u03b5", @@ -39,8 +42,19 @@ "Saturday": "Saturday", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/en-GB.json b/dashboard-ui/bower_components/emby-webcomponents/strings/en-GB.json index 42de62ba75..37eb60b844 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-GB.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-GB.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "Saturday", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favourite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favourite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json index 02aed2edb9..e6e8450edf 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "Saturday", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es-AR.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es-AR.json index bb9ac2cd3a..4449bfa70d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es-AR.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es-AR.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "Saturday", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json index d05e5ce5ec..32b89271ea 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Especial - {0}", "Share": "Compartir", "Add": "Agregar", @@ -39,8 +42,19 @@ "Saturday": "S\u00e1bado", "Days": "D\u00edas", "RecordSeries": "Grabar Series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Obtener Emby Premier", "MessageActiveSubscriptionRequiredSeriesRecordings": "Se requiere de una suscripci\u00f3n de Emby Premier para crear grabaciones automatizadas de series.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Convertir autom\u00e1ticamente grabaciones a un formato amigable para transmitir con Emby Premiere. Las grabaciones ser\u00e1n convertidos en tiempo real a MP4 o MKV, basado en las configuraciones del servidor Emby.", "FeatureRequiresEmbyPremiere": "Esta caracter\u00edstica requiere de una suscripci\u00f3n activa de Emby Premiere.", "HeaderConvertYourRecordings": "Convertir Sus Grabaciones", @@ -320,5 +334,17 @@ "SortChannelsBy": "Ordenar canales por:", "RecentlyWatched": "Visto recientemente", "ChannelNumber": "Numero de canal", - "PlaceFavoriteChannelsAtBeginning": "Colocar canales favoritos al inicio" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Colocar canales favoritos al inicio", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es.json index 020f37b034..b11d70d904 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Compartir", "Add": "A\u00f1adir", @@ -39,8 +42,19 @@ "Saturday": "S\u00e1bado", "Days": "D\u00edas", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Consigue Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "Se necesita una suscripci\u00f3n a Emby Premiere para poder crear grabaciones autom\u00e1ticas.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "Esta caracter\u00edstica necesita una suscripci\u00f3n a Emby Premiere.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json index 40b01a08da..aa0ae75ecc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "Saturday", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fr-CA.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fr-CA.json index 9186758612..ee3cace148 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/fr-CA.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fr-CA.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "Saturday", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json index cdce1c8a4e..104be734c7 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Sp\u00e9cial - {0}", "Share": "Partager", "Add": "Ajouter", @@ -39,8 +42,19 @@ "Saturday": "Samedi", "Days": "Jours", "RecordSeries": "Enregistrer s\u00e9ries", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Obtenez Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "Une souscription Emby Premiere active est n\u00e9cessaire pour cr\u00e9er des enregistrements automatiques de s\u00e9ries.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "Cette fonctionnalit\u00e9 requiert un compte Emby Premiere.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json b/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json index d2e8f226ac..485b0416a1 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "Samstig", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/he.json b/dashboard-ui/bower_components/emby-webcomponents/strings/he.json index 4725aee8b5..31fd6d89a1 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/he.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/he.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "\u05d4\u05d5\u05e1\u05e3", @@ -39,8 +42,19 @@ "Saturday": "\u05e9\u05d1\u05ea", "Days": "\u05d9\u05de\u05d9\u05dd", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json index e5cd34f89b..689ac63a36 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Specijal - {0}", "Share": "Dijeli", "Add": "Dodaj", @@ -39,8 +42,19 @@ "Saturday": "Subota", "Days": "Dani", "RecordSeries": "Snimi serije", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Nabavite Emby Premijeru", "MessageActiveSubscriptionRequiredSeriesRecordings": "Aktivna pretplata Emby Premijere je potrebna kako bi se napravilo automatsko snimanje serija.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatski pretvoriti snimke na prijateljskom formatu strujanja s Emby Premijerom. Snimke \u0107e se pretvoriti u letu u MP4 ili MKV na temelju postavki Emby poslu\u017eitelja.", "FeatureRequiresEmbyPremiere": "Ova zna\u010dajka zahtijeva aktivnu pretplatu Emby Premijere.", "HeaderConvertYourRecordings": "Konvertiraj snimke", @@ -320,5 +334,17 @@ "SortChannelsBy": "Slo\u017ei kanale po:", "RecentlyWatched": "Nedavno pogledano", "ChannelNumber": "Broj kanala", - "PlaceFavoriteChannelsAtBeginning": "Postavi omiljene kanale na po\u010detak" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Postavi omiljene kanale na po\u010detak", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json b/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json index 165b2e1046..e8267abb08 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Megoszt\u00e1s", "Add": "Hozz\u00e1ad", @@ -39,8 +42,19 @@ "Saturday": "Szombat", "Days": "Nap", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Emby Premiere beszerz\u00e9se", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/id.json b/dashboard-ui/bower_components/emby-webcomponents/strings/id.json index 7a372dc002..3e2928af92 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/id.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/id.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "Saturday", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/it.json b/dashboard-ui/bower_components/emby-webcomponents/strings/it.json index 16ec1e9963..3854d14d8a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/it.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/it.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Aggiungi", @@ -39,8 +42,19 @@ "Saturday": "Sabato", "Days": "Giorni", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Ottieni Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "Un abbonamento a Emby Premiere \u00e8 necessario per creare registrazioni personalizzate delle serie tv", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json index b0a69fec7f..f5a6caf9ab 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "\u0410\u0440\u043d\u0430\u0439\u044b - {0}", "Share": "\u041e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443", "Add": "\u04ae\u0441\u0442\u0435\u0443", @@ -39,8 +42,19 @@ "Saturday": "\u0441\u0435\u043d\u0431\u0456", "Days": "\u041a\u04af\u043d\u0434\u0435\u0440", "RecordSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043d\u044b \u0436\u0430\u0437\u0443", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Emby Premiere \u0430\u043b\u0443", "MessageActiveSubscriptionRequiredSeriesRecordings": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440\u0434\u044b\u04a3 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0436\u0430\u0437\u0431\u0430\u0441\u044b\u043d \u0436\u0430\u0441\u0430\u0443 \u04af\u0448\u0456\u043d \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b \u049b\u0430\u0436\u0435\u0442.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Emby Premiere \u0430\u0440\u049b\u044b\u043b\u044b \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443\u0493\u0430 \u043e\u04a3\u0430\u0439 \u043f\u0456\u0448\u0456\u043d\u0434\u0435 \u0436\u0430\u0437\u0431\u0430\u043b\u0430\u0440\u0434\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443. \u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440 Emby Server \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456 \u043d\u0435\u0433\u0456\u0437\u0456\u043d\u0434\u0435, \u043d\u0430\u049b\u0442\u044b \u0443\u0430\u049b\u044b\u0442\u0442\u0430 MP4 \u043d\u0435\u043c\u0435\u0441\u0435 MKV \u043f\u0456\u0448\u0456\u043c\u0456\u043d\u0435 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0456\u043b\u0435\u0434\u0456.", "FeatureRequiresEmbyPremiere": "\u041e\u0441\u044b \u049b\u04b1\u0440\u0430\u043c\u0434\u0430\u0441 \u04af\u0448\u0456\u043d \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b \u049b\u0430\u0436\u0435\u0442", "HeaderConvertYourRecordings": "\u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440\u044b\u04a3\u044b\u0437\u0434\u044b \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443", @@ -320,5 +334,17 @@ "SortChannelsBy": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0441\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0442\u04d9\u0441\u0456\u043b\u0456:", "RecentlyWatched": "\u0416\u0443\u044b\u049b\u0442\u0430 \u049b\u0430\u0440\u0430\u043b\u0493\u0430\u043d", "ChannelNumber": "\u0410\u0440\u043d\u0430 \u043d\u04e9\u043c\u0456\u0440\u0456", - "PlaceFavoriteChannelsAtBeginning": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0435\u04a3 \u0431\u0430\u0441\u044b\u043d\u0430\u043d \u043e\u0440\u043d\u0430\u043b\u0430\u0441\u0442\u044b\u0440\u0443" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0435\u04a3 \u0431\u0430\u0441\u044b\u043d\u0430\u043d \u043e\u0440\u043d\u0430\u043b\u0430\u0441\u0442\u044b\u0440\u0443", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json index ebc98bd46e..553a854944 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "\ucd94\uac00", @@ -39,8 +42,19 @@ "Saturday": "\ud1a0\uc694\uc77c", "Days": "\uc77c", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "\uc790\ub3d9 \uc2dc\ub9ac\uc988 \ub179\ud654\ub97c \uc608\uc57d\ud558\ub824\uba74 Emby \ud504\ub9ac\ubbf8\uc5b4 \uac00\uc785\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json index 9186758612..ee3cace148 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "Saturday", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json index 8f604ea2fe..70eeda1011 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Spesial - {0}", "Share": "Del", "Add": "Legg til", @@ -39,8 +42,19 @@ "Saturday": "L\u00f8rdag", "Days": "Dager", "RecordSeries": "Ta opp serien", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Skaff Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "Et aktivt Emby Premiere abonnement er p\u00e5krevd for \u00e5 kunne automatisere serieopptak.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "Denne funksjonen krever et aktivt Emby Premiere abonnement.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json index c1694a817b..9ed7264d29 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Speciaal - {0}", "Share": "Delen", "Add": "Toevoegen", @@ -39,8 +42,19 @@ "Saturday": "Zaterdag", "Days": "Dagen", "RecordSeries": "Series Opnemen", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Verkrijg Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "Er is een actief Emby Premiere abonnement benodigd om een automatische serie opname aan te maken.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatisch converteren opnames naar een streaming formaat met Emby Premiere. Opnames zullen on the fly worden omgezet naar MP4 of MKV, op basis van deEmby server instellingen.", "FeatureRequiresEmbyPremiere": "Deze functie vereist een actieve Emby Premiere abonnement.", "HeaderConvertYourRecordings": "Opnames omzetten", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json index a37d4e0638..d215c530b9 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Dodaj", @@ -39,8 +42,19 @@ "Saturday": "Sobota", "Days": "Dni", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Kup Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "Aktywna subskrypcja Emby Premiere jest wymagana aby tworzy\u0107 automatyczne nagrania seriali.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "Ta funkcja wymaga aktywnej subskrypcji Emby Premiere.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json index 6ab7d6e031..91340983f2 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Especial - {0}", "Share": "Compartilhar", "Add": "Adicionar", @@ -39,8 +42,19 @@ "Saturday": "S\u00e1bado", "Days": "Dias", "RecordSeries": "Gravar s\u00e9rie", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Obter Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "Uma subscri\u00e7\u00e3o ativa do Emby Premiere \u00e9 requerida para criar a grava\u00e7\u00e3o automatizada de s\u00e9ries.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Converter automaticamente grava\u00e7\u00f5es para um formato amig\u00e1vel para streaming com Emby Premiere. Grava\u00e7\u00f5es ser\u00e3o convertidas em tempo real para MP4 ou MKV, baseado nas configura\u00e7\u00f5es do Servidor Emby.", "FeatureRequiresEmbyPremiere": "Este recurso requer uma subscri\u00e7\u00e3o ativa do Emby Premiere", "HeaderConvertYourRecordings": "Converter suas Grava\u00e7\u00f5es", @@ -320,5 +334,17 @@ "SortChannelsBy": "Ordenar canais por:", "RecentlyWatched": "Assistido recentemente", "ChannelNumber": "N\u00famero do canal", - "PlaceFavoriteChannelsAtBeginning": "Colocar canais favoritos no in\u00edcio" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Colocar canais favoritos no in\u00edcio", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json index b9276cb616..f46608d222 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Especial - {0}", "Share": "Partilhar", "Add": "Adicionar", @@ -39,8 +42,19 @@ "Saturday": "S\u00e1bado", "Days": "Dias", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "Uma subscri\u00e7\u00e3o Emby Premiere \u00e9 necess\u00e1ria para criar a grava\u00e7\u00e3o autom\u00e1tica de s\u00e9ries.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "Este recurso requer uma subscri\u00e7\u00e3o ativa do Emby Premiere", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json index 3405eac772..8980e84a08 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "Sambata", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json index b014349677..9a29f1b899 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}", "Share": "\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f", "Add": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c", @@ -39,8 +42,19 @@ "Saturday": "\u0441\u0443\u0431\u0431\u043e\u0442\u0430", "Days": "\u0414\u043d\u0438", "RecordSeries": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u0430\u043b", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "\u041f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "\u0414\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 Emby Premiere \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0435\u0440\u0438\u0439.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Emby Premiere. \u0417\u0430\u043f\u0438\u0441\u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 MP4 \u0438\u043b\u0438 MKV, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 Emby Server.", "FeatureRequiresEmbyPremiere": "\u0414\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 Emby Premiere.", "HeaderConvertYourRecordings": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439", @@ -320,5 +334,17 @@ "SortChannelsBy": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043d\u0430\u043b\u044b \u043f\u043e:", "RecentlyWatched": "\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0435", "ChannelNumber": "\u041d\u043e\u043c\u0435\u0440 \u043a\u0430\u043d\u0430\u043b\u0430", - "PlaceFavoriteChannelsAtBeginning": "\u0420\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0432 \u043d\u0430\u0447\u0430\u043b\u0435" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "\u0420\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0432 \u043d\u0430\u0447\u0430\u043b\u0435", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json index 9186758612..ee3cace148 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "Saturday", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sl-SI.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sl-SI.json index 10a1839e6c..29f6d20908 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sl-SI.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sl-SI.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "Saturday", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "Uporaba te funkcionalnosti zahteva aktivno Emby Premiere narocnino.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json index bd60148e48..e4a496052b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Specialavsnitt - {0}", "Share": "Dela", "Add": "L\u00e4gg till", @@ -39,8 +42,19 @@ "Saturday": "L\u00f6rdag", "Days": "Dagar", "RecordSeries": "Spela in serie", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Skaffa Emby Premium", "MessageActiveSubscriptionRequiredSeriesRecordings": "Ett aktivt Emby Premium-medlemskap kr\u00e4vs f\u00f6r att skapa automatiska TV-serieinspelningar.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "Den h\u00e4r funktionen kr\u00e4ver en aktiv Emby Premium prenumeration.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json index 65af6d6232..dd329a1376 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Ekle", @@ -39,8 +42,19 @@ "Saturday": "Cumartesi", "Days": "G\u00fcnler", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json index 5e2353d2d2..7c56832f94 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -39,8 +42,19 @@ "Saturday": "Saturday", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json b/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json index ec60c2b442..cf2db5fd0d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Th\u00eam", @@ -39,8 +42,19 @@ "Saturday": "Th\u1ee9 B\u1ea3y", "Days": "Days", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-CN.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-CN.json index c8ec1e0395..59232dd804 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-CN.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-CN.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "\u6dfb\u52a0", @@ -39,8 +42,19 @@ "Saturday": "\u661f\u671f\u516d", "Days": "\u5929", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-HK.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-HK.json index a41751c758..b1e1d5ac0e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-HK.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-HK.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "\u65b0\u589e", @@ -39,8 +42,19 @@ "Saturday": "\u661f\u671f\u516d", "Days": "\u9304\u5f71\u65e5", "RecordSeries": "Record series", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json index 957847df07..8f0f9791dc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json @@ -1,4 +1,7 @@ { + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "\u5206\u4eab", "Add": "\u6dfb\u52a0", @@ -39,8 +42,19 @@ "Saturday": "\u661f\u671f\u516d", "Days": "\u9304\u5f71\u65e5", "RecordSeries": "\u9304\u88fd\u6574\u500b\u7cfb\u5217", + "HeaderCinemaMode": "Cinema Mode", + "HeaderCloudSync": "Cloud Sync", + "HeaderOfflineDownloads": "Offline Media", + "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", + "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", + "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.", + "CoverArt": "Cover Art", + "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", + "HeaderFreeApps": "Free Emby Apps", + "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "\u7acb\u5373\u53d6\u5f97", "MessageActiveSubscriptionRequiredSeriesRecordings": "\u8981\u4f7f\u7528\u81ea\u52d5\u9304\u88fd\u7cfb\u5217\u7684\u529f\u80fd\uff0c\u9700\u8981\u6709\u6548\u7684Emby\u8c6a\u83ef\u7248\u8a02\u95b1", + "LabelEmailAddress": "E-mail address:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "\u6b64\u529f\u80fd\u9700\u8981\u6709\u6548\u7684Emby\u8c6a\u83ef\u7248\u8a02\u95b1", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -320,5 +334,17 @@ "SortChannelsBy": "Sort channels by:", "RecentlyWatched": "Recently watched", "ChannelNumber": "Channel number", - "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning" + "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", + "ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.", + "HeaderTryPlayback": "Try Playback", + "HowDidYouPay": "How did you pay?", + "IHaveEmbyPremiere": "I have Emby Premiere", + "IPurchasedThisApp": "I purchased this app", + "ButtonRestorePreviousPurchase": "Restore Purchase", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "ButtonAlreadyPaid": "Already Paid?", + "ButtonPlayOneMinute": "Play One Minute", + "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", + "HeaderUnlockFeature": "Unlock Feature" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/sync/sync.js b/dashboard-ui/bower_components/emby-webcomponents/sync/sync.js index 05e6d8af7f..4479d3f7ef 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/sync/sync.js +++ b/dashboard-ui/bower_components/emby-webcomponents/sync/sync.js @@ -312,7 +312,7 @@ return new Promise(function (resolve, reject) { - require(["registrationservices", 'dialogHelper', 'formDialogStyle'], function (registrationServices, dialogHelper) { + require(["registrationServices", 'dialogHelper', 'formDialogStyle'], function (registrationServices, dialogHelper) { registrationServices.validateFeature('sync').then(function () { showSyncMenuInternal(dialogHelper, options).then(resolve, reject); diff --git a/dashboard-ui/components/fileorganizer/fileorganizer.js b/dashboard-ui/components/fileorganizer/fileorganizer.js index e4cb28068a..f3ca0eb770 100644 --- a/dashboard-ui/components/fileorganizer/fileorganizer.js +++ b/dashboard-ui/components/fileorganizer/fileorganizer.js @@ -1,4 +1,4 @@ -define(['dialogHelper', 'emby-checkbox', 'emby-input', 'emby-button', 'paper-icon-button-light', 'formDialogStyle'], function (dialogHelper) { +define(['dialogHelper', 'emby-checkbox', 'emby-input', 'emby-button', 'emby-select', 'paper-icon-button-light', 'formDialogStyle'], function (dialogHelper) { var extractedName; var extractedYear; @@ -107,10 +107,10 @@ var resultId = dlg.querySelector('#hfResultId').value; var seriesId = dlg.querySelector('#selectSeries').value; - var targetFolder; - var newProviderIds; - var newSeriesName; - var newSeriesYear; + var targetFolder = null; + var newProviderIds = null; + var newSeriesName = null; + var newSeriesYear = null; if (seriesId == "##NEW##" && currentNewItem != null) { seriesId = null; diff --git a/dashboard-ui/components/fileorganizer/fileorganizer.template.html b/dashboard-ui/components/fileorganizer/fileorganizer.template.html index 29c2d72d4a..f71d7a3869 100644 --- a/dashboard-ui/components/fileorganizer/fileorganizer.template.html +++ b/dashboard-ui/components/fileorganizer/fileorganizer.template.html @@ -1,29 +1,24 @@ 
-

-

+

-
+

-
-
- - +
+
+
+ +
+
-
-
-
- - -
+
+
@@ -32,19 +27,26 @@
- +
${LabelEndingEpisodeNumberHelp}
- +
+ +
+
+
- + +
+ +
+
-
+
\ No newline at end of file diff --git a/dashboard-ui/components/iap.js b/dashboard-ui/components/iap.js new file mode 100644 index 0000000000..584134a263 --- /dev/null +++ b/dashboard-ui/components/iap.js @@ -0,0 +1,63 @@ +define(['apphost', 'globalize', 'shell'], function (appHost, globalize, shell) { + + function getProductInfo(feature) { + return null; + } + + function showExternalPremiereInfo() { + shell.openUrl('https://emby.media/premiere'); + } + + function beginPurchase(feature, email) { + showExternalPremiereInfo(); + return Promise.reject(); + } + + function restorePurchase(id) { + return Promise.reject(); + } + + function getSubscriptionOptions() { + + var options = []; + + options.push({ + id: 'embypremiere', + title: globalize.translate('sharedcomponents#HeaderBecomeProjectSupporter'), + requiresEmail: false + }); + + return Promise.resolve(options); + } + + function isUnlockedByDefault(feature, options) { + + var autoUnlockedFeatures = appHost.unlockedFeatures ? appHost.unlockedFeatures() : []; + if (autoUnlockedFeatures.indexOf(feature) != -1) { + + return Promise.resolve(); + } + + return Promise.reject(); + } + + function getAdminFeatureName(feature) { + + return feature; + } + + function getRestoreButtonText() { + return globalize.translate('sharedcomponents#ButtonAlreadyPaid'); + } + + return { + getProductInfo: getProductInfo, + beginPurchase: beginPurchase, + restorePurchase: restorePurchase, + getSubscriptionOptions: getSubscriptionOptions, + isUnlockedByDefault: isUnlockedByDefault, + getAdminFeatureName: getAdminFeatureName, + getRestoreButtonText: getRestoreButtonText + }; + +}); \ No newline at end of file diff --git a/dashboard-ui/components/tvproviders/xmltv.js b/dashboard-ui/components/tvproviders/xmltv.js index 183a73776f..6684928ae3 100644 --- a/dashboard-ui/components/tvproviders/xmltv.js +++ b/dashboard-ui/components/tvproviders/xmltv.js @@ -1,4 +1,4 @@ -define(['jQuery', 'registrationservices', 'emby-checkbox', 'emby-input', 'listViewStyle', 'paper-icon-button-light'], function ($, registrationServices) { +define(['jQuery', 'registrationServices', 'emby-checkbox', 'emby-input', 'listViewStyle', 'paper-icon-button-light'], function ($, registrationServices) { return function (page, providerId, options) { diff --git a/dashboard-ui/css/autoorganizetable.css b/dashboard-ui/css/autoorganizetable.css index cfc1da14ab..a12649dba3 100644 --- a/dashboard-ui/css/autoorganizetable.css +++ b/dashboard-ui/css/autoorganizetable.css @@ -2,9 +2,13 @@ width: 100%; } - .autoorganizetable > .table > tbody > tr > td { - padding: 0.4em; - } +.autoorganizetable th { + padding: 0.4em; +} + +.autoorganizetable > .table > tbody > tr > td { + padding: 0.4em; +} .autoorganizetable .fileCell { word-wrap: break-word; diff --git a/dashboard-ui/css/librarybrowser.css b/dashboard-ui/css/librarybrowser.css index 8953d3142e..6c0e97a877 100644 --- a/dashboard-ui/css/librarybrowser.css +++ b/dashboard-ui/css/librarybrowser.css @@ -8,7 +8,7 @@ } .background-theme-b .backgroundContainer, .dialog.background-theme-b { - background-color: #161616; + background-color: #121314; } .background-theme-b .backgroundContainer.withBackdrop { @@ -89,7 +89,7 @@ } .homePageSection + .homePageSection { - margin-top: 25px; + margin-top: 30px; } .sectionHeaderButton { @@ -124,17 +124,24 @@ } } -@media all and (min-width: 600px) { +.homePageSection h1 { + padding-left: 2vw; +} - .ehsContent:not(.fullWidth), .ehsContent .pageTabContent { - width: 98%; - } +.homePageSection .itemsContainer { + padding-left: 1vw; + padding-right: 1vw; } @media all and (min-width: 1200px) { - .ehsContent:not(.fullWidth), .ehsContent .pageTabContent { - width: 96%; + .homePageSection h1 { + padding-left: 2.2vw; + } + + .homePageSection .itemsContainer { + padding-left: 2vw; + padding-right: 2vw; } } diff --git a/dashboard-ui/scripts/mediacontroller.js b/dashboard-ui/scripts/mediacontroller.js index 0dac7c1923..24a2e81b9c 100644 --- a/dashboard-ui/scripts/mediacontroller.js +++ b/dashboard-ui/scripts/mediacontroller.js @@ -99,17 +99,22 @@ Dashboard.hideLoadingMsg(); - actionsheet.show({ + var menuOptions = { title: Globalize.translate('HeaderSelectPlayer'), items: menuItems, positionTo: button, - // Unfortunately we can't allow the url to change or chromecast will throw a security error - // Might be able to solve this in the future by moving the dialogs to hashbangs - enableHistory: enableHistory !== false && !browser.chrome, resolveOnClick: true - }).then(function (id) { + }; + + // Unfortunately we can't allow the url to change or chromecast will throw a security error + // Might be able to solve this in the future by moving the dialogs to hashbangs + if (!((enableHistory !== false && !browser.chrome) || AppInfo.isNativeApp)) { + menuOptions.enableHistory = false; + } + + actionsheet.show(menuOptions).then(function (id) { var target = targets.filter(function (t) { return t.id == id; @@ -461,7 +466,7 @@ return; } - requirejs(["registrationservices"], function (registrationServices) { + requirejs(["registrationServices"], function (registrationServices) { self.playbackTimeLimitMs = null; diff --git a/dashboard-ui/scripts/mysync.js b/dashboard-ui/scripts/mysync.js index 211138d80d..209cfe9974 100644 --- a/dashboard-ui/scripts/mysync.js +++ b/dashboard-ui/scripts/mysync.js @@ -4,7 +4,7 @@ view.querySelector('.btnSyncSupporter').addEventListener('click', function () { - requirejs(["registrationservices"], function (registrationServices) { + requirejs(["registrationServices"], function (registrationServices) { registrationServices.validateFeature('sync'); }); }); diff --git a/dashboard-ui/scripts/registrationservices.js b/dashboard-ui/scripts/registrationservices.js deleted file mode 100644 index f43dbe6e74..0000000000 --- a/dashboard-ui/scripts/registrationservices.js +++ /dev/null @@ -1,216 +0,0 @@ -define(['appStorage', 'shell'], function (appStorage, shell) { - - var supporterPlaybackKey = 'lastSupporterPlaybackMessage4'; - - function validatePlayback(resolve, reject) { - - Dashboard.getPluginSecurityInfo().then(function (pluginSecurityInfo) { - - if (pluginSecurityInfo.IsMBSupporter) { - resolve(); - } else { - - var lastMessage = parseInt(appStorage.getItem(supporterPlaybackKey) || '0'); - - if (!lastMessage) { - - // Don't show on the very first playback attempt - appStorage.setItem(supporterPlaybackKey, new Date().getTime()); - resolve(); - } - else if ((new Date().getTime() - lastMessage) > 259200000) { - - showPlaybackOverlay(resolve, reject); - } else { - resolve(); - } - } - }); - } - - function getSubscriptionBenefits() { - - var list = []; - - list.push({ - name: Globalize.translate('CoverArt'), - icon: 'photo', - text: Globalize.translate('CoverArtFeatureDescription') - }); - - list.push({ - name: Globalize.translate('HeaderFreeApps'), - icon: 'check', - text: Globalize.translate('FreeAppsFeatureDescription') - }); - - if (Dashboard.capabilities().SupportsSync) { - list.push({ - name: Globalize.translate('HeaderMobileSync'), - icon: 'sync', - text: Globalize.translate('MobileSyncFeatureDescription') - }); - } - else { - list.push({ - name: Globalize.translate('HeaderCinemaMode'), - icon: 'movie', - text: Globalize.translate('CinemaModeFeatureDescription') - }); - } - - return list; - } - - function getSubscriptionBenefitHtml(item) { - - var html = ''; - html += '
'; - - html += '' + item.icon + ''; - - html += ''; - - html += '
'; - - return html; - } - - function showPlaybackOverlay(resolve, reject) { - - require(['dialogHelper', 'listViewStyle', 'emby-button', 'formDialogStyle'], function (dialogHelper) { - - var dlg = dialogHelper.createDialog({ - size: 'fullscreen-border', - removeOnClose: true, - scrollY: false - }); - - dlg.classList.add('formDialog'); - - var html = ''; - html += '
'; - html += ''; - html += '

'; - html += '

'; - - html += '
'; - - - html += '
'; - html += '
'; - - html += '

' + Globalize.translate('HeaderTryEmbyPremiere') + '

'; - - html += '

' + Globalize.translate('MessageDidYouKnowCinemaMode') + '

'; - html += '

' + Globalize.translate('MessageDidYouKnowCinemaMode2') + '

'; - - html += '
'; - - html += '

' + Globalize.translate('HeaderBenefitsEmbyPremiere') + '

'; - - html += '
'; - html += getSubscriptionBenefits().map(getSubscriptionBenefitHtml).join(''); - html += '
'; - - html += '
'; - - html += ''; - html += ''; - - html += '
'; - html += '
'; - - dlg.innerHTML = html; - - // Has to be assigned a z-index after the call to .open() - dlg.addEventListener('close', function (e) { - appStorage.setItem(supporterPlaybackKey, new Date().getTime()); - resolve(); - }); - - dialogHelper.open(dlg); - - var onCancelClick = function () { - dialogHelper.close(dlg); - }; - var i, length; - var elems = dlg.querySelectorAll('.btnCancelSupporterInfo'); - for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener('click', onCancelClick); - } - }); - } - - function validateSync(resolve, reject) { - - Dashboard.getPluginSecurityInfo().then(function (pluginSecurityInfo) { - - if (pluginSecurityInfo.IsMBSupporter) { - resolve(); - return; - } - - Dashboard.showLoadingMsg(); - - ApiClient.getRegistrationInfo('Sync').then(function (registrationInfo) { - - Dashboard.hideLoadingMsg(); - - if (registrationInfo.IsRegistered) { - resolve(); - return; - } - - Dashboard.alert({ - message: Globalize.translate('HeaderSyncRequiresSupporterMembership') + '

' + Globalize.translate('ButtonLearnMore') + '

', - title: Globalize.translate('HeaderSync'), - callback: reject - }); - - }, function () { - - reject(); - Dashboard.hideLoadingMsg(); - - Dashboard.alert({ - message: Globalize.translate('ErrorValidatingSupporterInfo') - }); - }); - - }); - } - - return { - validateFeature: function (name) { - - return new Promise(function (resolve, reject) { - if (name == 'playback') { - validatePlayback(resolve, reject); - } else if (name == 'livetv') { - resolve(); - } else if (name == 'sync') { - validateSync(resolve, reject); - } else { - resolve(); - } - }); - }, - - showPremiereInfo: function () { - shell.openUrl('https://emby.media/premiere'); - } - }; -}); \ No newline at end of file diff --git a/dashboard-ui/scripts/sections.js b/dashboard-ui/scripts/sections.js index ae326e7a68..f48d93a95b 100644 --- a/dashboard-ui/scripts/sections.js +++ b/dashboard-ui/scripts/sections.js @@ -9,7 +9,6 @@ } function enableScrollX() { - return browserInfo.mobile && AppInfo.enableAppLayouts; } diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 18e3b5c955..ed4c969abc 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -1202,12 +1202,10 @@ var AppInfo = {}; if (Dashboard.isRunningInCordova()) { paths.sharingMenu = "cordova/sharingwidget"; paths.wakeonlan = "cordova/wakeonlan"; - paths.actionsheet = "cordova/actionsheet"; } else { paths.wakeonlan = apiClientBowerPath + "/wakeonlan"; define("sharingMenu", [embyWebComponentsBowerPath + "/sharing/sharingmenu"], returnFirstDependency); - define("actionsheet", ["webActionSheet"], returnFirstDependency); } define("libjass", [bowerPath + "/libjass/libjass.min", "css!" + bowerPath + "/libjass/libjass"], returnFirstDependency); @@ -1361,17 +1359,14 @@ var AppInfo = {}; define("formDialogStyle", ['css!' + embyWebComponentsBowerPath + "/formdialog"], returnFirstDependency); define("indicators", [embyWebComponentsBowerPath + "/indicators/indicators"], returnFirstDependency); - if (Dashboard.isRunningInCordova()) { - define('registrationservices', ['cordova/registrationservices'], returnFirstDependency); - - } else { - define('registrationservices', ['scripts/registrationservices'], returnFirstDependency); - } + define("registrationServices", [embyWebComponentsBowerPath + "/registrationservices/registrationservices"], returnFirstDependency); if (Dashboard.isRunningInCordova()) { + define("iapManager", ["cordova/iap"], returnFirstDependency); define("localassetmanager", ["cordova/localassetmanager"], returnFirstDependency); define("fileupload", ["cordova/fileupload"], returnFirstDependency); } else { + define("iapManager", ["components/iap"], returnFirstDependency); define("localassetmanager", [apiClientBowerPath + "/localassetmanager"], returnFirstDependency); define("fileupload", [apiClientBowerPath + "/fileupload"], returnFirstDependency); } @@ -1621,6 +1616,12 @@ var AppInfo = {}; var embyWebComponentsBowerPath = bowerPath + '/emby-webcomponents'; + if (Dashboard.isRunningInCordova() && browser.safari) { + paths.actionsheet = "cordova/actionsheet"; + } else { + define("actionsheet", ["webActionSheet"], returnFirstDependency); + } + if (!('registerElement' in document)) { if (browser.msie) { define("registerElement", [bowerPath + '/webcomponentsjs/webcomponents-lite.min.js']); @@ -2662,7 +2663,7 @@ var AppInfo = {}; loadTheme(); if (Dashboard.isRunningInCordova()) { - deps.push('registrationservices'); + deps.push('registrationServices'); if (browserInfo.android) { deps.push('cordova/android/androidcredentials'); diff --git a/dashboard-ui/scripts/supporterkeypage.js b/dashboard-ui/scripts/supporterkeypage.js index e3d86eac1f..1247d29997 100644 --- a/dashboard-ui/scripts/supporterkeypage.js +++ b/dashboard-ui/scripts/supporterkeypage.js @@ -1,4 +1,4 @@ -define(['fetchHelper', 'jQuery', 'registrationservices'], function (fetchHelper, $, registrationServices) { +define(['fetchHelper', 'jQuery', 'registrationServices'], function (fetchHelper, $, registrationServices) { function load(page) { Dashboard.showLoadingMsg(); diff --git a/dashboard-ui/scripts/taskbutton.js b/dashboard-ui/scripts/taskbutton.js index 8ce744e84a..273acfa841 100644 --- a/dashboard-ui/scripts/taskbutton.js +++ b/dashboard-ui/scripts/taskbutton.js @@ -77,58 +77,8 @@ function onButtonClick() { var button = this; - var buttonTextElement = this.querySelector('span') || this; - var text = buttonTextElement.textContent || buttonTextElement.innerText; var taskId = button.getAttribute('data-taskid'); - - var key = 'scheduledTaskButton' + options.taskKey; - var expectedValue = new Date().getMonth() + '6'; - - if (userSettings.get(key) == expectedValue) { - onScheduledTaskMessageConfirmed(taskId); - } else { - - require(['dialog'], function (dialog) { - - var msg = Globalize.translate('ConfirmMessageScheduledTaskButton'); - - var menuItems = []; - - menuItems.push({ - name: text, - id: 'task' - }); - menuItems.push({ - name: Globalize.translate('ButtonScheduledTasks'), - id: 'tasks' - }); - menuItems.push({ - name: Globalize.translate('ButtonCancel'), - id: 'cancel' - }); - - dialog({ - buttons: menuItems, - text: msg - - }).then(function (id) { - switch (id) { - - case 'task': - userSettings.set(key, expectedValue); - onScheduledTaskMessageConfirmed(taskId); - break; - case 'tasks': - userSettings.set(key, expectedValue); - Dashboard.navigate('scheduledtasks.html'); - break; - default: - break; - } - }); - - }); - } + onScheduledTaskMessageConfirmed(taskId); } function onSocketOpen() {
${HeaderDate} ${HeaderSource}