From 5bccc1840e8ad553cb74f16d726957e54c49b849 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 17 Sep 2015 12:04:04 -0400 Subject: [PATCH] begin rework of image editor --- .../imageeditor/imageeditor.js} | 250 +++--- .../imageeditor/imageeditor.template.html | 74 ++ .../components/imageuploader/imageuploader.js | 200 +++++ .../imageuploader/imageuploader.template.html | 35 + dashboard-ui/components/paperdialoghelper.js | 48 ++ .../subtitleeditor/subtitleeditor.js | 70 +- .../subtitleeditor.template.html | 12 +- dashboard-ui/cordova/fileupload.js | 10 +- dashboard-ui/cordova/ios/vlcplayer.js | 34 +- dashboard-ui/css/metadataeditor.css | 5 +- dashboard-ui/edititemmetadata.html | 776 ++++++++---------- dashboard-ui/scripts/edititemmetadata.js | 68 +- dashboard-ui/scripts/itemdetailpage.js | 4 +- dashboard-ui/scripts/librarybrowser.js | 45 +- dashboard-ui/scripts/librarylist.js | 17 +- dashboard-ui/scripts/librarymenu.js | 16 +- dashboard-ui/scripts/shared.js | 2 +- dashboard-ui/strings/html/ru.json | 20 +- dashboard-ui/strings/javascript/ar.json | 1 + dashboard-ui/strings/javascript/bg-BG.json | 1 + dashboard-ui/strings/javascript/ca.json | 1 + dashboard-ui/strings/javascript/cs.json | 1 + dashboard-ui/strings/javascript/da.json | 1 + dashboard-ui/strings/javascript/de.json | 1 + dashboard-ui/strings/javascript/el.json | 1 + dashboard-ui/strings/javascript/en-GB.json | 1 + dashboard-ui/strings/javascript/en-US.json | 1 + dashboard-ui/strings/javascript/es-AR.json | 1 + dashboard-ui/strings/javascript/es-MX.json | 1 + dashboard-ui/strings/javascript/es.json | 1 + dashboard-ui/strings/javascript/fi.json | 1 + dashboard-ui/strings/javascript/fr.json | 3 +- dashboard-ui/strings/javascript/gsw.json | 1 + dashboard-ui/strings/javascript/he.json | 1 + dashboard-ui/strings/javascript/hr.json | 1 + dashboard-ui/strings/javascript/it.json | 1 + .../strings/javascript/javascript.json | 2 + dashboard-ui/strings/javascript/kk.json | 3 +- dashboard-ui/strings/javascript/ms.json | 1 + dashboard-ui/strings/javascript/nb.json | 1 + dashboard-ui/strings/javascript/nl.json | 1 + dashboard-ui/strings/javascript/pl.json | 1 + dashboard-ui/strings/javascript/pt-BR.json | 3 +- dashboard-ui/strings/javascript/pt-PT.json | 1 + dashboard-ui/strings/javascript/ro.json | 1 + dashboard-ui/strings/javascript/ru.json | 25 +- dashboard-ui/strings/javascript/sl-SI.json | 1 + dashboard-ui/strings/javascript/sv.json | 1 + dashboard-ui/strings/javascript/tr.json | 1 + dashboard-ui/strings/javascript/uk.json | 1 + dashboard-ui/strings/javascript/vi.json | 1 + dashboard-ui/strings/javascript/zh-CN.json | 1 + dashboard-ui/strings/javascript/zh-TW.json | 1 + 53 files changed, 965 insertions(+), 787 deletions(-) rename dashboard-ui/{scripts/edititemimages.js => components/imageeditor/imageeditor.js} (74%) create mode 100644 dashboard-ui/components/imageeditor/imageeditor.template.html create mode 100644 dashboard-ui/components/imageuploader/imageuploader.js create mode 100644 dashboard-ui/components/imageuploader/imageuploader.template.html create mode 100644 dashboard-ui/components/paperdialoghelper.js rename dashboard-ui/{ => components}/subtitleeditor/subtitleeditor.js (88%) rename dashboard-ui/{ => components}/subtitleeditor/subtitleeditor.template.html (63%) diff --git a/dashboard-ui/scripts/edititemimages.js b/dashboard-ui/components/imageeditor/imageeditor.js similarity index 74% rename from dashboard-ui/scripts/edititemimages.js rename to dashboard-ui/components/imageeditor/imageeditor.js index 21038b5a6b..6d7293f50c 100644 --- a/dashboard-ui/scripts/edititemimages.js +++ b/dashboard-ui/components/imageeditor/imageeditor.js @@ -1,7 +1,6 @@ (function ($, document, window, FileReader, escape) { var currentItem; - var currentFile; var browsableImagePageSize = 10; var browsableImageStartIndex = 0; @@ -221,7 +220,7 @@ return html; } - function reload(page) { + function reload(page, item) { Dashboard.showLoadingMsg(); @@ -229,27 +228,34 @@ browsableImageType = 'Primary'; selectedProvider = null; - MetadataEditor.getItemPromise().done(function (item) { + if (item) { + reloadItem(page, item); + } + else { + ApiClient.getItem(Dashboard.getCurrentUserId(), currentItem.Id).done(function (item) { + reloadItem(page, item); + }); + } + } - currentItem = item; + function reloadItem(page, item) { - LibraryBrowser.renderName(item, $('.itemName', page), true); + currentItem = item; - ApiClient.getRemoteImageProviders(getBaseRemoteOptions()).done(function (providers) { + ApiClient.getRemoteImageProviders(getBaseRemoteOptions()).done(function (providers) { - if (providers.length) { - $('.lnkBrowseAllImages', page).removeClass('hide'); - } else { - $('.lnkBrowseAllImages', page).addClass('hide'); - } + if (providers.length) { + $('.lnkBrowseAllImages', page).removeClass('hide'); + } else { + $('.lnkBrowseAllImages', page).addClass('hide'); + } - ApiClient.getItemImageInfos(currentItem.Id).done(function (imageInfos) { + ApiClient.getItemImageInfos(currentItem.Id).done(function (imageInfos) { - renderStandardImages(page, item, imageInfos, providers); - renderBackdrops(page, item, imageInfos, providers); - renderScreenshots(page, item, imageInfos, providers); - Dashboard.hideLoadingMsg(); - }); + renderStandardImages(page, item, imageInfos, providers); + renderBackdrops(page, item, imageInfos, providers); + renderScreenshots(page, item, imageInfos, providers); + Dashboard.hideLoadingMsg(); }); }); } @@ -280,7 +286,7 @@ html += '

 

'; } - html += '

'; + html += '

'; if (image.ImageType == "Backdrop" || image.ImageType == "Screenshot") { @@ -303,7 +309,7 @@ html += ''; - html += '

'; + html += '
'; html += ''; @@ -319,12 +325,7 @@ return i.ImageType != "Screenshot" && i.ImageType != "Backdrop" && i.ImageType != "Chapter"; }); - if (images.length) { - $('#imagesContainer', page).show(); - renderImages(page, item, images, imageProviders, $('#images', page)); - } else { - $('#imagesContainer', page).hide(); - } + renderImages(page, item, images, imageProviders, $('#images', page)); } function renderBackdrops(page, item, imageInfos, imageProviders) { @@ -361,95 +362,6 @@ } } - function onFileReaderError(evt) { - - Dashboard.hideLoadingMsg(); - - switch (evt.target.error.code) { - case evt.target.error.NOT_FOUND_ERR: - Dashboard.showError(Globalize.translate('MessageFileNotFound')); - break; - case evt.target.error.ABORT_ERR: - break; // noop - default: - Dashboard.showError(Globalize.translate('MessageFileReadError')); - break; - }; - } - - function setFiles(page, files) { - - var file = files[0]; - - if (!file || !file.type.match('image.*')) { - $('#imageOutput', page).html(''); - $('#fldUpload', page).hide(); - currentFile = null; - return; - } - - currentFile = file; - - var reader = new FileReader(); - - reader.onerror = onFileReaderError; - reader.onloadstart = function () { - $('#fldUpload', page).hide(); - }; - reader.onabort = function () { - Dashboard.hideLoadingMsg(); - Logger.log('File read cancelled'); - }; - - // Closure to capture the file information. - reader.onload = (function (theFile) { - return function (e) { - - // Render thumbnail. - var html = [''].join(''); - - $('#imageOutput', page).html(html); - $('#fldUpload', page).show(); - }; - })(file); - - // Read in the image file as a data URL. - reader.readAsDataURL(file); - } - - function processImageChangeResult(page) { - - reload(page); - } - - function onSubmit() { - var file = currentFile; - - if (!file) { - return false; - } - - if (file.type != "image/png" && file.type != "image/jpeg" && file.type != "image/jpeg") { - return false; - } - - Dashboard.showLoadingMsg(); - - var page = $.mobile.activePage; - - var imageType = $('#selectImageType', page).val(); - - ApiClient.uploadItemImage(currentItem.Id, imageType, file).done(function () { - - $('#uploadImage', page).val('').trigger('change'); - $('#popupUpload', page).popup("close"); - processImageChangeResult(page); - - }); - - return false; - } - function editItemImages() { var self = this; @@ -463,14 +375,12 @@ if (result) { ApiClient.deleteItemImage(currentItem.Id, type, index).done(function () { - processImageChangeResult(page); + reload(page); }); } }); - - }; self.moveImage = function (type, index, newIndex) { @@ -479,7 +389,7 @@ ApiClient.updateItemImageIndex(currentItem.Id, type, index, newIndex).done(function () { - processImageChangeResult(page); + reload(page); }); @@ -500,9 +410,7 @@ window.EditItemImagesPage = new editItemImages(); - $(document).on('pageinit', "#editItemMetadataPage", function () { - - var page = this; + function initEditor(page) { $('#selectBrowsableImageType', page).on('change', function () { @@ -528,11 +436,17 @@ reloadBrowsableImages(page); }); - $('.uploadItemImageForm').off('submit', onSubmit).on('submit', onSubmit); - $('.btnOpenUploadMenu', page).on('click', function () { - $('#popupUpload', page).popup('open'); + require(['components/imageuploader/imageuploader'], function () { + + ImageUploader.show(currentItem.Id).done(function (hasChanges) { + + if (hasChanges) { + reload(page); + } + }); + }); }); $('.btnBrowseAllImages', page).on('click', function () { @@ -542,36 +456,80 @@ $('.popupDownload', page).popup('open'); reloadBrowsableImages(page); }); + } - $('#uploadImage', page).on("change", function () { - setFiles(page, this.files); + function showEditor(itemId) { + + Dashboard.showLoadingMsg(); + + ApiClient.ajax({ + + type: 'GET', + url: 'components/imageeditor/imageeditor.template.html' + + }).done(function (template) { + + ApiClient.getItem(Dashboard.getCurrentUserId(), itemId).done(function (item) { + + var dlg = document.createElement('paper-dialog'); + + dlg.setAttribute('with-backdrop', 'with-backdrop'); + dlg.setAttribute('role', 'alertdialog'); + dlg.entryAnimation = 'scale-up-animation'; + dlg.exitAnimation = 'fade-out-animation'; + dlg.classList.add('fullscreen-editor-paper-dialog'); + dlg.classList.add('ui-body-b'); + + var html = ''; + html += '

'; + html += ''; + html += '
' + item.Name + '
'; + html += '

'; + + html += '
'; + html += Globalize.translateDocument(template); + html += '
'; + + dlg.innerHTML = html; + document.body.appendChild(dlg); + + initEditor(dlg); + + // Has to be assigned a z-index after the call to .open() + $(dlg).on('iron-overlay-closed', onDialogClosed); + + document.body.classList.add('bodyWithPopupOpen'); + PaperDialogHelper.openWithHash(dlg, 'imageeditor'); + + var editorContent = dlg.querySelector('.editorContent'); + reload(editorContent, item); + + $('.btnCloseDialog', dlg).on('click', closeDialog); + }); }); + } - $("#imageDropZone", page).on('dragover', function (e) { + function closeDialog() { - e.preventDefault(); + history.back(); + } - e.originalEvent.dataTransfer.dropEffect = 'Copy'; + function onDialogClosed() { - return false; + document.body.classList.remove('bodyWithPopupOpen'); + $(this).remove(); + Dashboard.hideLoadingMsg(); + } - }).on('drop', function (e) { + window.ImageEditor = { + show: function (itemId) { - e.preventDefault(); + require(['components/paperdialoghelper', 'jqmpopup'], function () { - setFiles(page, e.originalEvent.dataTransfer.files); - - return false; - }); - - $(page.querySelector('paper-tabs')).on('tabchange', function () { - - if (parseInt(this.selected) == 1) { - var tabContent = page.querySelector('.imageEditorTab'); - - reload(tabContent); - } - }); - }); + Dashboard.importCss('css/metadataeditor.css'); + showEditor(itemId); + }); + } + }; })(jQuery, document, window, window.FileReader, escape); \ No newline at end of file diff --git a/dashboard-ui/components/imageeditor/imageeditor.template.html b/dashboard-ui/components/imageeditor/imageeditor.template.html new file mode 100644 index 0000000000..54186ddf33 --- /dev/null +++ b/dashboard-ui/components/imageeditor/imageeditor.template.html @@ -0,0 +1,74 @@ +
+
+

${HeaderImages}

+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/dashboard-ui/components/imageuploader/imageuploader.js b/dashboard-ui/components/imageuploader/imageuploader.js new file mode 100644 index 0000000000..a1bf190ee2 --- /dev/null +++ b/dashboard-ui/components/imageuploader/imageuploader.js @@ -0,0 +1,200 @@ +(function ($, window, document) { + + var currentItemId; + var currentFile; + var currentDeferred; + var hasChanges = false; + + function onFileReaderError(evt) { + + Dashboard.hideLoadingMsg(); + + switch (evt.target.error.code) { + case evt.target.error.NOT_FOUND_ERR: + Dashboard.showError(Globalize.translate('MessageFileNotFound')); + break; + case evt.target.error.ABORT_ERR: + break; // noop + default: + Dashboard.showError(Globalize.translate('MessageFileReadError')); + break; + }; + } + + function setFiles(page, files) { + + var file = files[0]; + + if (!file || !file.type.match('image.*')) { + $('#imageOutput', page).html(''); + $('#fldUpload', page).hide(); + currentFile = null; + return; + } + + currentFile = file; + + var reader = new FileReader(); + + reader.onerror = onFileReaderError; + reader.onloadstart = function () { + $('#fldUpload', page).hide(); + }; + reader.onabort = function () { + Dashboard.hideLoadingMsg(); + Logger.log('File read cancelled'); + }; + + // Closure to capture the file information. + reader.onload = (function (theFile) { + return function (e) { + + // Render thumbnail. + var html = [''].join(''); + + $('#imageOutput', page).html(html); + $('#fldUpload', page).show(); + }; + })(file); + + // Read in the image file as a data URL. + reader.readAsDataURL(file); + } + + function processImageChangeResult(page) { + + hasChanges = true; + history.back(); + } + + function onSubmit() { + + var file = currentFile; + + if (!file) { + return false; + } + + if (file.type != "image/png" && file.type != "image/jpeg" && file.type != "image/jpeg") { + return false; + } + + Dashboard.showLoadingMsg(); + + var page = $(this).parents('paper-dialog'); + + var imageType = $('#selectImageType', page).val(); + + ApiClient.uploadItemImage(currentItemId, imageType, file).done(function () { + + $('#uploadImage', page).val('').trigger('change'); + $('#popupUpload', page).popup("close"); + Dashboard.hideLoadingMsg(); + processImageChangeResult(page); + }); + + return false; + } + + function initEditor(page) { + + $('form', page).off('submit', onSubmit).on('submit', onSubmit); + + $('#uploadImage', page).on("change", function () { + setFiles(page, this.files); + }); + + $("#imageDropZone", page).on('dragover', function (e) { + + e.preventDefault(); + + e.originalEvent.dataTransfer.dropEffect = 'Copy'; + + return false; + + }).on('drop', function (e) { + + e.preventDefault(); + + setFiles(page, e.originalEvent.dataTransfer.files); + + return false; + }); + } + + function showEditor(itemId) { + + ApiClient.ajax({ + + type: 'GET', + url: 'components/imageuploader/imageuploader.template.html' + + }).done(function (template) { + + currentItemId = itemId; + + var dlg = document.createElement('paper-dialog'); + + dlg.setAttribute('with-backdrop', 'with-backdrop'); + dlg.setAttribute('role', 'alertdialog'); + dlg.entryAnimation = 'scale-up-animation'; + dlg.exitAnimation = 'fade-out-animation'; + dlg.classList.add('fullscreen-editor-paper-dialog'); + dlg.classList.add('ui-body-b'); + + var html = ''; + html += '

'; + html += ''; + html += '
' + Globalize.translate('HeaderUploadImage') + '
'; + html += '

'; + + html += '
'; + html += Globalize.translateDocument(template); + html += '
'; + + dlg.innerHTML = html; + document.body.appendChild(dlg); + + // Has to be assigned a z-index after the call to .open() + $(dlg).on('iron-overlay-closed', onDialogClosed); + + document.body.classList.add('bodyWithPopupOpen'); + PaperDialogHelper.openWithHash(dlg, 'imageuploader'); + + var editorContent = dlg.querySelector('.editorContent'); + initEditor(editorContent); + + $('.btnCloseDialog', dlg).on('click', closeDialog); + }); + } + + function closeDialog() { + + history.back(); + } + + function onDialogClosed() { + + document.body.classList.remove('bodyWithPopupOpen'); + $(this).remove(); + Dashboard.hideLoadingMsg(); + currentDeferred.resolveWith(null, [hasChanges]); + } + + window.ImageUploader = { + show: function (itemId) { + + var deferred = DeferredBuilder.Deferred(); + + currentDeferred = deferred; + hasChanges = false; + + require(['components/paperdialoghelper'], function () { + + showEditor(itemId); + }); + return deferred.promise(); + } + }; + +})(jQuery, window, document); \ No newline at end of file diff --git a/dashboard-ui/components/imageuploader/imageuploader.template.html b/dashboard-ui/components/imageuploader/imageuploader.template.html new file mode 100644 index 0000000000..4070f8ca3b --- /dev/null +++ b/dashboard-ui/components/imageuploader/imageuploader.template.html @@ -0,0 +1,35 @@ +
+

${HeaderAddUpdateImage}

+
+

${LabelJpgPngOnly}

+ + +
+

${LabelDropImageHere}

+ +
+ +
+
\ No newline at end of file diff --git a/dashboard-ui/components/paperdialoghelper.js b/dashboard-ui/components/paperdialoghelper.js new file mode 100644 index 0000000000..a272358c9b --- /dev/null +++ b/dashboard-ui/components/paperdialoghelper.js @@ -0,0 +1,48 @@ +(function (globalScope) { + + function paperDialogHashHandler(dlg, hash) { + + function onHashChange(e, data) { + + data = data.state; + + if (data.direction == 'back') { + if (dlg) { + if (data.hash != '#' + hash) { + dlg.close(); + dlg = null; + } + } + } + } + + function onDialogClosed() { + + dlg = null; + $(window).off('navigate', onHashChange); + + if (window.location.hash == '#' + hash) { + history.back(); + } + } + + var self = this; + + $(dlg).on('iron-overlay-closed', onDialogClosed); + dlg.open(); + + window.location.hash = hash; + + $(window).on('navigate', onHashChange); + } + + function openWithHash(dlg, hash) { + + new paperDialogHashHandler(dlg, hash); + } + + globalScope.PaperDialogHelper = { + openWithHash: openWithHash + }; + +})(this); \ No newline at end of file diff --git a/dashboard-ui/subtitleeditor/subtitleeditor.js b/dashboard-ui/components/subtitleeditor/subtitleeditor.js similarity index 88% rename from dashboard-ui/subtitleeditor/subtitleeditor.js rename to dashboard-ui/components/subtitleeditor/subtitleeditor.js index 8b3acd2259..94aff393a0 100644 --- a/dashboard-ui/subtitleeditor/subtitleeditor.js +++ b/dashboard-ui/components/subtitleeditor/subtitleeditor.js @@ -1,7 +1,6 @@ (function ($, window, document) { var currentItem; - var currentDialog; function showLocalSubtitles(page, index) { @@ -151,9 +150,6 @@ html += ''; } - else { - html += '
'; - } var elem = $('.subtitleList', page).html(html).trigger('create'); @@ -182,14 +178,21 @@ })); - Dashboard.getCurrentUser().done(function (user) { + var lastLanguage = appStorage.getItem('subtitleeditor-language'); + if (lastLanguage) { + $('#selectLanguage', page).val(lastLanguage); + } + else { - var lang = user.Configuration.SubtitleLanguagePreference; + Dashboard.getCurrentUser().done(function (user) { - if (lang) { - $('#selectLanguage', page).val(lang); - } - }); + var lang = user.Configuration.SubtitleLanguagePreference; + + if (lang) { + $('#selectLanguage', page).val(lang); + } + }); + } } function renderSearchResults(page, results) { @@ -277,6 +280,8 @@ function searchForSubtitles(page, language) { + appStorage.setItem('subtitleeditor-language', language); + Dashboard.showLoadingMsg(); var url = ApiClient.getUrl('Items/' + currentItem.Id + '/RemoteSearch/Subtitles/' + language); @@ -324,7 +329,7 @@ ApiClient.ajax({ type: 'GET', - url: 'subtitleeditor/subtitleeditor.template.html' + url: 'components/subtitleeditor/subtitleeditor.template.html' }).done(function (template) { @@ -358,13 +363,7 @@ $(dlg).on('iron-overlay-closed', onDialogClosed); document.body.classList.add('bodyWithPopupOpen'); - dlg.open(); - - window.location.hash = getHash(itemId); - - window.addEventListener('hashchange', onHashChange); - - currentDialog = dlg; + PaperDialogHelper.openWithHash(dlg, 'subtitleeditor'); var editorContent = dlg.querySelector('.editorContent'); reload(editorContent, item); @@ -379,45 +378,26 @@ }); } - function getHash(itemId) { - return 'subtitleeditor?id=' + itemId; - } - - function onHashChange() { - - // In some browsers this will fire immediately after opening the dialog, despite the fact that we bound the event after setting the hash - if (currentItem && window.location.hash == '#' + getHash(currentItem.Id)) { - return; - } - - if (currentDialog) { - closeDialog(); - } - } - function closeDialog() { - window.removeEventListener('hashchange', onHashChange); - - if (currentDialog) { - currentDialog.close(); - } + history.back(); } function onDialogClosed() { - currentDialog = null; - window.removeEventListener('hashchange', onHashChange); document.body.classList.remove('bodyWithPopupOpen'); $(this).remove(); Dashboard.hideLoadingMsg(); - if ((window.location.hash || '').length > 1) { - history.back(); - } } window.SubtitleEditor = { - show: showEditor + show: function (itemId) { + + require(['components/paperdialoghelper'], function () { + + showEditor(itemId); + }); + } }; })(jQuery, window, document); \ No newline at end of file diff --git a/dashboard-ui/subtitleeditor/subtitleeditor.template.html b/dashboard-ui/components/subtitleeditor/subtitleeditor.template.html similarity index 63% rename from dashboard-ui/subtitleeditor/subtitleeditor.template.html rename to dashboard-ui/components/subtitleeditor/subtitleeditor.template.html index cd01295780..453c2e78ff 100644 --- a/dashboard-ui/subtitleeditor/subtitleeditor.template.html +++ b/dashboard-ui/components/subtitleeditor/subtitleeditor.template.html @@ -1,11 +1,11 @@ -
+

${HeaderSearchForSubtitles}

-
+
@@ -15,10 +15,8 @@
-
-
- +
+
diff --git a/dashboard-ui/cordova/fileupload.js b/dashboard-ui/cordova/fileupload.js index 772e85bf52..1e7a3df228 100644 --- a/dashboard-ui/cordova/fileupload.js +++ b/dashboard-ui/cordova/fileupload.js @@ -12,7 +12,13 @@ fileEntry.file(function (file) { - var mimeType = file.type; + var mimeType = (file.type || ''); + + if (mimeType.indexOf('image/') != 0) { + Logger.log('Skipping upload because file is not an image. path: ' + path + ' mimeType: ' + mimeType); + deferred.reject(); + return; + } Logger.log('mimeType for file ' + path + ' is ' + file); @@ -37,7 +43,7 @@ var params = {}; options.params = params; - new FileTransfer().upload(file, url, onSuccess, onFail, options); + new FileTransfer().upload(path, url, onSuccess, onFail, options); }, function () { Logger.log('File upload failed. fileEntry.file returned an error'); diff --git a/dashboard-ui/cordova/ios/vlcplayer.js b/dashboard-ui/cordova/ios/vlcplayer.js index adbeba4760..323a05d0da 100644 --- a/dashboard-ui/cordova/ios/vlcplayer.js +++ b/dashboard-ui/cordova/ios/vlcplayer.js @@ -130,6 +130,27 @@ //AndroidVlcPlayer.playAudioVlc(val, JSON.stringify(item), JSON.stringify(mediaSource), options.poster); var artist = item.ArtistItems && item.ArtistItems.length ? item.ArtistItems[0].Name : null; + + var metadata = {}; + + if (item.Name) { + metadata.title = item.Name; + } + if (artist) { + metadata.artist = artist; + } + if (item.Overview) { + metadata.description = item.Overview; + } + if (options.poster) { + metadata.image = { + url: options.poster + }; + metadata.imageThumbnail = { + url: options.poster + }; + } + window.audioplayer.playstream(successHandler, function () { Logger.log('playstream failed!'); @@ -139,18 +160,7 @@ ios: val }, // metadata used for iOS lock screen, Android 'Now Playing' notification - { - "title": item.Name, - "artist": artist, - "image": { - "url": options.poster - }, - "imageThumbnail": { - "url": options.poster - }, - "name": item.Name, - "description": item.Overview - } + metadata ); } else { diff --git a/dashboard-ui/css/metadataeditor.css b/dashboard-ui/css/metadataeditor.css index aa1e7aef95..89589b82d1 100644 --- a/dashboard-ui/css/metadataeditor.css +++ b/dashboard-ui/css/metadataeditor.css @@ -213,10 +213,7 @@ .editorTile h3 { text-transform: uppercase; - background: #444; - padding: .5em 0; text-align: center; - margin-top: 0; color: #ddd; } @@ -225,7 +222,7 @@ } .editorTileInner { - padding: 1em; + padding: .5em; } .editorTile .ui-field-contain { diff --git a/dashboard-ui/edititemmetadata.html b/dashboard-ui/edititemmetadata.html index c1c157cf6e..f2c1ebcaeb 100644 --- a/dashboard-ui/edititemmetadata.html +++ b/dashboard-ui/edititemmetadata.html @@ -4,372 +4,335 @@ Emby -
-
-
-
-
    -
    -
    - diff --git a/dashboard-ui/scripts/edititemmetadata.js b/dashboard-ui/scripts/edititemmetadata.js index 413ab917b5..11cf039ed2 100644 --- a/dashboard-ui/scripts/edititemmetadata.js +++ b/dashboard-ui/scripts/edititemmetadata.js @@ -1447,7 +1447,7 @@ //$.mobile.urlHistory.ignoreNextHashChange = true; window.location.hash = 'editItemMetadataPage?id=' + data.id; - $(page.querySelector('paper-tabs')).trigger('tabchange'); + reload(page); } }); @@ -1462,25 +1462,6 @@ $('.popupAdvancedRefreshForm').off('submit', EditItemMetadataPage.onRefreshFormSubmit).on('submit', EditItemMetadataPage.onRefreshFormSubmit); $('.identifyOptionsForm').off('submit', EditItemMetadataPage.onIdentificationOptionsSubmit).on('submit', EditItemMetadataPage.onIdentificationOptionsSubmit); - var tabs = page.querySelector('paper-tabs'); - - configurePaperLibraryTabs(page, tabs); - - $(tabs).on('iron-select', function () { - - var self = this; - - setTimeout(function () { - Events.trigger(self, 'tabchange'); - }, 400); - - }).on('tabchange', function () { - var selected = this.selected; - - showTab(page, selected); - loadTab(page, parseInt(this.selected)); - }); - page.querySelector('.btnMore iron-icon').icon = AppInfo.moreIcon; $('.btnMore', page).on('click', function () { @@ -1492,10 +1473,7 @@ var page = this; $(LibraryBrowser).on('itemdeleting', onItemDeleted); - - var selected = parseInt(getParameterByName('tab') || '0'); - - page.querySelector('paper-tabs').selected = selected; + reload(page); }).on('pagebeforehide', "#editItemMetadataPage", function () { @@ -1503,49 +1481,7 @@ $(LibraryBrowser).off('itemdeleting', onItemDeleted); unbindItemChanged(page); - }); - function configurePaperLibraryTabs(ownerpage, tabs) { - - tabs.hideScrollButtons = true; - tabs.noSlide = true; - - // Unfortunately we can't disable this because it causes iron-select to not fire in IE and Safari. - //tabs.noink = true; - - $(ownerpage).on('pageshowready', function () { - - var selected = tabs.selected; - - if (selected == null) { - - Logger.log('selected tab is null, checking query string'); - - selected = parseInt(getParameterByName('tab') || '0'); - - Logger.log('selected tab will be ' + selected); - - tabs.selected = selected; - - } else { - Events.trigger(tabs, 'tabchange'); - } - }); - } - - function loadTab(page, index) { - - switch (index) { - - case 0: - reload(page); - break; - default: - reload(page); - break; - } - } - })(jQuery, document, window); diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js index fa73552c7f..343d5ce383 100644 --- a/dashboard-ui/scripts/itemdetailpage.js +++ b/dashboard-ui/scripts/itemdetailpage.js @@ -244,9 +244,7 @@ function renderImage(page, item, user) { - var imageHref = user.Policy.IsAdministrator && item.MediaType != 'Photo' ? "edititemmetadata.html?tab=1&id=" + item.Id : ""; - - LibraryBrowser.renderDetailImage(page.querySelector('.detailImageContainer'), item, imageHref); + LibraryBrowser.renderDetailImage(page.querySelector('.detailImageContainer'), item, user.Policy.IsAdministrator && item.MediaType != 'Photo'); } function refreshImage(page, item, user) { diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 46de0d2548..7adf4dc436 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -678,9 +678,10 @@ commands.push('edit'); - if (item.MediaType == 'Video' && item.Type != 'TvChannel' && item.Type != 'Program') { - commands.push('managesubtitles'); + if (item.MediaType == 'Video' && item.Type != 'TvChannel' && item.Type != 'Program' && item.LocationType != 'Virtual') { + commands.push('editsubtitles'); } + commands.push('editimages'); } commands.push('refresh'); @@ -735,9 +736,17 @@ }, 250); }, + editImages: function (itemId) { + + require(['components/imageeditor/imageeditor'], function () { + + ImageEditor.show(itemId); + }); + }, + editSubtitles: function (itemId) { - require(['subtitleeditor/subtitleeditor'], function () { + require(['components/subtitleeditor/subtitleeditor'], function () { SubtitleEditor.show(itemId); }); @@ -787,10 +796,18 @@ }); } - if (commands.indexOf('managesubtitles') != -1) { + if (commands.indexOf('editimages') != -1) { + items.push({ + name: Globalize.translate('ButtonEditImages'), + id: 'editimages', + ironIcon: 'photo' + }); + } + + if (commands.indexOf('editsubtitles') != -1) { items.push({ name: Globalize.translate('ButtonEditSubtitles'), - id: 'managesubtitles', + id: 'editsubtitles', ironIcon: 'closed-caption' }); } @@ -846,9 +863,12 @@ case 'edit': Dashboard.navigate('edititemmetadata.html?id=' + itemId); break; - case 'managesubtitles': + case 'editsubtitles': LibraryBrowser.editSubtitles(itemId); break; + case 'editimages': + LibraryBrowser.editImages(itemId); + break; case 'refresh': ApiClient.refreshItem(itemId, { @@ -1431,9 +1451,10 @@ itemCommands.push('record'); } - if (item.MediaType == 'Video' && item.Type != 'TvChannel' && item.Type != 'Program') { - itemCommands.push('managesubtitles'); + if (item.MediaType == 'Video' && item.Type != 'TvChannel' && item.Type != 'Program' && item.LocationType != 'Virtual') { + itemCommands.push('editsubtitles'); } + itemCommands.push('editimages'); return itemCommands; }, @@ -3030,7 +3051,7 @@ return html; }, - renderDetailImage: function (elem, item, href, preferThumb) { + renderDetailImage: function (elem, item, editable, preferThumb) { var imageTags = item.ImageTags || {}; @@ -3127,8 +3148,8 @@ html += '
    '; - if (href) { - html += ""; + if (editable) { + html += ""; } if (detectRatio && item.PrimaryImageAspectRatio) { @@ -3142,7 +3163,7 @@ html += ""; - if (href) { + if (editable) { html += ""; } diff --git a/dashboard-ui/scripts/librarylist.js b/dashboard-ui/scripts/librarylist.js index c32bb38619..327ebc4b4c 100644 --- a/dashboard-ui/scripts/librarylist.js +++ b/dashboard-ui/scripts/librarylist.js @@ -238,10 +238,18 @@ }); } - if (commands.indexOf('managesubtitles') != -1) { + if (commands.indexOf('editimages') != -1) { + items.push({ + name: Globalize.translate('ButtonEditImages'), + id: 'editimages', + ironIcon: 'photo' + }); + } + + if (commands.indexOf('editsubtitles') != -1) { items.push({ name: Globalize.translate('ButtonEditSubtitles'), - id: 'managesubtitles', + id: 'editsubtitles', ironIcon: 'closed-caption' }); } @@ -481,9 +489,12 @@ }] }); break; - case 'managesubtitles': + case 'editsubtitles': LibraryBrowser.editSubtitles(itemId); break; + case 'editimages': + LibraryBrowser.editImages(itemId); + break; case 'externalplayer': LibraryBrowser.playInExternalPlayer(itemId); break; diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index 5ae17652a2..57b7f4538c 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -1048,22 +1048,16 @@ $.fn.createHoverTouch = function () { (function () { - var backUrl; + var isCurrentNavBack = false; - pageClassOn('pagebeforeshow', "page", function () { - - if (getWindowUrl() != backUrl) { - backUrl = null; - } - }); - - $(window).on("popstate", function () { - backUrl = getWindowUrl(); + $(window).on("navigate", function (e, data) { + data = data.state || {}; + isCurrentNavBack = data.direction == 'back'; }); function isBack() { - return backUrl == getWindowUrl(); + return isCurrentNavBack; } window.NavHelper = { diff --git a/dashboard-ui/scripts/shared.js b/dashboard-ui/scripts/shared.js index d9b9193941..303c04b4dd 100644 --- a/dashboard-ui/scripts/shared.js +++ b/dashboard-ui/scripts/shared.js @@ -58,7 +58,7 @@ } function renderImage(page, item) { - LibraryBrowser.renderDetailImage(page.querySelector('.detailImageContainer'), item, '#'); + LibraryBrowser.renderDetailImage(page.querySelector('.detailImageContainer'), item, false); } $(document).on('pageinit', "#publicSharedItemPage", function () { diff --git a/dashboard-ui/strings/html/ru.json b/dashboard-ui/strings/html/ru.json index ef838e94b5..f813bad90f 100644 --- a/dashboard-ui/strings/html/ru.json +++ b/dashboard-ui/strings/html/ru.json @@ -66,7 +66,7 @@ "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e", "HeaderPaths": "\u041f\u0443\u0442\u0438", "CategorySync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", - "TabPlaylist": "\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", + "TabPlaylist": "\u041f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442", "HeaderEasyPinCode": "\u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 PIN-\u043a\u043e\u0434", "HeaderGrownupsOnly": "\u0422\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445!", "DividerOr": "-- \u0438\u043b\u0438 --", @@ -918,8 +918,8 @@ "HeaderBecomeProjectSupporter": "\u0421\u0442\u0430\u043d\u044c\u0442\u0435 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u043e\u043c Emby", "MessageNoMovieSuggestionsAvailable": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432. \u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0444\u0438\u043b\u044c\u043c\u044b, \u0438 \u0442\u043e\u0433\u0434\u0430 \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u043d\u0430\u0437\u0430\u0434, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438.", "MessageNoCollectionsAvailable": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432, \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u0430\u043b\u044c\u0431\u043e\u043c\u043e\u0432, \u043a\u043d\u0438\u0433 \u0438 \u0438\u0433\u0440. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \"+\", \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.", - "MessageNoPlaylistsAvailable": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0438\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0440\u0430\u0437\u043e\u043c. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u043e \u0441\u043f\u0438\u0441\u043a\u0438, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u043a\u043e\u0441\u043d\u0438\u0442\u0435\u0441\u044c \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u00ab\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u00bb.", - "MessageNoPlaylistItemsAvailable": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0443\u0441\u0442.", + "MessageNoPlaylistsAvailable": "\u041f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u044b (\u0441\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f) \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0438\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0435\u0434\u0438\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u043e \u0441\u043f\u0438\u0441\u043a\u0438, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u043a\u043e\u0441\u043d\u0438\u0442\u0435\u0441\u044c \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u00ab\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u00bb.", + "MessageNoPlaylistItemsAvailable": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442 \u043f\u0443\u0441\u0442.", "ButtonDismiss": "\u041f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c", "ButtonEditOtherUserPreferences": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0440\u0438\u0441\u0443\u043d\u043e\u043a \u0438 \u043b\u0438\u0447\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.", "LabelChannelStreamQuality": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438:", @@ -933,7 +933,7 @@ "LabelChannelDownloadAgeHelp": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u0448\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043e. \u0415\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438.", "ChannelSettingsFormHelp": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043a\u0430\u043d\u0430\u043b\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: Trailers \u0438\u043b\u0438 Vimeo) \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.", "ButtonOptions": "\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b...", - "ViewTypePlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", + "ViewTypePlaylists": "\u041f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u044b", "ViewTypeMovies": "\u041a\u0438\u043d\u043e", "ViewTypeTvShows": "\u0422\u0412", "ViewTypeGames": "\u0418\u0433\u0440\u044b", @@ -963,7 +963,7 @@ "ViewTypeMovieFavorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", "ViewTypeMovieGenres": "\u0416\u0430\u043d\u0440\u044b", "ViewTypeMusicLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435", - "ViewTypeMusicPlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", + "ViewTypeMusicPlaylists": "\u041f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u044b", "ViewTypeMusicAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u044b", "ViewTypeMusicAlbumArtists": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438 \u0430\u043b\u044c\u0431\u043e\u043c\u0430", "HeaderOtherDisplaySettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", @@ -995,7 +995,7 @@ "OptionDisplayChannelsInline": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043a\u0430\u043d\u0430\u043b\u044b \u0440\u044f\u0434\u043e\u043c \u0441 \u043c\u043e\u0438\u043c\u0438 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u043c\u0438.", "OptionDisplayChannelsInlineHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043a\u0430\u043d\u0430\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u044f\u0434\u043e\u043c \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u043c\u0438. \u041f\u0440\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0441\u043f\u0435\u043a\u0442\u0430 \u00ab\u041a\u0430\u043d\u0430\u043b\u044b\u00bb.", "LabelDisplayCollectionsView": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0430\u0441\u043f\u0435\u043a\u0442 \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0444\u0438\u043b\u044c\u043c\u043e\u0432", - "LabelDisplayCollectionsViewHelp": "\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u0441\u043f\u0435\u043a\u0442 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0430\u043c\u0438 \u0438\u043b\u0438 \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0438\u043c\u0435\u0435\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u043a\u043e\u0441\u043d\u0438\u0442\u0435\u0441\u044c \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435 \u043b\u044e\u0431\u043e\u0439 \u0444\u0438\u043b\u044c\u043c, \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438\".", + "LabelDisplayCollectionsViewHelp": "\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u0441\u043f\u0435\u043a\u0442 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0430\u043c\u0438 \u0438\u043b\u0438 \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0438\u043c\u0435\u0435\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u043a\u043e\u0441\u043d\u0438\u0442\u0435\u0441\u044c \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435 \u043b\u044e\u0431\u043e\u0439 \u0444\u0438\u043b\u044c\u043c, \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e\". ", "LabelKodiMetadataEnableExtraThumbs": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c extrafanart \u0432\u043d\u0443\u0442\u0440\u044c extrathumbs", "LabelKodiMetadataEnableExtraThumbsHelp": "\u041f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432, \u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u044c extrafanart \u0438 extrathumbs \u0434\u043b\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u043e\u0439 Kodi.", "TabServices": "\u0421\u043b\u0443\u0436\u0431\u044b", @@ -1060,8 +1060,8 @@ "LabelContext": "\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442:", "OptionContextStreaming": "\u0422\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044f", "OptionContextStatic": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", - "ButtonAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f", - "TabPlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", + "ButtonAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442", + "TabPlaylists": "\u041f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u044b", "ButtonClose": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c", "LabelAllLanguages": "\u0412\u0441\u0435 \u044f\u0437\u044b\u043a\u0438", "HeaderBrowseOnlineImages": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0432 \u0441\u0435\u0442\u0438", @@ -1346,7 +1346,7 @@ "ButtonTrailerReel": "\u0421\u043a\u043b\u0435\u0438\u0442\u044c \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u044b", "HeaderTrailerReel": "\u0421\u043a\u043b\u0435\u0439\u043a\u0430 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432", "OptionPlayUnwatchedTrailersOnly": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0435 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u044b", - "HeaderTrailerReelHelp": "\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u043a\u043b\u0435\u0439\u043a\u0443 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0434\u043e\u043b\u0433\u043e\u0438\u0433\u0440\u0430\u044e\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432.", + "HeaderTrailerReelHelp": "\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u043a\u043b\u0435\u0439\u043a\u0443 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0434\u043e\u043b\u0433\u043e\u0438\u0433\u0440\u0430\u044e\u0449\u0438\u0439 \u043f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432.", "MessageNoTrailersFound": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043a\u0430\u043d\u0430\u043b \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0438\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0444\u0438\u043b\u044c\u043c\u0430 \u043f\u0443\u0442\u0451\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0431\u0440\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432.", "HeaderNewUsers": "\u041d\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438", "ButtonSignUp": "\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f", @@ -1415,7 +1415,7 @@ "LabelConversionCpuCoreLimitHelp": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e \u044f\u0434\u0435\u0440 \u0426\u041f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u044b \u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f.", "OptionEnableFullSpeedConversion": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435", "OptionEnableFullSpeedConversionHelp": "\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.", - "HeaderPlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", + "HeaderPlaylists": "\u041f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u044b", "HeaderViewStyles": "\u0421\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043e\u043a", "LabelSelectViewStyles": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f:", "LabelSelectViewStylesHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0435, \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u0416\u0430\u043d\u0440\u044b \u0438 \u0442.\u0434. \u041f\u0440\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044b \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u043f\u0430\u043f\u043a\u0430\u043c\u0438.", diff --git a/dashboard-ui/strings/javascript/ar.json b/dashboard-ui/strings/javascript/ar.json index 38af360e36..edb2b4e9a8 100644 --- a/dashboard-ui/strings/javascript/ar.json +++ b/dashboard-ui/strings/javascript/ar.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/bg-BG.json b/dashboard-ui/strings/javascript/bg-BG.json index a8c5aa2940..c435eaf0ea 100644 --- a/dashboard-ui/strings/javascript/bg-BG.json +++ b/dashboard-ui/strings/javascript/bg-BG.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/ca.json b/dashboard-ui/strings/javascript/ca.json index e4934c2b0d..557ef8dd24 100644 --- a/dashboard-ui/strings/javascript/ca.json +++ b/dashboard-ui/strings/javascript/ca.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/cs.json b/dashboard-ui/strings/javascript/cs.json index ca9dd7ebab..b1bbf479b3 100644 --- a/dashboard-ui/strings/javascript/cs.json +++ b/dashboard-ui/strings/javascript/cs.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/da.json b/dashboard-ui/strings/javascript/da.json index 2f9a8f7820..0ad9b190d2 100644 --- a/dashboard-ui/strings/javascript/da.json +++ b/dashboard-ui/strings/javascript/da.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/de.json b/dashboard-ui/strings/javascript/de.json index 9462e024d5..70d65f386d 100644 --- a/dashboard-ui/strings/javascript/de.json +++ b/dashboard-ui/strings/javascript/de.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Einstellungen", "ButtonViewArtist": "Zeige Darsteller", "ButtonViewAlbum": "Zeige Album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "Das Passwort und die Passwort-Best\u00e4tigung m\u00fcssen \u00fcbereinstimmen.", "ErrorMessageUsernameInUse": "Der Benutzername wird bereits verwenden. Bitte w\u00e4hlen Sie einen neuen Namen und versuchen Sie es erneut.", "ErrorMessageEmailInUse": "Die Emailadresse wird bereits verwendet. Bitte verwenden Sie eine neue Emailadresse und versuchen Sie es erneut oder benutzen Sie die \"Passwort vergessen\" Funktion.", diff --git a/dashboard-ui/strings/javascript/el.json b/dashboard-ui/strings/javascript/el.json index f32494b336..6f15aba07d 100644 --- a/dashboard-ui/strings/javascript/el.json +++ b/dashboard-ui/strings/javascript/el.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/en-GB.json b/dashboard-ui/strings/javascript/en-GB.json index 00728b1d94..f7de0b5dfb 100644 --- a/dashboard-ui/strings/javascript/en-GB.json +++ b/dashboard-ui/strings/javascript/en-GB.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/en-US.json b/dashboard-ui/strings/javascript/en-US.json index 42565ed9f5..f1587fd5ae 100644 --- a/dashboard-ui/strings/javascript/en-US.json +++ b/dashboard-ui/strings/javascript/en-US.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/es-AR.json b/dashboard-ui/strings/javascript/es-AR.json index 070710b68e..cdcea5094b 100644 --- a/dashboard-ui/strings/javascript/es-AR.json +++ b/dashboard-ui/strings/javascript/es-AR.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/es-MX.json b/dashboard-ui/strings/javascript/es-MX.json index 8b833f1787..5e420d0566 100644 --- a/dashboard-ui/strings/javascript/es-MX.json +++ b/dashboard-ui/strings/javascript/es-MX.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferencias", "ButtonViewArtist": "Ver artista", "ButtonViewAlbum": "Ver album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "La Contrase\u00f1a y la confirmaci\u00f3n de la contrase\u00f1a deben coincidir.", "ErrorMessageUsernameInUse": "El Nombre de Usuario ya esta en uso. Por favor seleccione un nuevo nombre e intente de nuevo.", "ErrorMessageEmailInUse": "La direcci\u00f3n de correo electr\u00f3nico ya esta en uso. Por favor ingrese un correo electr\u00f3nico nuevo e intente de nuevo, o si olvido la contrase\u00f1a use la opci\u00f3n \"Olvide mi contrase\u00f1a\".", diff --git a/dashboard-ui/strings/javascript/es.json b/dashboard-ui/strings/javascript/es.json index b60538b9c0..a4bc743391 100644 --- a/dashboard-ui/strings/javascript/es.json +++ b/dashboard-ui/strings/javascript/es.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/fi.json b/dashboard-ui/strings/javascript/fi.json index 293a7acaf8..5bdc35061c 100644 --- a/dashboard-ui/strings/javascript/fi.json +++ b/dashboard-ui/strings/javascript/fi.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/fr.json b/dashboard-ui/strings/javascript/fr.json index 93a3f733b8..af1748a18c 100644 --- a/dashboard-ui/strings/javascript/fr.json +++ b/dashboard-ui/strings/javascript/fr.json @@ -801,10 +801,11 @@ "MessageIfYouBlockedVoice": "Si vous avez supprim\u00e9 l'acc\u00e8s par commande vocale \u00e0 l'application, vous devrez reconfigurer avant de r\u00e9essayer.", "MessageNoItemsFound": "Aucun \u00e9l\u00e9ment trouv\u00e9", "ButtonManageServer": "G\u00e9rer le serveur", - "ButtonEditSubtitles": "Edit subtitles", + "ButtonEditSubtitles": "Modifier les sous-titres", "ButtonPreferences": "Pr\u00e9f\u00e9rences", "ButtonViewArtist": "Voir l'artiste", "ButtonViewAlbum": "Voir l'album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "Le mot de passe et sa confirmation doivent correspondre.", "ErrorMessageUsernameInUse": "Ce nom d'utilisateur est d\u00e9j\u00e0 utilis\u00e9. Veuillez en choisir un autre et r\u00e9essayer.", "ErrorMessageEmailInUse": "Cette adresse email est d\u00e9j\u00e0 utilis\u00e9e. Veuillez en saisir une autre et r\u00e9essayer, ou bien utiliser la fonction du mot de passe oubli\u00e9.", diff --git a/dashboard-ui/strings/javascript/gsw.json b/dashboard-ui/strings/javascript/gsw.json index b46b27b289..c6ddf2e7a5 100644 --- a/dashboard-ui/strings/javascript/gsw.json +++ b/dashboard-ui/strings/javascript/gsw.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/he.json b/dashboard-ui/strings/javascript/he.json index d8cdfa1559..a676b0c60b 100644 --- a/dashboard-ui/strings/javascript/he.json +++ b/dashboard-ui/strings/javascript/he.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/hr.json b/dashboard-ui/strings/javascript/hr.json index 8ea9593db5..68d9f2cbdd 100644 --- a/dashboard-ui/strings/javascript/hr.json +++ b/dashboard-ui/strings/javascript/hr.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/it.json b/dashboard-ui/strings/javascript/it.json index aead2721aa..5cbc3c3e68 100644 --- a/dashboard-ui/strings/javascript/it.json +++ b/dashboard-ui/strings/javascript/it.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferenze", "ButtonViewArtist": "Visualizza artista", "ButtonViewAlbum": "Visualizza album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "La password e la password di conferma devono corrispondere.", "ErrorMessageUsernameInUse": "L' username \u00e8 gi\u00e0 usato. Per favore scegli un nuovo nome e riprova.", "ErrorMessageEmailInUse": "L'indirizzo email \u00e8 gi\u00e0 usato.Per favore inserisci un nuovo indirizzo email e riprova, o usa la funzione password dimenticata.", diff --git a/dashboard-ui/strings/javascript/javascript.json b/dashboard-ui/strings/javascript/javascript.json index 39fed2042c..b6d9d9170d 100644 --- a/dashboard-ui/strings/javascript/javascript.json +++ b/dashboard-ui/strings/javascript/javascript.json @@ -717,6 +717,7 @@ "MessageRefreshQueued": "Refresh queued", "TabDevices": "Devices", "TabExtras": "Extras", + "HeaderUploadImage": "Upload Image", "DeviceLastUsedByUserName": "Last used by {0}", "HeaderDeleteDevice": "Delete Device", "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.", @@ -815,6 +816,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/kk.json b/dashboard-ui/strings/javascript/kk.json index cb5365cf51..1782cb53cd 100644 --- a/dashboard-ui/strings/javascript/kk.json +++ b/dashboard-ui/strings/javascript/kk.json @@ -801,10 +801,11 @@ "MessageIfYouBlockedVoice": "\u0415\u0433\u0435\u0440 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u0493\u0430 \u0434\u0430\u0443\u044b\u0441\u0442\u044b\u049b \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u0430\u043d \u0431\u0430\u0441 \u0442\u0430\u0440\u0442\u0441\u0430\u04a3\u044b\u0437, \u049b\u0430\u0439\u0442\u0430 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0435\u043d\u0443\u0456\u04a3\u0456\u0437\u0434\u0435\u043d \u0430\u043b\u0434\u044b\u043d\u0430\u043d \u049b\u0430\u0439\u0442\u0430 \u0442\u0435\u04a3\u0448\u0435\u0443\u0456\u04a3\u0456\u0437 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b.", "MessageNoItemsFound": "\u0415\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b.", "ButtonManageServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0431\u0430\u0441\u049b\u0430\u0440\u0443", - "ButtonEditSubtitles": "Edit subtitles", + "ButtonEditSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u04e9\u04a3\u0434\u0435\u0443", "ButtonPreferences": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440", "ButtonViewArtist": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043d\u044b \u049b\u0430\u0440\u0430\u0443", "ButtonViewAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u044b \u049b\u0430\u0440\u0430\u0443", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u0431\u0435\u043d \u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u0440\u0430\u0441\u0442\u0430\u0443 \u04e9\u0440\u0456\u0441\u0442\u0435\u0440\u0456 \u0441\u04d9\u0439\u043a\u0435\u0441 \u0431\u043e\u043b\u0443\u044b \u049b\u0430\u0436\u0435\u0442.", "ErrorMessageUsernameInUse": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u04d9\u043b\u0434\u0435\u049b\u0430\u0448\u0430\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0443\u0434\u0430. \u0416\u0430\u04a3\u0430 \u0430\u0442\u044b\u043d \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437 \u0434\u0430 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", "ErrorMessageEmailInUse": "\u042d-\u043f\u043e\u0448\u0442\u0430 \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u044b \u04d9\u043b\u0434\u0435\u049b\u0430\u0448\u0430\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0443\u0434\u0430. \u0416\u0430\u04a3\u0430 \u042d-\u043f\u043e\u0448\u0442\u0430 \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u044b\u043d \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437 \u0434\u0430 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437, \u043d\u0435\u043c\u0435\u0441\u0435 \u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0435\u0441\u043a\u0435 \u0441\u0430\u043b\u0443 \u049b\u04b1\u0440\u0430\u043c\u0434\u0430\u0441\u044b\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u04a3\u044b\u0437.", diff --git a/dashboard-ui/strings/javascript/ms.json b/dashboard-ui/strings/javascript/ms.json index 2479d08244..db227b38d3 100644 --- a/dashboard-ui/strings/javascript/ms.json +++ b/dashboard-ui/strings/javascript/ms.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/nb.json b/dashboard-ui/strings/javascript/nb.json index 835751c7a3..ae2e4041a7 100644 --- a/dashboard-ui/strings/javascript/nb.json +++ b/dashboard-ui/strings/javascript/nb.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/nl.json b/dashboard-ui/strings/javascript/nl.json index a19e8d80e9..3ec72cff4c 100644 --- a/dashboard-ui/strings/javascript/nl.json +++ b/dashboard-ui/strings/javascript/nl.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Voorkeuren", "ButtonViewArtist": "Bekijk artiest", "ButtonViewAlbum": "Bekijk album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "Het wachtwoord en de wachtwoordbevestiging moeten overeenkomen.", "ErrorMessageUsernameInUse": "Deze gebruikersnaam is al in gebruik. Kies een andere en probeer het opnieuw.", "ErrorMessageEmailInUse": "Dit emailadres is al in gebruik. Kies een ander en probeer het opnieuw, of gebruik de vergeten wachtwoord functie.", diff --git a/dashboard-ui/strings/javascript/pl.json b/dashboard-ui/strings/javascript/pl.json index 8fe35209ee..23ca42f684 100644 --- a/dashboard-ui/strings/javascript/pl.json +++ b/dashboard-ui/strings/javascript/pl.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/pt-BR.json b/dashboard-ui/strings/javascript/pt-BR.json index 9494aa5709..087f1df46e 100644 --- a/dashboard-ui/strings/javascript/pt-BR.json +++ b/dashboard-ui/strings/javascript/pt-BR.json @@ -801,10 +801,11 @@ "MessageIfYouBlockedVoice": "Se voc\u00ea negou o acesso de voz \u00e0 app, voc\u00ea necessitar\u00e1 reconfigurar antes de tentar novamente.", "MessageNoItemsFound": "Nenhum item encontrado.", "ButtonManageServer": "Gerenciar Servidor", - "ButtonEditSubtitles": "Edit subtitles", + "ButtonEditSubtitles": "Editar legendas", "ButtonPreferences": "Prefer\u00eancias", "ButtonViewArtist": "Ver artista", "ButtonViewAlbum": "Ver \u00e1lbum", + "ButtonEditImages": "Editar imagens", "ErrorMessagePasswordNotMatchConfirm": "A senha e a confirma\u00e7\u00e3o de senha devem ser iguais.", "ErrorMessageUsernameInUse": "O nome do usu\u00e1rio j\u00e1 est\u00e1 em uso. Por favor, escolha um novo nome e tente novamente.", "ErrorMessageEmailInUse": "O endere\u00e7o de email j\u00e1 est\u00e1 em uso. Por favor, digite um novo endere\u00e7o de email e tente novamente ou use o recurso de senha esquecida.", diff --git a/dashboard-ui/strings/javascript/pt-PT.json b/dashboard-ui/strings/javascript/pt-PT.json index fdb6bd3c2f..28f480c40f 100644 --- a/dashboard-ui/strings/javascript/pt-PT.json +++ b/dashboard-ui/strings/javascript/pt-PT.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/ro.json b/dashboard-ui/strings/javascript/ro.json index aefb4b86f7..c03d8736b4 100644 --- a/dashboard-ui/strings/javascript/ro.json +++ b/dashboard-ui/strings/javascript/ro.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/ru.json b/dashboard-ui/strings/javascript/ru.json index 0faa45bb37..850209b86f 100644 --- a/dashboard-ui/strings/javascript/ru.json +++ b/dashboard-ui/strings/javascript/ru.json @@ -39,7 +39,7 @@ "TextEnjoyBonusFeatures": "\u041f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0438\u0442\u0435 \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b", "TitleLiveTV": "\u042d\u0444\u0438\u0440", "ButtonCancelSyncJob": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e", - "ButtonSelectView": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0438\u0434", + "ButtonSelectView": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435", "TitleSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", "OptionAutomatic": "\u0410\u0432\u0442\u043e", "HeaderSelectDate": "\u0412\u044b\u0431\u043e\u0440 \u0434\u0430\u0442\u044b", @@ -92,14 +92,14 @@ "SyncJobStatusCompletedWithError": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438", "SyncJobItemStatusReadyToTransfer": "\u0413\u043e\u0442\u043e\u0432\u043e \u043a \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0443", "LabelCollection": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f", - "HeaderAddToCollection": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", + "HeaderAddToCollection": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e", "NewCollectionNameExample": "\u041f\u0440\u0438\u043c\u0435\u0440: \u0417\u0432\u0451\u0437\u0434\u043d\u044b\u0435 \u0432\u043e\u0439\u043d\u044b (\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f)", "OptionSearchForInternetMetadata": "\u0418\u0441\u043a\u0430\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435", "LabelSelectCollection": "\u0412\u044b\u0431\u043e\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438:", "HeaderDevices": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", "ButtonScheduledTasks": "\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a...", "MessageItemsAdded": "\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b", - "ButtonAddToCollection": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", + "ButtonAddToCollection": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e", "HeaderSelectCertificatePath": "\u0412\u044b\u0431\u043e\u0440 \u043f\u0443\u0442\u0438 \u043a \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0443", "ConfirmMessageScheduledTaskButton": "\u042d\u0442\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u0430\u043a \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u0442\u0441\u044e\u0434\u0430. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0441\u043c.:", "HeaderSupporterBenefit": "\u0427\u043b\u0435\u043d\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u0440\u0435\u043c\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0438 \u0442.\u0434. {0}\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435{1}.", @@ -151,8 +151,8 @@ "ButtonPlay": "\u0412\u043e\u0441\u043f\u0440.", "ButtonEdit": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c", "ButtonQueue": "\u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u044c...", - "ButtonPlayTrailer": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0442\u0440\u0435\u0439\u043b\u0435\u0440", - "ButtonPlaylist": "\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440-\u0438\u044f...", + "ButtonPlayTrailer": "\u0412\u043e\u0441\u043f\u0440. \u0442\u0440\u0435\u0439\u043b\u0435\u0440", + "ButtonPlaylist": "\u041f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442...", "ButtonPreviousTrack": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0434\u043e\u0440\u043e\u0436\u043a\u0430...", "LabelEnabled": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e", "LabelDisabled": "\u0412\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e", @@ -425,17 +425,17 @@ "ButtonNew": "\u0421\u043e\u0437\u0434\u0430\u0442\u044c", "MessageInternetExplorerWebm": "\u0414\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 Internet Explorer, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f WebM.", "HeaderVideoError": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u0438\u0434\u0435\u043e", - "ButtonAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f", - "HeaderAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f", + "ButtonAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442", + "HeaderAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442", "LabelName": "\u0418\u043c\u044f (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435):", "ButtonSubmit": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c", - "LabelSelectPlaylist": "\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440-\u0438\u044f:", - "OptionNewPlaylist": "\u041d\u043e\u0432\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a...", + "LabelSelectPlaylist": "\u041f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442:", + "OptionNewPlaylist": "\u041d\u043e\u0432\u044b\u0439 \u043f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442...", "MessageAddedToPlaylistSuccess": "\u041e\u041a", "ButtonView": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c", "ButtonViewSeriesRecording": "\u0421\u043c. \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u0435\u0440\u0438\u0430\u043b\u0430", "ValueOriginalAirDate": "\u0414\u0430\u0442\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u044d\u0444\u0438\u0440\u0430: {0}", - "ButtonRemoveFromPlaylist": "\u0418\u0437\u044a\u044f\u0442\u044c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f", + "ButtonRemoveFromPlaylist": "\u0418\u0437\u044a\u044f\u0442\u044c \u0438\u0437 \u043f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u0430", "HeaderSpecials": "\u0421\u043f\u0435\u0446.", "HeaderTrailers": "\u0422\u0440\u0435\u0439\u043b.", "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e", @@ -683,7 +683,7 @@ "WebClientTourMouseOver": "\u0417\u0430\u0434\u0435\u0440\u0436\u0438\u0442\u0435 \u043a\u0443\u0440\u0441\u043e\u0440 \u043c\u044b\u0448\u0438 \u043d\u0430\u0434 \u043b\u044e\u0431\u044b\u043c \u043f\u043e\u0441\u0442\u0435\u0440\u043e\u043c \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u0430\u0436\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438", "WebClientTourTapHold": "\u041a\u043e\u0441\u043d\u0438\u0442\u0435\u0441\u044c \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435 \u0438\u043b\u0438 \u0449\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u0441\u0442\u0435\u0440 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e", "WebClientTourMetadataManager": "\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u041f\u0440\u0430\u0432\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445", - "WebClientTourPlaylists": "\u0411\u0435\u0437 \u0443\u0441\u0438\u043b\u0438\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u0430\u0432\u0442\u043e\u043c\u0438\u043a\u0441\u044b, \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435 \u0438\u0445 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435", + "WebClientTourPlaylists": "\u0411\u0435\u0437 \u0443\u0441\u0438\u043b\u0438\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u044b (\u0441\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f) \u0438 \u0430\u0432\u0442\u043e\u043c\u0438\u043a\u0441\u044b, \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435 \u0438\u0445 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435", "WebClientTourCollections": "\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0444\u0438\u043b\u044c\u043c\u043e\u0432\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u044b \u0432\u043c\u0435\u0441\u0442\u0435", "WebClientTourUserPreferences1": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0430\u0448\u0438\u0445 Emby-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.", "WebClientTourUserPreferences2": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0430\u0443\u0434\u0438\u043e \u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432 \u0441\u0432\u043e\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u0435\u0434\u0438\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e Emby-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f", @@ -801,10 +801,11 @@ "MessageIfYouBlockedVoice": "\u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e, \u043f\u0435\u0440\u0435\u0434 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u043e\u0439 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430.", "MessageNoItemsFound": "\u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e.", "ButtonManageServer": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c...", - "ButtonEditSubtitles": "Edit subtitles", + "ButtonEditSubtitles": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b", "ButtonPreferences": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", "ButtonViewArtist": "\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f", "ButtonViewAlbum": "\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0430\u043b\u044c\u0431\u043e\u043c", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "\u041f\u043e\u043b\u044f \u041f\u0430\u0440\u043e\u043b\u044c \u0438 \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c.", "ErrorMessageUsernameInUse": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u041f\u043e\u0434\u0431\u0435\u0440\u0438\u0442\u0435 \u043d\u043e\u0432\u043e\u0435 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443.", "ErrorMessageEmailInUse": "\u0410\u0434\u0440\u0435\u0441 \u042d-\u043f\u043e\u0447\u0442\u044b \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u041f\u043e\u0434\u0431\u0435\u0440\u0438\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u042d-\u043f\u043e\u0447\u0442\u044b \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443, \u0438\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u041d\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c.", diff --git a/dashboard-ui/strings/javascript/sl-SI.json b/dashboard-ui/strings/javascript/sl-SI.json index 5a8a36f828..c95fd61a1b 100644 --- a/dashboard-ui/strings/javascript/sl-SI.json +++ b/dashboard-ui/strings/javascript/sl-SI.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/sv.json b/dashboard-ui/strings/javascript/sv.json index 2d4f05c22f..6355a88a62 100644 --- a/dashboard-ui/strings/javascript/sv.json +++ b/dashboard-ui/strings/javascript/sv.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/tr.json b/dashboard-ui/strings/javascript/tr.json index 7d85581c9b..1943943a23 100644 --- a/dashboard-ui/strings/javascript/tr.json +++ b/dashboard-ui/strings/javascript/tr.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/uk.json b/dashboard-ui/strings/javascript/uk.json index 92e3cca6f4..9a0509cf4d 100644 --- a/dashboard-ui/strings/javascript/uk.json +++ b/dashboard-ui/strings/javascript/uk.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/vi.json b/dashboard-ui/strings/javascript/vi.json index 8762c4be38..b530372063 100644 --- a/dashboard-ui/strings/javascript/vi.json +++ b/dashboard-ui/strings/javascript/vi.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/zh-CN.json b/dashboard-ui/strings/javascript/zh-CN.json index f929f4ac4e..2e90a123cc 100644 --- a/dashboard-ui/strings/javascript/zh-CN.json +++ b/dashboard-ui/strings/javascript/zh-CN.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", diff --git a/dashboard-ui/strings/javascript/zh-TW.json b/dashboard-ui/strings/javascript/zh-TW.json index de1c6aa6d8..805d3bf07d 100644 --- a/dashboard-ui/strings/javascript/zh-TW.json +++ b/dashboard-ui/strings/javascript/zh-TW.json @@ -805,6 +805,7 @@ "ButtonPreferences": "Preferences", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", + "ButtonEditImages": "Edit images", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.",