From cd1732677db7ab75b9228e030c017f73581ef78c Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 26 Mar 2020 11:15:44 +0300 Subject: [PATCH 01/16] Add browser lazy-sync --- gulpfile.js | 143 +++++++++++++++++++++++++++++++++++++++------------ package.json | 2 + yarn.lock | 72 ++++++++++++++++++++++++-- 3 files changed, 182 insertions(+), 35 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index f42376e24..0eb559354 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -18,6 +18,8 @@ const stream = require('webpack-stream'); const inject = require('gulp-inject'); const postcss = require('gulp-postcss'); const sass = require('gulp-sass'); +const gulpif = require('gulp-if'); +const lazypipe = require('lazypipe'); sass.compiler = require('node-sass'); @@ -28,6 +30,30 @@ if (mode.production()) { config = require('./webpack.dev.js'); } +const options = { + javascript: { + query: ['src/**/*.js', '!src/bundle.js', '!src/standalone.js', '!src/scripts/apploader.js'] + }, + apploader: { + query: ['src/standalone.js', 'src/scripts/apploader.js'] + }, + css: { + query: ['src/**/*.css', 'src/**/*.scss'] + }, + html: { + query: ['src/**/*.html', '!src/index.html'] + }, + images: { + query: ['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'] + }, + copy: { + query: ['src/**/*.json', 'src/**/*.ico'] + }, + injectBundle: { + query: 'src/index.html' + } +}; + function serve() { browserSync.init({ server: { @@ -36,40 +62,89 @@ function serve() { port: 8080 }); - watch(['src/**/*.js', '!src/bundle.js'], series(javascript, standalone)); - watch('src/bundle.js', webpack); - watch('src/**/*.css', css); - watch(['src/**/*.html', '!src/index.html'], html); - watch(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], images); - watch(['src/**/*.json', 'src/**/*.ico'], copy); - watch('src/index.html', injectBundle); -} + let events = ['add', 'change']; -function standalone() { - return src(['src/standalone.js', 'src/scripts/apploader.js'], { base: './src/' }) - .pipe(concat('scripts/apploader.js')) - .pipe(dest('dist/')) - .pipe(browserSync.stream()); + watch(options.javascript.query).on('all', function (event, path) { + if (events.includes(event)) { + javascript(path); + } + }); + + watch(options.apploader.query, apploader(true)); + + watch('src/bundle.js', webpack); + + watch(options.css.query).on('all', function (event, path) { + if (events.includes(event)) { + css(path); + } + }); + + watch(options.html.query).on('all', function (event, path) { + if (events.includes(event)) { + html(path); + } + }); + + watch(options.images.query).on('all', function (event, path) { + if (events.includes(event)) { + images(path); + } + }); + + watch(options.copy.query).on('all', function (event, path) { + if (events.includes(event)) { + copy(path); + } + }); + + watch(options.injectBundle.query, injectBundle); } function clean() { return del(['dist/']); } -function javascript() { - return src(['src/**/*.js', '!src/bundle.js'], { base: './src/' }) - .pipe(mode.development(sourcemaps.init({ loadMaps: true }))) - .pipe(babel({ +let pipelineJavascript = lazypipe() + .pipe(function () { + return mode.development(sourcemaps.init({ loadMaps: true })); + }) + .pipe(function () { + return babel({ presets: [ ['@babel/preset-env'] ] - })) - .pipe(terser({ + }); + }) + .pipe(function () { + return terser({ keep_fnames: true, mangle: false - })) - .pipe(mode.development(sourcemaps.write('.'))) + }); + }) + .pipe(function () { + return mode.development(sourcemaps.write('.')); + }); + +function javascript(query) { + return src(typeof query !== 'function' ? query : options.javascript.query, { base: './src/' }) + .pipe(pipelineJavascript()) .pipe(dest('dist/')) + .pipe(browserSync.stream()); +} + +function apploader(standalone) { + function task() { + return src(options.apploader.query, { base: './src/' }) + .pipe(gulpif(standalone, concat('scripts/apploader.js'))) + .pipe(pipelineJavascript()) + .pipe(dest('dist/')) + .pipe(browserSync.stream()); + }; + + task.displayName = 'apploader'; + + return task; } function webpack() { @@ -78,8 +153,8 @@ function webpack() { .pipe(browserSync.stream()); } -function css() { - return src(['src/**/*.css', 'src/**/*.scss'], { base: './src/' }) +function css(query) { + return src(typeof query !== 'function' ? query : options.css.query, { base: './src/' }) .pipe(mode.development(sourcemaps.init({ loadMaps: true }))) .pipe(sass().on('error', sass.logError)) .pipe(postcss()) @@ -88,28 +163,28 @@ function css() { .pipe(browserSync.stream()); } -function html() { - return src(['src/**/*.html', '!src/index.html'], { base: './src/' }) +function html(query) { + return src(typeof query !== 'function' ? query : options.html.query, { base: './src/' }) .pipe(mode.production(htmlmin({ collapseWhitespace: true }))) .pipe(dest('dist/')) .pipe(browserSync.stream()); } -function images() { - return src(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], { base: './src/' }) +function images(query) { + return src(typeof query !== 'function' ? query : options.images.query, { base: './src/' }) .pipe(mode.production(imagemin())) .pipe(dest('dist/')) .pipe(browserSync.stream()); } -function copy() { - return src(['src/**/*.json', 'src/**/*.ico'], { base: './src/' }) +function copy(query) { + return src(typeof query !== 'function' ? query : options.copy.query, { base: './src/' }) .pipe(dest('dist/')) .pipe(browserSync.stream()); } function injectBundle() { - return src('src/index.html', { base: './src/' }) + return src(options.injectBundle.query, { base: './src/' }) .pipe(inject( src(['src/scripts/apploader.js'], { read: false }, { base: './src/' }), { relative: true } )) @@ -117,6 +192,10 @@ function injectBundle() { .pipe(browserSync.stream()); } -exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle); -exports.standalone = series(exports.default, standalone); +function build(standalone) { + return series(clean, parallel(javascript, apploader(standalone), webpack, css, html, images, copy), injectBundle); +} + +exports.default = build(false); +exports.standalone = build(true); exports.serve = series(exports.standalone, serve); diff --git a/package.json b/package.json index 2de78b821..58d288b37 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "gulp-cli": "^2.2.0", "gulp-concat": "^2.6.1", "gulp-htmlmin": "^5.0.1", + "gulp-if": "^3.0.0", "gulp-imagemin": "^7.1.0", "gulp-inject": "^5.0.5", "gulp-mode": "^1.0.2", @@ -32,6 +33,7 @@ "gulp-sourcemaps": "^2.6.5", "gulp-terser": "^1.2.0", "html-webpack-plugin": "^3.2.0", + "lazypipe": "^1.0.2", "node-sass": "^4.13.1", "postcss-loader": "^3.0.0", "postcss-preset-env": "^6.7.0", diff --git a/yarn.lock b/yarn.lock index 8b7697cef..5641ad41a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3517,6 +3517,11 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -3527,6 +3532,16 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +duplexify@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61" + integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA== + dependencies: + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.0" + each-props@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" @@ -3610,7 +3625,7 @@ encodeurl@~1.0.1, encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -4524,6 +4539,11 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +fork-stream@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/fork-stream/-/fork-stream-0.0.4.tgz#db849fce77f6708a5f8f386ae533a0907b54ae70" + integrity sha1-24Sfznf2cIpfjzhq5TOgkHtUrnA= + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -5064,6 +5084,15 @@ gulp-htmlmin@^5.0.1: plugin-error "^1.0.1" through2 "^2.0.3" +gulp-if@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gulp-if/-/gulp-if-3.0.0.tgz#6c3e7edc8bafadc34f2ebecb314bf43324ba1e40" + integrity sha512-fCUEngzNiEZEK2YuPm+sdMpO6ukb8+/qzbGfJBXyNOXz85bCG7yBI+pPSl+N90d7gnLvMsarthsAImx0qy7BAw== + dependencies: + gulp-match "^1.1.0" + ternary-stream "^3.0.0" + through2 "^3.0.1" + gulp-imagemin@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/gulp-imagemin/-/gulp-imagemin-7.1.0.tgz#d1810a908fb64b4fbf15a750d303d988443e68cf" @@ -5096,6 +5125,13 @@ gulp-inject@^5.0.5: stream-to-array "^2.3.0" through2 "^3.0.1" +gulp-match@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/gulp-match/-/gulp-match-1.1.0.tgz#552b7080fc006ee752c90563f9fec9d61aafdf4f" + integrity sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ== + dependencies: + minimatch "^3.0.3" + gulp-mode@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/gulp-mode/-/gulp-mode-1.0.2.tgz#33c76033491fb71f47f1ebf8c67561ad9da7dfc9" @@ -6480,6 +6516,13 @@ last-run@^1.1.0: default-resolution "^2.0.0" es6-weak-map "^2.0.1" +lazypipe@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lazypipe/-/lazypipe-1.0.2.tgz#b66f64ed7fd8b04869f1f1bcb795dbbaa80e418c" + integrity sha512-CrU+NYdFHW8ElaeXCWz5IbmetiYVYq1fOCmpdAeZ8L+khbv1e7EnshyjlKqkO+pJbVPrsJQnHbVxEiLujG6qhQ== + dependencies: + stream-combiner "*" + lazystream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" @@ -7119,6 +7162,11 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + merge2@^1.2.3, merge2@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" @@ -7216,7 +7264,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: +minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -10525,6 +10573,14 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" +stream-combiner@*: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" + integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg= + dependencies: + duplexer "~0.1.1" + through "~2.3.4" + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -11062,6 +11118,16 @@ tempfile@^2.0.0: temp-dir "^1.0.0" uuid "^3.0.1" +ternary-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-3.0.0.tgz#7951930ea9e823924d956f03d516151a2d516253" + integrity sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ== + dependencies: + duplexify "^4.1.1" + fork-stream "^0.0.4" + merge-stream "^2.0.0" + through2 "^3.0.1" + terser-webpack-plugin@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" @@ -11129,7 +11195,7 @@ through2@^3.0.1: dependencies: readable-stream "2 || 3" -through@^2.3.6, through@^2.3.8: +through@^2.3.6, through@^2.3.8, through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= From 9f13e2a36c8e0fe18ec97e042615bd5f685736ca Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 26 Mar 2020 17:22:57 +0300 Subject: [PATCH 02/16] Enable subtitle settings on Tizen --- src/components/apphost.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/apphost.js b/src/components/apphost.js index f3e89ed29..547080384 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -280,11 +280,11 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet //features.push("multiserver"); features.push("screensaver"); - if (!browser.orsay && !browser.tizen && !browser.msie && (browser.firefox || browser.ps4 || browser.edge || supportsCue())) { + if (!browser.orsay && !browser.msie && (browser.firefox || browser.ps4 || browser.edge || supportsCue())) { features.push("subtitleappearancesettings"); } - if (!browser.orsay && !browser.tizen) { + if (!browser.orsay) { features.push("subtitleburnsettings"); } From fe85c5f96c44a01e03bae7de42ebed251cbf072a Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 26 Mar 2020 20:31:46 +0300 Subject: [PATCH 03/16] Enable subtitle sync slider focus and keyboard dragging --- src/components/subtitlesync/subtitlesync.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index 07ce2cb7e..23d0d07a0 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -1,4 +1,4 @@ -define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitlesync'], function (playbackManager, template, css) { +define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', 'css!./subtitlesync'], function (playbackManager, layoutManager, template, css) { "use strict"; var player; @@ -10,6 +10,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles function init(instance) { var parent = document.createElement('div'); + document.body.appendChild(parent); parent.innerHTML = template; subtitleSyncSlider = parent.querySelector(".subtitleSyncSlider"); @@ -17,6 +18,14 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles subtitleSyncCloseButton = parent.querySelector(".subtitleSync-closeButton"); subtitleSyncContainer = parent.querySelector(".subtitleSyncContainer"); + if (layoutManager.tv) { + subtitleSyncSlider.classList.add("focusable"); + // HACK: Delay to give time for registered element attach (Firefox) + setTimeout(function () { + subtitleSyncSlider.enableKeyboardDragging(); + }, 0); + } + subtitleSyncContainer.classList.add("hide"); subtitleSyncTextField.updateOffset = function(offset) { @@ -87,8 +96,6 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles SubtitleSync.prototype.toggle("forceToHide"); }); - document.body.appendChild(parent); - instance.element = parent; } From d60bec3834e11671e0a1ba9694cabfa3dbdf6fb2 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 15 Mar 2020 14:15:48 +0100 Subject: [PATCH 04/16] Improve details page informatios and selects --- src/assets/css/librarybrowser.css | 41 ++++++++++++++++++++++++ src/controllers/itemdetailpage.js | 31 ++++++++++-------- src/elements/emby-select/emby-select.css | 2 +- src/elements/emby-select/emby-select.js | 2 +- src/itemdetails.html | 26 ++++++++++----- src/strings/bg-bg.json | 6 ++-- src/strings/cs.json | 6 ++-- src/strings/da.json | 6 ++-- src/strings/de.json | 6 ++-- src/strings/el.json | 6 ++-- src/strings/en-gb.json | 6 ++-- src/strings/en-us.json | 12 +++---- src/strings/es-ar.json | 6 ++-- src/strings/es-mx.json | 6 ++-- src/strings/es.json | 8 ++--- src/strings/fi.json | 3 +- src/strings/fr.json | 8 ++--- src/strings/he.json | 8 ++--- src/strings/hu.json | 6 ++-- src/strings/it.json | 6 ++-- src/strings/ja.json | 6 ++-- src/strings/kk.json | 6 ++-- src/strings/ko.json | 6 ++-- src/strings/lt-lt.json | 6 ++-- src/strings/lv.json | 6 ++-- src/strings/nb.json | 6 ++-- src/strings/nl.json | 6 ++-- src/strings/pl.json | 6 ++-- src/strings/pt-br.json | 6 ++-- src/strings/pt-pt.json | 6 ++-- src/strings/pt.json | 6 ++-- src/strings/ro.json | 6 ++-- src/strings/ru.json | 6 ++-- src/strings/sk.json | 6 ++-- src/strings/sl-si.json | 6 ++-- src/strings/sv.json | 6 ++-- src/strings/tr.json | 8 ++--- src/strings/zh-cn.json | 6 ++-- src/strings/zh-tw.json | 6 ++-- 39 files changed, 152 insertions(+), 165 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 13265e40d..b599ddde3 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -1123,3 +1123,44 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { .layout-mobile #myPreferencesMenuPage { padding-top: 3.75em; } + +.itemDetailsGroup { + margin-bottom: 1.5em; +} + +.trackSelections { + max-width: 44em; +} + +.detailsGroupItem, +.trackSelections .selectContainer { + display: flex; + max-width: 44em; + margin: 0 0 0.5em !important; +} + +.trackSelections .selectContainer { + margin: 0 0 0.15em !important; +} + +.detailsGroupItem .label, +.trackSelections .selectContainer .selectLabel { + flex-grow: 0; + flex-shrink: 0; + flex-basis: 6.25em; + margin: 0 0.6em 0 0; +} + +.trackSelections .selectContainer .selectLabel { + margin: 0 0.2em 0 0; +} + +.trackSelections .selectContainer .detailTrackSelect { + font-size: inherit; + padding: 0; +} + +.trackSelections .selectContainer .selectArrowContainer .selectArrow { + margin-top: 0; + font-size: 1.4em; +} diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 82569835c..3d74ab432 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -718,11 +718,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function renderLinks(linksElem, item) { var html = []; - if (item.DateCreated && itemHelper.enableDateAddedDisplay(item)) { - var dateCreated = datetime.parseISO8601Date(item.DateCreated); - html.push(globalize.translate("AddedOnValue", datetime.toLocaleDateString(dateCreated) + " " + datetime.getDisplayTime(dateCreated))); - } - var links = []; if (!layoutManager.tv && item.HomePageUrl) { @@ -736,7 +731,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } if (links.length) { - html.push(globalize.translate("LinksValue", links.join(", "))); + html.push(links.join(", ")); } linksElem.innerHTML = html.join(", "); @@ -1032,13 +1027,17 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti context: context }) + '">' + p.Name + ""; }).join(", "); - var elem = page.querySelector(".genres"); - elem.innerHTML = globalize.translate(genres.length > 1 ? "GenresValue" : "GenreValue", html); + var genresLabel = page.querySelector(".genresLabel"); + genresLabel.innerHTML = globalize.translate(genres.length > 1 ? "Genres" : "Genre"); + var genresValue = page.querySelector(".genres"); + genresValue.innerHTML = html; + + var genresGroup = page.querySelector(".genresGroup"); if (genres.length) { - elem.classList.remove("hide"); + genresGroup.classList.remove("hide"); } else { - elem.classList.add("hide"); + genresGroup.classList.add("hide"); } } @@ -1056,13 +1055,17 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti context: context }) + '">' + p.Name + ""; }).join(", "); - var elem = page.querySelector(".directors"); - elem.innerHTML = globalize.translate(directors.length > 1 ? "DirectorsValue" : "DirectorValue", html); + var directorsLabel = page.querySelector(".directorsLabel"); + directorsLabel.innerHTML = globalize.translate(directors.length > 1 ? "Directors" : "Director"); + var directorsValue = page.querySelector(".directors"); + directorsValue.innerHTML = html; + + var directorsGroup = page.querySelector(".directorsGroup"); if (directors.length) { - elem.classList.remove("hide"); + directorsGroup.classList.remove("hide"); } else { - elem.classList.add("hide"); + directorsGroup.classList.add("hide"); } } diff --git a/src/elements/emby-select/emby-select.css b/src/elements/emby-select/emby-select.css index 9f07ca3f6..32aec69c4 100644 --- a/src/elements/emby-select/emby-select.css +++ b/src/elements/emby-select/emby-select.css @@ -109,7 +109,7 @@ } .selectArrow { - margin-top: 0.35em; + margin-top: 1.2em; font-size: 1.7em; } diff --git a/src/elements/emby-select/emby-select.js b/src/elements/emby-select/emby-select.js index 02818c663..c772c0f96 100644 --- a/src/elements/emby-select/emby-select.js +++ b/src/elements/emby-select/emby-select.js @@ -144,7 +144,7 @@ define(['layoutManager', 'browser', 'actionsheet', 'css!./emby-select', 'registe this.parentNode.insertBefore(label, this); if (this.classList.contains('emby-select-withcolor')) { - this.parentNode.insertAdjacentHTML('beforeend', '
0
'); + this.parentNode.insertAdjacentHTML('beforeend', '
0
'); } }; diff --git a/src/itemdetails.html b/src/itemdetails.html index 672d0b65a..3a1c2748a 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -111,22 +111,32 @@
-
+
-
-
-
-
+
+
+
+
+
+ +
+
+
+
+
+ + +
-
+
-
+
-
+
diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index c2b0bb692..ca95412f3 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -101,8 +101,7 @@ "Desktop": "Работен плот", "DeviceAccessHelp": "Това се отнася само за устройства, които могат да бъдат различени и няма да попречи на достъп от мрежов четец. Филтрирането на потребителски устройства ще предотврати използването им докато не бъдат одобрени тук.", "Director": "Режисьор", - "DirectorValue": "Режисьор: {0}", - "DirectorsValue": "Режисьори: {0}", + "Directors": "Режисьори", "Disc": "Диск", "Dislike": "Нехаресване", "Display": "Показване", @@ -137,9 +136,8 @@ "FormatValue": "Формат: {0}", "Friday": "Петък", "Fullscreen": "Цял екран", - "GenreValue": "Жанр: {0}", + "Genre": "Жанр", "Genres": "Жанрове", - "GenresValue": "Жанрове: {0}", "GroupVersions": "Групиране на версиите", "GuestStar": "Гостуваща звезда", "Guide": "Справочник", diff --git a/src/strings/cs.json b/src/strings/cs.json index ac3f8dd41..810be262b 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1276,8 +1276,7 @@ "DetectingDevices": "Hledání zařízení", "DirectPlayError": "Chyba přímého přehrávání", "DirectStreamHelp2": "Přímé streamování souboru používá velmi malý výkon bez ztráty kvality videa.", - "DirectorValue": "Režisér: {0}", - "DirectorsValue": "Režiséři: {0}", + "Directors": "Režiséři", "Disabled": "Vypnuto", "DisplayInMyMedia": "Zobrazit na domovské obrazovce", "DisplayInOtherHomeScreenSections": "Zobrazení v sekcích domovské obrazovky, jako jsou nejnovější média, a pokračování ve sledování", @@ -1297,8 +1296,7 @@ "Filters": "Filtry", "Folders": "Složky", "General": "Hlavní", - "GenreValue": "Žánr: {0}", - "GenresValue": "Žánry: {0}", + "Genre": "Žánr", "GroupBySeries": "Seskupit podle série", "HandledByProxy": "Zpracováno reverzním proxy", "HeaderAddLocalUser": "Přidat místního uživatele", diff --git a/src/strings/da.json b/src/strings/da.json index 9ddba4c8f..74d7d21b8 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -1166,8 +1166,7 @@ "DirectStreamHelp1": "Medie filen er kompatibel med enheden i forhold til opløsning og medie type (H.264,AC3, etc.), men er i en ikke kompatibel fil container (mkv, avi, wmv, etc). Videoen vil blive genpakket live før den streames til enheden.", "DirectStreamHelp2": "Direkte Streaming af en fil bruger meget lidt processor kraft uden nogen tab af video kvalitet.", "DirectStreaming": "Direkte streaming", - "DirectorValue": "Instruktør: {0}", - "DirectorsValue": "Instruktører: {0}", + "Directors": "Instruktører", "Disc": "Disk", "Dislike": "Kan ikke lide", "Display": "Visning", @@ -1207,8 +1206,7 @@ "Features": "Funktioner", "Filters": "Filtre", "FormatValue": "Format: {0}", - "GenreValue": "Genre: {0}", - "GenresValue": "Genrer: {0}", + "Genre": "Genre", "GroupBySeries": "Gruppér efter serie", "Guide": "Vejledning", "GuideProviderLogin": "Log Ind", diff --git a/src/strings/de.json b/src/strings/de.json index 5a449d8e5..861c57ef4 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -175,8 +175,7 @@ "DirectStreamHelp2": "Direktes Streaming von Dateien benötigt sehr wenig Rechenleistung ohne Verlust der Videoqualität.", "DirectStreaming": "Direktes Streaming", "Director": "Regisseur", - "DirectorValue": "Regisseur: {0}", - "DirectorsValue": "Regisseure: {0}", + "Directors": "Regisseure", "Disabled": "Abgeschaltet", "Disc": "Disk", "Disconnect": "Verbindung trennen", @@ -1293,9 +1292,8 @@ "Extras": "Extras", "FolderTypeTvShows": "TV Serien", "FormatValue": "Format: {0}", - "GenreValue": "Genre: {0}", + "Genre": "Genre", "Genres": "Genres", - "GenresValue": "Genres: {0}", "HeaderAdmin": "Admin", "HeaderApp": "App", "HeaderGenres": "Genres", diff --git a/src/strings/el.json b/src/strings/el.json index fb0247942..8e0b77ac1 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -166,8 +166,7 @@ "DirectStreamHelp2": "Η άμεση ροή ενός αρχείου χρησιμοποιεί ελάχιστη ισχύ επεξεργασίας χωρίς απώλεια της ποιότητας του βίντεο.", "DirectStreaming": "Απευθείας Αναμετάδοση", "Director": "Σκηνοθέτης", - "DirectorValue": "Σκηνοθέτης: {0}", - "DirectorsValue": "Σκηνοθέτες: {0}", + "Directors": "Σκηνοθέτες", "Disabled": "Απενεργοποιημένο", "Disc": "Δίσκος", "Disconnect": "Αποσύνδεση", @@ -233,9 +232,8 @@ "Friday": "Παρασκευή", "Fullscreen": "ΠΛΗΡΗΣ ΟΘΟΝΗ", "General": "Γενικά", - "GenreValue": "Είδος: {0}", + "Genre": "Είδος", "Genres": "Είδη", - "GenresValue": "Είδη: {0}", "GroupBySeries": "Ομαδοποίηση κατά σειρά", "GroupVersions": "Ομαδικές εκδόσεις", "GuestStar": "Φιλική Συμμετοχή", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 4f4f94f6f..d5ed1acde 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -223,8 +223,7 @@ "DirectStreamHelp2": "Direct Streaming a file uses very little processing power without any loss in video quality.", "DirectStreaming": "Direct streaming", "Director": "Director", - "DirectorValue": "Director: {0}", - "DirectorsValue": "Directors: {0}", + "Directors": "Directors", "Disabled": "Disabled", "Disc": "Disc", "Disconnect": "Disconnect", @@ -299,8 +298,7 @@ "Friday": "Friday", "Fullscreen": "Full screen", "General": "General", - "GenreValue": "Genre: {0}", - "GenresValue": "Genres: {0}", + "Genre": "Genre", "GroupBySeries": "Group by series", "GroupVersions": "Group versions", "GuestStar": "Guest star", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 1afa73118..924f1a188 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -192,8 +192,7 @@ "DirectStreamHelp2": "Direct Streaming a file uses very little processing power without any loss in video quality.", "DirectStreaming": "Direct streaming", "Director": "Director", - "DirectorValue": "Director: {0}", - "DirectorsValue": "Directors: {0}", + "Directors": "Directors", "Disabled": "Disabled", "Disc": "Disc", "Disconnect": "Disconnect", @@ -272,9 +271,8 @@ "Friday": "Friday", "Fullscreen": "Full screen", "General": "General", - "GenreValue": "Genre: {0}", + "Genre": "Genre", "Genres": "Genres", - "GenresValue": "Genres: {0}", "GroupBySeries": "Group by series", "GroupVersions": "Group versions", "GuestStar": "Guest star", @@ -551,7 +549,7 @@ "LabelAppNameExample": "Example: Sickbeard, Sonarr", "LabelArtists": "Artists:", "LabelArtistsHelp": "Separate multiple using ;", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelAudioBitDepth": "Audio bit depth:", "LabelAudioBitrate": "Audio bitrate:", "LabelAudioChannels": "Audio channels:", @@ -841,7 +839,7 @@ "LabelSubtitleDownloaders": "Subtitle downloaders:", "LabelSubtitleFormatHelp": "Example: srt", "LabelSubtitlePlaybackMode": "Subtitle mode:", - "LabelSubtitles": "Subtitles:", + "LabelSubtitles": "Subtitles", "LabelSupportedMediaTypes": "Supported Media Types:", "LabelTVHomeScreen": "TV mode home screen:", "LabelTag": "Tag:", @@ -887,7 +885,7 @@ "DashboardServerName": "Server: {0}", "DashboardOperatingSystem": "Operating System: {0}", "DashboardArchitecture": "Architecture: {0}", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LabelVideoBitrate": "Video bitrate:", "LabelVideoCodec": "Video codec:", "LabelVideoResolution": "Video resolution:", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 64f7a0fd7..6c7ed6f2d 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -312,8 +312,7 @@ "DirectStreamHelp2": "Transmitir directamente un archivo usa muy poco procesamiento, esto sin perdida en la calidad de video.", "DirectStreaming": "Transmisión en directo", "Director": "Director", - "DirectorValue": "Director: {0}", - "DirectorsValue": "Directores: {0}", + "Directors": "Directores", "Disabled": "Deshabilitado", "Disc": "Disco", "Disconnect": "Desconectar", @@ -398,8 +397,7 @@ "Friday": "Viernes", "Fullscreen": "Pantalla Completa", "General": "General", - "GenreValue": "Género: {0}", - "GenresValue": "Géneros: {0}", + "Genre": "Género", "GroupBySeries": "Agrupar por Serie", "GroupVersions": "Agrupar versiones", "GuestStar": "Estrella invitada", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 2968bbcdd..76679b698 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -179,7 +179,7 @@ "DirectStreamHelp1": "El medio es compatible con el dispositivo en cuanto a la resolución y tipo de medio (H.264, AC3, etc.), pero está en un contenedor de archivo incompatible (mkv, avi, wmv, etc.). El video sera reempaquetado en el acto antes de transmitirlo al dispositivo.", "DirectStreamHelp2": "La Transmisión Directa de un archivo usa muy poco poder de procesamiento sin ninguna perdida en la calidad de video.", "DirectStreaming": "Transmisión Directa", - "DirectorsValue": "Directores: {0}", + "Directors": "Directores", "Disabled": "Desactivado", "Disc": "DIsco", "Disconnect": "Desconectar", @@ -255,9 +255,8 @@ "FormatValue": "Formato: {0}", "Friday": "Viernes", "Fullscreen": "Pantalla Completa", - "GenreValue": "Genero: {0}", + "Genre": "Genero", "Genres": "Géneros", - "GenresValue": "Géneros: {0}", "GroupBySeries": "Agrupar por series", "GroupVersions": "Agrupar versiones", "GuestStar": "Estrella invitada", @@ -1350,7 +1349,6 @@ "ButtonTrailer": "Trailer", "AuthProviderHelp": "Seleccione un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.", "Director": "Director", - "DirectorValue": "Director: {0}", "Extras": "Extras", "General": "General", "HeaderAdmin": "Administrador", diff --git a/src/strings/es.json b/src/strings/es.json index 3d56ff56d..2f3fb2769 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1248,9 +1248,8 @@ "Descending": "Descendiente", "DirectStreamHelp1": "El tipo de archivo (H.264, AC3, etc.) y la resolución son compatibles con el dispositivo, pero no el contenedor (mkv, avi, wmv, etc.). El vídeo será re-empaquetado al vuelo antes de transmitirlo al dispositivo.", "DirectStreamHelp2": "La transmisión directa del archivo usa muy poco procesamiento sin ninguna pérdida de calidad en el vídeo.", - "Director": "Dirección de", - "DirectorValue": "Dirección de: {0}", - "DirectorsValue": "Directores: {0}", + "Director": "Director", + "Directors": "Directores", "Display": "Mostrar", "DisplayInMyMedia": "Mostrar en la pantalla de inicio", "DisplayInOtherHomeScreenSections": "Mostrar en las secciones de la pantalla de inicio al igual que \"últimos\" y \"continuar viendo\"", @@ -1272,8 +1271,7 @@ "Filters": "Filtros", "Folders": "Carpetas", "General": "General", - "GenreValue": "Género: {0}", - "GenresValue": "Géneros: {0}", + "Genre": "Género", "GroupBySeries": "Agrupar por series", "GuideProviderLogin": "Credenciales", "HeaderAlbumArtists": "Artistas del álbum", diff --git a/src/strings/fi.json b/src/strings/fi.json index b61724e2f..55c5a1fbc 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -240,8 +240,7 @@ "DirectStreamHelp2": "Tiedoston suoraan toistaminen käyttää erittäin vähän prosessorin resursseja ilman laadun heikentämistä.", "DirectStreaming": "Suora suoratoisto", "Director": "Ohjaaja", - "DirectorValue": "Ohjaaja: {0}", - "DirectorsValue": "Ohjaajat: {0}", + "Directors": "Ohjaajat", "Disabled": "Pois päältä kytkettynä", "Disc": "Levy", "Disconnect": "Katkaise yhteys", diff --git a/src/strings/fr.json b/src/strings/fr.json index fd85828c1..465eca15f 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -175,9 +175,8 @@ "DirectStreamHelp1": "Le média est compatible avec l'appareil en ce qui concerne la résolution et le type de média (H.264, AC3, etc), mais se trouve dans un conteneur de fichiers incompatible (mkv, avi, wmv, etc). La vidéo sera rempaquetée à la volée avant d'être diffusée à l'appareil.", "DirectStreamHelp2": "Le streaming en direct d'un fichier utilise très peu de puissance de traitement sans perte de qualité vidéo.", "DirectStreaming": "Streaming direct", - "Director": "Réalisation", - "DirectorValue": "Réalisation : {0}", - "DirectorsValue": "Réalisation : {0}", + "Director": "Réalisateur(trice)", + "Directors": "Réalisateurs", "Disabled": "Désactivé", "Disc": "Disque", "Disconnect": "Déconnecter", @@ -1329,9 +1328,8 @@ "ButtonPause": "Pause", "Collections": "Collections", "Extras": "Extras", - "GenreValue": "Genre: {0}", + "Genre": "Genre", "Genres": "Genres", - "GenresValue": "Genres: {0}", "Guide": "Guide", "GuestStar": "Guest star", "Photos": "Photos", diff --git a/src/strings/he.json b/src/strings/he.json index a334f312b..381b9bc18 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -59,7 +59,6 @@ "DeleteImageConfirmation": "האם אתה בטוח שברצונך למחוק תמונה זו?", "DeleteMedia": "מחק מדיה", "DeleteUser": "מחק משתמש", - "Director": "מנהל", "Dislike": "לא אוהב", "DoNotRecord": "אל תקליט", "Download": "הורדה", @@ -557,8 +556,8 @@ "DisplayMissingEpisodesWithinSeasons": "הצג פרקים חסרים בתוך העונות", "DisplayInMyMedia": "הצג בעמוד הבית", "Disconnect": "התנתק", - "DirectorsValue": "במאים: {0}", - "DirectorValue": "במאי: {0}", + "Director": "במאי", + "Directors": "במאים", "Descending": "סדר יורד", "Default": "ברירת מחדל", "DeathDateValue": "נפטר: {0}", @@ -667,8 +666,7 @@ "HeaderAddScheduledTaskTrigger": "הוסף טריגר", "HeaderActivity": "פעילות", "Guide": "מדריך", - "GenresValue": "ז'אנרים: {0}", - "GenreValue": "ז'אנר: {0}", + "Genre": "ז'אנר", "General": "כללי", "Fullscreen": "מסך מלא", "FolderTypeUnset": "תוכן מעורבב", diff --git a/src/strings/hu.json b/src/strings/hu.json index 0f0b0aee6..69ce7aced 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -87,8 +87,7 @@ "DeleteMedia": "Média törlése", "Descending": "Csökkenő", "Director": "Rendező", - "DirectorValue": "Rendező: {0}", - "DirectorsValue": "Rendezők: {0}", + "Directors": "Rendezők", "Dislike": "Nem tettszik", "Display": "Megjelenítés", "DisplayMissingEpisodesWithinSeasons": "Hiányzó évad epizódok megjelenítése", @@ -124,7 +123,6 @@ "Fullscreen": "Teljes képernyő", "General": "Általános", "Genres": "Műfajok", - "GenresValue": "Műfajok: {0}", "HeaderActiveDevices": "Aktív eszközök", "HeaderAddToCollection": "Hozzáadás gyűjteményhez", "HeaderAddToPlaylist": "Hozzáadás lejátszási listához", @@ -575,7 +573,7 @@ "Writer": "Író", "Yesterday": "Tegnap", "FormatValue": "Formátum: {0}", - "GenreValue": "Műfaj: {0}", + "Genre": "Műfaj", "HeaderServerSettings": "Szerver beállítások", "LabelDropImageHere": "Húzz ide egy képet, vagy kattints a böngészéshez.", "LabelDropShadow": "Árnyék:", diff --git a/src/strings/it.json b/src/strings/it.json index 4dd7b3d19..6ba6df0d1 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -165,8 +165,7 @@ "DirectStreamHelp2": "Lo Streaming in Diretta di un file utilizza poco il processore senza alcuna perdita di qualità video.", "DirectStreaming": "Streaming Diretto", "Director": "Regista", - "DirectorValue": "Regista: {0}", - "DirectorsValue": "Registi: {0}", + "Directors": "Registi", "Disabled": "Disabilitato", "Disc": "Disco", "Disconnect": "Disconnetti", @@ -240,9 +239,8 @@ "FormatValue": "Formato: {0}", "Friday": "Venerdì", "Fullscreen": "Schermo Intero", - "GenreValue": "Genere: {0}", + "Genre": "Genere", "Genres": "Generi", - "GenresValue": "Generi: {0}", "GroupBySeries": "Raggruppa per serie", "GroupVersions": "Raggruppa versioni", "GuestStar": "Personaggio famoso", diff --git a/src/strings/ja.json b/src/strings/ja.json index 8450f01f4..9a881bce0 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -176,8 +176,7 @@ "DirectStreamHelp2": "ファイルのダイレクトストリーミングは、ビデオ品質を損なうことなく、Jellyfin Serverにもほとんど負荷がありません。", "DirectStreaming": "ダイレクトストリーミング", "Director": "ディレクター", - "DirectorValue": "ディレクター: {0}", - "DirectorsValue": "ディレクターズ: {0}", + "Directors": "ディレクターズ", "Disabled": "無効", "Disc": "ディスク", "Disconnect": "切断", @@ -266,9 +265,8 @@ "Friday": "金曜日", "Fullscreen": "フルスクリーン", "General": "全般", - "GenreValue": "ジャンル: {0}", + "Genre": "ジャンル", "Genres": "ジャンル", - "GenresValue": "ジャンル: {0}", "GroupBySeries": "シリーズグループ", "GroupVersions": "グループバージョン", "GuestStar": "ゲストスター", diff --git a/src/strings/kk.json b/src/strings/kk.json index a70b03a69..665091106 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -188,8 +188,7 @@ "DirectStreamHelp2": "Faıldy tikeleı taratý beıne sapasyn joǵaltpaı óte az esepteý qýatyn paıdalanady.", "DirectStreaming": "Tikeleı tasymaldanýda", "Director": "Rejısór", - "DirectorValue": "Rejısóri: {0}", - "DirectorsValue": "Rejısórler; {0}", + "Directors": "Rejısórler", "Disabled": "Ajyratylǵan", "Disc": "Dıski", "Disconnect": "Ajyratý", @@ -267,9 +266,8 @@ "Friday": "juma", "Fullscreen": "Tolyq ekran", "General": "Jalpy", - "GenreValue": "Janr: {0}", + "Genre": "Janr", "Genres": "Janrlar", - "GenresValue": "Janrlar: {0}", "GroupBySeries": "Telehıkaıalar boıynsha toptastyrý", "GroupVersions": "Nusqalardy toptastyrý", "GuestStar": "Shaqyrylǵan aktór", diff --git a/src/strings/ko.json b/src/strings/ko.json index c7efcc0ea..b96642d8d 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -880,7 +880,6 @@ "DoNotRecord": "녹화 안 함", "Disconnect": "연결 끊기", "Disabled": "비활성화됨", - "DirectorValue": "감독: {0}", "DirectPlaying": "다이렉트 재생", "DirectStreaming": "다이렉트 스트리밍", "DirectStreamHelp2": "다이렉트 스트리밍은 비디오 퀄리티의 손실없이 매우 적은 처리능력을 사용합니다.", @@ -1145,8 +1144,7 @@ "HardwareAccelerationWarning": "하드웨어 가속을 활성화하면 일부 환경에서 불안정해질 수 있습니다. 운영체제 및 비디오 드라이버가 최신 상태인지 확인하십시오. 이 기능을 활성화한 후 비디오를 재생하는 데 어려움이 있을 경우 설정을 다시 '사용 안 함'으로 변경하십시오.", "GuestStar": "게스트 스타", "GroupBySeries": "시리즈별로 그룹화", - "GenresValue": "장르: {0}", - "GenreValue": "장르: {0}", + "Genre": "장르", "General": "일반", "FileReadCancelled": "파일 읽기 작업이 취소되었습니다.", "FetchingData": "추가 데이터를 가져오는 중", @@ -1284,7 +1282,7 @@ "LabelDiscNumber": "디스크 번호:", "Identify": "식별자", "HeaderMoreLikeThis": "비슷한 작품", - "DirectorsValue": "감독: {0}", + "Directors": "감독", "ButtonSplit": "나누기", "HeaderContainerProfileHelp": "컨테이너 프로파일은 사용자의 디바이스에서 재생 가능한 파일 형식을 나타냅니다. 다이렉트 플레이가 설정된 경우에도 디바이스에서 지원되지 않는 형식이라면 트랜스코딩이 적용됩니다.", "HeaderCodecProfileHelp": "코덱 프로파일은 사용자의 디바이스에서 재생 가능한 코덱을 가리킵니다. 다이렉트 플레이가 설정된 경우에도 디바이스에서 지원되지 않는 코덱이라면 트랜스코딩이 적용됩니다.", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index fa97fe2d8..07d1b790a 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -624,8 +624,7 @@ "ConfirmEndPlayerSession": "Ar norite išjungti Jellyfin ant {0}?", "Descending": "Mažėjančia tvarka", "DetectingDevices": "Ieškomi įrenginiai", - "DirectorValue": "Režisierius: {0}", - "DirectorsValue": "Režisieriai: {0}", + "Directors": "Režisieriai", "Disabled": "Išjungtas", "Disc": "Diskas", "Disconnect": "Atsijungti", @@ -805,7 +804,7 @@ "ExtraLarge": "Labai didelis", "Fullscreen": "Viso ekrano režimas", "General": "Bendri", - "GenreValue": "Žanras: {0}", + "Genre": "Žanras", "ErrorPleaseSelectLineup": "Pasirinkite TV programą ir bandykite dar kartą. Jei TV programos nerodoma, patikrinkite ar teisingas jūsų vartotojo vardas, slaptažodis ir pašto kodas.", "HeaderRevisionHistory": "Versijų istorija", "HeaderShutdown": "Išjungti", @@ -924,7 +923,6 @@ "ErrorAddingXmlTvFile": "Atidarant XMLTV failą įvyko klaida. Įsitikinkite, ar failas egzistuoja, ir bandykite dar kartą.", "ErrorGettingTvLineups": "Atsisiunčiant TV programas įvyko klaida. Įsitikinkite, kad jūsų informacija teisinga, ir bandykite dar kartą.", "Features": "Medžiagos", - "GenresValue": "Žanrai: {0}", "GroupBySeries": "Grupuoti pagal serialus", "Guide": "Gidas", "GuideProviderLogin": "Prisijungti", diff --git a/src/strings/lv.json b/src/strings/lv.json index 657a2261a..660ebcd97 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -412,9 +412,8 @@ "GuestStar": "Vieszvaigzne", "GroupVersions": "Grupēt versijas", "GroupBySeries": "Grupēt pēc sērijām", - "GenresValue": "Žanri: {0}", "Genres": "Žanri", - "GenreValue": "Žanrs: {0}", + "Genre": "Žanrs", "General": "Vispārīgs", "Fullscreen": "Pilnekrāns", "Friday": "Piektdiena", @@ -464,8 +463,7 @@ "Dislike": "Nepatīk", "Disc": "Disks", "Disabled": "Atspējots", - "DirectorsValue": "Direktori: {0}", - "DirectorValue": "Direktors: {0}", + "Directors": "Direktori", "Director": "Direktors", "DirectStreaming": "Tiešā straumēšana", "DirectPlaying": "Tiešā Atskaņošana", diff --git a/src/strings/nb.json b/src/strings/nb.json index 1b6c1529a..373cdc8a5 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1159,7 +1159,6 @@ "MediaInfoStreamTypeVideo": "Video", "OptionDownloadBannerImage": "Banner", "CopyStreamURLSuccess": "URLen ble kopiert.", - "DirectorValue": "Regissør: {0}", "OptionThumb": "Miniatyrbilde", "LabelInternetQuality": "Internettkvalitet:", "SubtitleAppearanceSettingsDisclaimer": "Disse innstillingene vil ikke påvirke grafiske undertekster (PGS, DVD, osv.) eller ASS/SSA-teksting som inkluderer sin egen formatering.", @@ -1267,7 +1266,7 @@ "LabelMatchType": "Matchtype:", "OptionPosterCard": "Plakatkort", "Uniform": "Jevn", - "DirectorsValue": "Regissører: {0}", + "Directors": "Regissører", "Disabled": "Deaktivert", "Disc": "Plate", "Display": "Vis", @@ -1283,8 +1282,7 @@ "FetchingData": "Henter ytterligere data", "Folders": "Mapper", "FormatValue": "Format: {0}", - "GenreValue": "Sjanger: {0}", - "GenresValue": "Sjangre: {0}", + "Genre": "Sjanger", "GroupBySeries": "Grupper etter serie", "GroupVersions": "Grupper etter versjon", "Guide": "Guide", diff --git a/src/strings/nl.json b/src/strings/nl.json index 9ac84a739..5ca394dc2 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -168,8 +168,7 @@ "DirectStreamHelp2": "Direct streamen van een bestand gebruikt weinig processor kracht zonder verlies van beeldkwaliteit.", "DirectStreaming": "Direct streamen", "Director": "Regiseur", - "DirectorValue": "Regisseur: {0}", - "DirectorsValue": "Regisseurs: {0}", + "Directors": "Regisseurs", "Disabled": "Uitgeschakeld", "Disc": "Disk", "Disconnect": "Loskoppelen", @@ -1269,9 +1268,8 @@ "Desktop": "Bureaublad", "DownloadsValue": "{0} downloads", "Filters": "Filters", - "GenreValue": "Genre: {0}", + "Genre": "Genre", "Genres": "Genres", - "GenresValue": "Genres: {0}", "HeaderAlbums": "Albums", "HeaderCastAndCrew": "Cast & Crew", "HeaderCastCrew": "Cast & Crew", diff --git a/src/strings/pl.json b/src/strings/pl.json index 4097a6cc3..71a4ba06e 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -180,8 +180,7 @@ "DirectStreamHelp2": "Transmisja bezpośrednia pliku używa niewiele mocy przetwarzania, bez utraty jakości wideo.", "DirectStreaming": "Transmisja bezpośrednia", "Director": "Reżyser", - "DirectorValue": "Reżyser: {0}", - "DirectorsValue": "Reżyserzy: {0}", + "Directors": "Reżyserzy", "Disabled": "Nieaktywne", "Disc": "Dysk", "Disconnect": "Rozłącz", @@ -258,9 +257,8 @@ "Friday": "Piątek", "Fullscreen": "Pełny ekran", "General": "Ogólne", - "GenreValue": "Gatunek: {0}", + "Genre": "Gatunek", "Genres": "Gatunki", - "GenresValue": "Gatunki: {0}", "GroupBySeries": "Grupuj po serialach", "GroupVersions": "Wersje grup", "GuestStar": "Gość specjalny", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index dcb24a2fc..c5b426fea 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -172,8 +172,7 @@ "DirectStreamHelp2": "O streaming direto de um arquivo usa baixo processamento sem perda de qualidade de vídeo.", "DirectStreaming": "Streaming Direto", "Director": "Diretor", - "DirectorValue": "Diretor: {0}", - "DirectorsValue": "Diretores: {0}", + "Directors": "Diretores", "Disabled": "Desativado", "Disc": "Disco", "Disconnect": "Desconectar", @@ -248,9 +247,8 @@ "Friday": "Sexta-feira", "Fullscreen": "Tela cheia", "General": "Geral", - "GenreValue": "Gênero: {0}", + "Genre": "Gênero", "Genres": "Gêneros", - "GenresValue": "Gêneros: {0}", "GroupBySeries": "Agrupar por séries", "GroupVersions": "Agrupar versões", "GuestStar": "Convidado especial", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index c8e20fd06..f80bc1f5a 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -873,8 +873,7 @@ "GuestStar": "Estrela convidada", "GroupVersions": "Agrupar versões", "GroupBySeries": "Agrupar por série", - "GenresValue": "Géneros: {0}", - "GenreValue": "Género: {0}", + "Genre": "Género", "General": "Geral", "FormatValue": "Formato: {0}", "FolderTypeUnset": "Conteúdo Misto", @@ -1077,8 +1076,7 @@ "News": "Notícias", "Programs": "Programas", "HeaderMovies": "Filmes", - "DirectorsValue": "Realização: {0}", - "DirectorValue": "Realizador: {0}", + "Directors": "Realização", "ButtonOff": "Desligado", "ButtonAddImage": "Adicionar Imagem", "LabelOriginalTitle": "Título original:", diff --git a/src/strings/pt.json b/src/strings/pt.json index ecd6ccb07..a7cd41299 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -906,8 +906,7 @@ "Disconnect": "Desligar", "Disc": "Disco", "Disabled": "Desactivado", - "DirectorsValue": "Realização: {0}", - "DirectorValue": "Realizador: {0}", + "Directors": "Realização", "Director": "Realizador", "DirectStreaming": "Reprodução directa", "DirectStreamHelp2": "A reprodução directa de um ficheiro requer pouco processamento e não implica perda de qualidade num vídeo.", @@ -1186,12 +1185,11 @@ "GuestStar": "Estrela convidada", "GroupVersions": "Agrupar versões", "GroupBySeries": "Agrupar por série", - "GenresValue": "Géneros: {0}", "ErrorAddingListingsToSchedulesDirect": "Ocorreu um erro ao adicionar o alinhamento à sua conta Schedules Direct. As contas Schedules Direct permitem apenas um número limitado de alinhamentos. Poderá ser necessário iniciar sessão na sua conta e remover outras listagens antes de prosseguir.", "Ended": "Terminado", "DefaultMetadataLangaugeDescription": "Estes são os valores por omissão que podem ser individualizados para cada uma das bibliotecas.", "Genres": "Géneros", - "GenreValue": "Género: {0}", + "Genre": "Género", "General": "Geral", "Fullscreen": "Ecrã inteiro", "Friday": "Sexta", diff --git a/src/strings/ro.json b/src/strings/ro.json index 34907d09f..a5b938e7e 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -382,8 +382,7 @@ "ConfirmDeletion": "Confirmă ștergerea", "DeleteDeviceConfirmation": "Sigur doriți să ștergeți acest dispozitiv? Acesta va reapărea data viitoare când un utilizator se conectează cu acesta.", "DeleteUser": "Șterge utilizator", - "DirectorValue": "Regizor: {0}", - "DirectorsValue": "Regizori: {0}", + "Directors": "Regizori", "Disabled": "Dezactivat", "Disconnect": "Deconectare", "Dislike": "Neplăcut", @@ -545,8 +544,7 @@ "EveryNDays": "La fiecare {0} zile", "Extras": "Extra", "Genres": "Genuri", - "GenreValue": "Gen: {0}", - "GenresValue": "Genuri: {0}", + "Genre": "Gen", "Guide": "Ghid", "HeaderCancelRecording": "Anulați înregistrarea", "HeaderCancelSeries": "Anulați seriile", diff --git a/src/strings/ru.json b/src/strings/ru.json index b84651ed5..4986855da 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -181,8 +181,7 @@ "DirectStreamHelp2": "При прямой трансляции файла расходуется очень мало вычислительной мощности без потери качества видео.", "DirectStreaming": "Транслируется напрямую", "Director": "Режиссёр", - "DirectorValue": "Режиссёр: {0}", - "DirectorsValue": "Режиссёры: {0}", + "Directors": "Режиссёры", "Disabled": "Отключено", "Disc": "Диск", "Disconnect": "Разъединиться", @@ -260,9 +259,8 @@ "Friday": "пятница", "Fullscreen": "Полный экран", "General": "Общие", - "GenreValue": "Жанр: {0}", + "Genre": "Жанр", "Genres": "Жанры", - "GenresValue": "Жанры: {0}", "GroupBySeries": "Группирование по сериалам", "GroupVersions": "Сгруппировать версии", "GuestStar": "Пригл. актёр", diff --git a/src/strings/sk.json b/src/strings/sk.json index edbc343fa..2727fe01d 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -123,8 +123,7 @@ "DetectingDevices": "Hľadám zariadenia", "DeviceAccessHelp": "Táto možnosť sa vzťahuje iba na zariadenia, ktoré môžu byť jedinečne identifikované a nezabráni prístup cez prehliadač. Filtrovaním prístupu používateľských zariadení zabraňuje užívateľom použiť nové zariadenie, pokiaľ neboli tu schválené.", "Director": "Režisér", - "DirectorValue": "Réžia: {0}", - "DirectorsValue": "Režiséri: {0}", + "Directors": "Režiséri", "Disc": "Disk", "Disconnect": "Odpojiť", "Dislike": "Nepáči sa mi to", @@ -165,9 +164,8 @@ "Friday": "Piatok", "Fullscreen": "Celá obrazovka", "General": "Všeobecné", - "GenreValue": "Žáner: {0}", + "Genre": "Žáner", "Genres": "Žánre", - "GenresValue": "Žánre: {0}", "GroupBySeries": "Zoskupiť podľa série", "GuestStar": "Hosťujúca hviezda", "Guide": "Sprievodca", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 83be4ddd9..9b74efe3a 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -271,8 +271,7 @@ "Down": "Dol", "Dislike": "Ni mi všeč", "Disabled": "Onemogočen", - "DirectorsValue": "Režiserji: {0}", - "DirectorValue": "Režiser: {0}", + "Directors": "Režiserji", "Director": "Režiser", "DetectingDevices": "Zaznavanje naprav", "Desktop": "Namizje", @@ -462,8 +461,7 @@ "GuestStar": "Gostujoči igralec", "GroupVersions": "Združi različice", "GroupBySeries": "Združi bo serijah", - "GenresValue": "Zvrsti: {0}", - "GenreValue": "Zvrst: {0}", + "Genre": "Zvrst", "General": "Splošno", "Fullscreen": "Celoten zaslon", "Friday": "Petek", diff --git a/src/strings/sv.json b/src/strings/sv.json index 17bb11b57..2dd5ec2dc 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -163,8 +163,7 @@ "DirectStreamHelp2": "Direktströmning av en fil använder väldigt lite resurser av CPU'n utan att bildkvaliten försämras.", "DirectStreaming": "Direktströmning", "Director": "Regissör", - "DirectorValue": "Regi: {0}", - "DirectorsValue": "Regi: {0}", + "Directors": "Regi", "Disabled": "Inaktiverad", "Disc": "Skiva", "Disconnect": "Koppla bort", @@ -235,7 +234,6 @@ "Friday": "Fredag", "Fullscreen": "Fullskärm", "Genres": "Genrer", - "GenresValue": "Genrer: {0}", "GroupBySeries": "Gruppera efter serie", "GroupVersions": "Gruppera versioner", "GuestStar": "Gästmedverkande", @@ -1273,7 +1271,7 @@ "HeaderApp": "Applikation", "HeaderAdmin": "Administratör", "Guide": "Guide", - "GenreValue": "Genre: {0}", + "Genre": "Genre", "General": "Allmänt", "FastForward": "Snabbspola", "Extras": "Extramaterial", diff --git a/src/strings/tr.json b/src/strings/tr.json index e1ac24da6..7d2afd756 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -314,9 +314,8 @@ "ColorPrimaries": "Renk primerleri", "DirectStreamHelp2": "Doğrudan Akış, video kalitesinde herhangi bir kayıp olmadan çok az işlem gücü kullanır.", "DirectStreaming": "Doğrudan akış", - "Director": "yönetmen", - "DirectorValue": "Yönetmen: {0}", - "DirectorsValue": "Yöneticiler: {0}", + "Director": "Yönetmen", + "Directors": "Yöneticiler", "Disabled": "Deaktif", "DisplayModeHelp": "Jellyfin’i çalıştırdığınız ekran türünü seçin.", "DoNotRecord": "Kaydetme", @@ -521,8 +520,7 @@ "GuestStar": "Konuk sanatçı", "GroupVersions": "Grup versiyonları", "GroupBySeries": "Seriye göre gruplandır", - "GenresValue": "Türler: {0}", - "GenreValue": "Tür: {0}", + "Genre": "Tür", "General": "Genel", "Fullscreen": "Tam ekran", "FormatValue": "Biçim: {0}", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index a37f83903..271be38b5 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1310,16 +1310,14 @@ "BoxRear": "盒子(背面)", "ChannelNumber": "频道号码", "ColorSpace": "色彩空间", - "DirectorValue": "导演:{0}", - "DirectorsValue": "导演:{0}", + "Directors": "导演", "ColorTransfer": "色彩转换", "ConfirmDeleteItem": "这将同时在磁盘和媒体库中删除这个项目。确认删除?", "ConfirmDeleteItems": "这将同时在磁盘和媒体库中删除这些项目。确认删除?", "ConfirmEndPlayerSession": "确认要关闭位于{0}的Jellyfin吗?", "ValueSeconds": "{0}秒", "Features": "功能", - "GenreValue": "风格:{0}", - "GenresValue": "风格:{0}", + "Genre": "风格", "Guide": "指南", "HeaderCancelRecording": "取消录制", "HeaderFavoriteMovies": "最爱的电影", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index ffc0228af..59ab7fcdd 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -453,8 +453,7 @@ "DirectStreamHelp2": "直接串流檔案會占用非常少的處理效能並且影片的品質不會有任何損失。", "DirectStreaming": "直接串流", "Director": "導演", - "DirectorValue": "導演: {0}", - "DirectorsValue": "導演: {0}", + "Directors": "導演", "Disabled": "已停用", "Disc": "光碟", "Disconnect": "斷開連結", @@ -539,9 +538,8 @@ "FreeAppsFeatureDescription": "享受免費的Jellyfin應用程式。", "Fullscreen": "全螢幕", "General": "一般", - "GenreValue": "類型 : {0}", + "Genre": "類型", "Genres": "風格", - "GenresValue": "類型 : {0}", "GroupBySeries": "按系列分組", "GroupVersions": "按版本分組", "GuestStar": "特邀明星", From 4643c83ab14637fea8c4df0ed5dd251e3f451ee1 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 26 Mar 2020 20:48:09 +0100 Subject: [PATCH 05/16] Update some details page translations for the new layout --- src/strings/bg-bg.json | 4 ++-- src/strings/cs.json | 6 +++--- src/strings/da.json | 6 +++--- src/strings/de.json | 6 +++--- src/strings/el.json | 6 +++--- src/strings/en-gb.json | 6 +++--- src/strings/es-mx.json | 6 +++--- src/strings/es.json | 6 +++--- src/strings/fr.json | 6 +++--- src/strings/hu.json | 6 +++--- src/strings/it.json | 6 +++--- src/strings/ja.json | 6 +++--- src/strings/kk.json | 6 +++--- src/strings/ko.json | 6 +++--- src/strings/lt-lt.json | 2 +- src/strings/lv.json | 6 +++--- src/strings/nb.json | 6 +++--- src/strings/nl.json | 6 +++--- src/strings/pl.json | 6 +++--- src/strings/pt-br.json | 6 +++--- src/strings/pt-pt.json | 6 +++--- src/strings/pt.json | 2 +- src/strings/ro.json | 6 +++--- src/strings/ru.json | 6 +++--- src/strings/sk.json | 6 +++--- src/strings/sl-si.json | 4 ++-- src/strings/sv.json | 6 +++--- src/strings/tr.json | 2 +- src/strings/zh-cn.json | 6 +++--- src/strings/zh-tw.json | 6 +++--- 30 files changed, 82 insertions(+), 82 deletions(-) diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index ca95412f3..e6aaa30fb 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -433,7 +433,7 @@ "LabelStatus": "Състояние:", "LabelStopWhenPossible": "Спирай, когато е възможно:", "LabelSubtitlePlaybackMode": "Режим на субтитрите:", - "LabelSubtitles": "Субтитри:", + "LabelSubtitles": "Субтитри", "LabelSupportedMediaTypes": "Поддържани типове медия:", "LabelTag": "Етикет:", "LabelTextColor": "Цвят на текста:", @@ -810,7 +810,7 @@ "MediaInfoLayout": "Подредба", "MusicVideo": "Музикален клип", "MediaInfoStreamTypeVideo": "Видео", - "LabelVideo": "Видео:", + "LabelVideo": "Видео", "HeaderVideoTypes": "Видове видеа", "HeaderVideoType": "Вид на видеото", "EnableExternalVideoPlayers": "Външни възпроизводители", diff --git a/src/strings/cs.json b/src/strings/cs.json index 810be262b..bf74c4ad2 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -461,7 +461,7 @@ "LabelArtist": "Umělec", "LabelArtists": "Umělci:", "LabelArtistsHelp": "Odděl pomocí ;", - "LabelAudio": "Zvuk:", + "LabelAudio": "Zvuk", "LabelAudioLanguagePreference": "Preferovaný jazyk zvuku:", "LabelBindToLocalNetworkAddress": "Vázat na místní síťovou adresu:", "LabelBindToLocalNetworkAddressHelp": "Volitelné. Přepsat lokální IP adresu vazanou na http server. Pokud je ponecháno prázdné, server se sváže ke všem dostupným adresám (aplikace bude dostupná na všech síťových zařízení, které server nabízí). Změna této hodnoty vyžaduje restartování Jellyfin Serveru.", @@ -709,7 +709,7 @@ "LabelStopping": "Zastavování", "LabelSubtitleFormatHelp": "Příklad: srt", "LabelSubtitlePlaybackMode": "Mód titulků:", - "LabelSubtitles": "Titulky:", + "LabelSubtitles": "Titulky", "LabelSupportedMediaTypes": "Podporované typy médií:", "LabelTagline": "Slogan:", "LabelTextBackgroundColor": "Barva pozadí textu:", @@ -1393,7 +1393,7 @@ "LabelUrl": "URL:", "LabelUserAgent": "User agent:", "LabelUserRemoteClientBitrateLimitHelp": "Přepíše výchozí globální hodnotu nastavenou v nastavení přehrávání serveru.", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LabelVideoCodec": "Video kodek:", "LeaveBlankToNotSetAPassword": "Můžete ponechat prázdné pro nastavení bez hesla.", "LetterButtonAbbreviation": "A", diff --git a/src/strings/da.json b/src/strings/da.json index 74d7d21b8..22ddc5220 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -1268,7 +1268,7 @@ "Label3DFormat": "3D format:", "LabelAlbum": "Album:", "LabelArtist": "Kunstner", - "LabelAudio": "Lyd:", + "LabelAudio": "Lyd", "LabelBitrateMbps": "Bitrate (Mbps):", "LabelBlockContentWithTags": "Blokér filer med mærkerne:", "LabelBurnSubtitles": "Brænd undertekster:", @@ -1313,7 +1313,7 @@ "LabelSortOrder": "Sorteringsorden:", "LabelSoundEffects": "Lydeffekter:", "LabelStatus": "Status:", - "LabelSubtitles": "Undertekster:", + "LabelSubtitles": "Undertekster", "LabelSyncNoTargetsHelp": "Det ser ud til at du ikke har nogen apps der understøtter offline hentning.", "LabelTVHomeScreen": "TV modus hjemmeskærm:", "LabelTag": "Mærke:", @@ -1327,7 +1327,7 @@ "LabelUrl": "Link:", "LabelVersion": "Version:", "LabelVersionNumber": "Version {0}", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LabelVideoCodec": "Video codec:", "LabelWindowBackgroundColor": "Tekst baggrundsfarve:", "LabelXDlnaCap": "X-DLNA begrænsning:", diff --git a/src/strings/de.json b/src/strings/de.json index 861c57ef4..97cb1f959 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -758,7 +758,7 @@ "LabelSubtitleDownloaders": "Untertitel Downloader:", "LabelSubtitleFormatHelp": "Beispiel: srt", "LabelSubtitlePlaybackMode": "Untertitelmodus:", - "LabelSubtitles": "Untertitel:", + "LabelSubtitles": "Untertitel", "LabelSupportedMediaTypes": "Unterstüzte Medientypen:", "LabelTVHomeScreen": "TV-Mode Startseite:", "LabelTextBackgroundColor": "Hintergrundfarbe des Textes:", @@ -1305,7 +1305,7 @@ "Home": "Startseite", "Horizontal": "Horizontal", "LabelAlbum": "Album:", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelCache": "Cache:", "LabelFormat": "Format:", "LabelH264Crf": "H264 Encodierungs-CRF:", @@ -1324,7 +1324,7 @@ "LabelTypeText": "Text", "LabelVersion": "Version:", "LabelVersionNumber": "Version {0}", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LeaveBlankToNotSetAPassword": "Du kannst dieses Feld frei lassen um kein Passwort zu setzen.", "LinksValue": "Links: {0}", "MessageImageFileTypeAllowed": "Nur JPEG- und PNG-Dateien werden unterstützt.", diff --git a/src/strings/el.json b/src/strings/el.json index 8e0b77ac1..3856480fd 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -450,7 +450,7 @@ "LabelAppNameExample": "Παράδειγμα: Sickbeard, NzbDrone", "LabelArtists": "Καλλιτέχνες:", "LabelArtistsHelp": "Ξεχωρίστε πολλαπλά χρησιμοποιώντας;", - "LabelAudio": "Ήχος:", + "LabelAudio": "Ήχος", "LabelAudioLanguagePreference": "Προτιμώμενη γλώσσα ήχου:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Αυτόματη ανανέωση μεταδεδομένων από το internet:", "LabelBirthDate": "Ημερομηνία Γενεθλίων:", @@ -664,7 +664,7 @@ "LabelStopWhenPossible": "Διακοπή όταν είναι δυνατόν:", "LabelSubtitleFormatHelp": "Παράδειγμα: srt", "LabelSubtitlePlaybackMode": "Λειτουργία υποτίτλων:", - "LabelSubtitles": "Υπότιτλοι:", + "LabelSubtitles": "Υπότιτλοι", "LabelSupportedMediaTypes": "Υποστηριζόμενοι τύποι μέσων:", "LabelTVHomeScreen": "Αρχική οθόνη λειτουργίας τηλεόρασης:", "LabelTag": "Ετικέτα:", @@ -694,7 +694,7 @@ "LabelVersion": "Έκδοση:", "LabelVersionInstalled": "{0} εγκαταστήθηκε", "LabelVersionNumber": "Έκδοση {0}", - "LabelVideo": "Βίντεο:", + "LabelVideo": "Βίντεο", "LabelXDlnaCapHelp": "Καθορίζει το περιεχόμενο του στοιχείου X_DLNACAP στο urn:schemas-dlna-org:device-1-0 namespace.", "LabelXDlnaDocHelp": "Καθορίζει το περιεχόμενο του στοιχείου X_DLNACAP στο urn:schemas-dlna-org:device-1-0 namespace.", "LabelYear": "Έτος:", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index d5ed1acde..757ea5526 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -806,7 +806,7 @@ "LabelTag": "Tag:", "LabelTVHomeScreen": "TV mode home screen:", "LabelSupportedMediaTypes": "Supported Media Types:", - "LabelSubtitles": "Subtitles:", + "LabelSubtitles": "Subtitles", "LabelSubtitlePlaybackMode": "Subtitle mode:", "LabelSubtitleFormatHelp": "Example: srt", "LabelSubtitleDownloaders": "Subtitle downloaders:", @@ -1167,7 +1167,7 @@ "LabelAudioChannels": "Audio channels:", "LabelAudioBitrate": "Audio bitrate:", "LabelAudioBitDepth": "Audio bit depth:", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelArtistsHelp": "Separate multiple using ;", "LabelArtists": "Artists:", "LabelAppName": "App name", @@ -1336,7 +1336,7 @@ "MediaInfoSoftware": "Software", "ValueOneSeries": "1 series", "MediaInfoBitrate": "Bitrate", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LabelPrevious": "Previous", "LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.", "LabelKodiMetadataEnableExtraThumbs": "Copy extrafanart to extrathumbs field", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 76679b698..1aff47675 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -781,7 +781,7 @@ "LabelSubtitleDownloaders": "Recolectores de Subtitulos:", "LabelSubtitleFormatHelp": "Ejemplo: srt", "LabelSubtitlePlaybackMode": "Modo de subtítulo:", - "LabelSubtitles": "Subtítulos:", + "LabelSubtitles": "Subtítulos", "LabelSupportedMediaTypes": "Tipos de Medios Soportados:", "LabelTVHomeScreen": "Modo de pantalla de TV:", "LabelTag": "Etiqueta:", @@ -1365,7 +1365,7 @@ "HeaderRestartingServer": "Reiniciando servidor", "HeaderVideos": "Videos", "Horizontal": "Horizontal", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelAuthProvider": "Proveedor de autenticación:", "LabelDynamicExternalId": "{0} Id:", "LabelPasswordResetProvider": "Proveedor de restablecimiento de contraseña:", @@ -1378,7 +1378,7 @@ "DashboardServerName": "Servidor: {0}", "DashboardOperatingSystem": "Sistema operativo: {0}", "DashboardArchitecture": "Arquitectura: {0}", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LabelWeb": "Web: ", "LaunchWebAppOnStartup": "Iniciar la interfaz web al iniciar el servidor", "LaunchWebAppOnStartupHelp": "Abre el cliente web en su navegador web predeterminado cuando se inicia el servidor. Esto no ocurrirá cuando se utilice la función de reinicio del servidor.", diff --git a/src/strings/es.json b/src/strings/es.json index 2f3fb2769..6666964c4 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1288,7 +1288,7 @@ "HeaderVideoType": "Tipo de vídeo", "Home": "Inicio", "Horizontal": "Horizontal", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelBurnSubtitles": "Incrustar subtítulos:", "LabelDashboardTheme": "Tema para la interfaz del servidor:", "LabelDateTimeLocale": "Fecha y hora local:", @@ -1306,10 +1306,10 @@ "LabelSortBy": "Ordenar por:", "LabelSortOrder": "Orden:", "LabelSoundEffects": "Efectos de sonido:", - "LabelSubtitles": "Subtítulos:", + "LabelSubtitles": "Subtítulos", "LabelTVHomeScreen": "Modo televisión en pantalla de inicio:", "LabelVersion": "Versión:", - "LabelVideo": "Vídeo:", + "LabelVideo": "Vídeo", "LabelXDlnaCap": "X-DNLA cap:", "LabelXDlnaDoc": "X-DLNA doc:", "LearnHowYouCanContribute": "Descubre cómo puedes contribuir.", diff --git a/src/strings/fr.json b/src/strings/fr.json index 465eca15f..aab47271c 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -776,7 +776,7 @@ "LabelSubtitleDownloaders": "Outils de téléchargement de sous-titres :", "LabelSubtitleFormatHelp": "Exemple : srt", "LabelSubtitlePlaybackMode": "Mode des sous-titres :", - "LabelSubtitles": "Sous-titres :", + "LabelSubtitles": "Sous-titres", "LabelSupportedMediaTypes": "Types de médias supportés :", "LabelTVHomeScreen": "Écran d'accueil du mode TV :", "LabelTag": "Étiquette :", @@ -813,7 +813,7 @@ "LabelValue": "Valeur :", "LabelVersion": "Version :", "LabelVersionInstalled": "{0} installé(s)", - "LabelVideo": "Vidéo :", + "LabelVideo": "Vidéo", "LabelXDlnaCap": "Cap X-DLNA :", "LabelXDlnaCapHelp": "Détermine le contenu de l'élément X_DLNACAP dans l'espace de nom urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDoc": "Doc X-DLNA :", @@ -1339,7 +1339,7 @@ "HeaderTuners": "Égaliseur", "Horizontal": "Horizontal", "Images": "Images", - "LabelAudio": "Audio :", + "LabelAudio": "Audio", "LabelVersionNumber": "Version {0}", "LeaveBlankToNotSetAPassword": "Laissez vide pour ne pas définir de mot de passe.", "Logo": "Logo", diff --git a/src/strings/hu.json b/src/strings/hu.json index 69ce7aced..f8dfecb6c 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -231,7 +231,7 @@ "LabelAllowServerAutoRestart": "Automatikus újraindítás engedélyezése a szervernek a frissítések telepítéséhez", "LabelAllowServerAutoRestartHelp": "A szerver csak akkor indul újra ha nincs felhasználói tevékenység.", "LabelArtists": "Előadók:", - "LabelAudio": "Audió:", + "LabelAudio": "Audió", "LabelAudioLanguagePreference": "Audió nyelvének beállítása:", "LabelBirthYear": "Születési év:", "LabelCachePath": "Gyorsítótár útvonal:", @@ -319,7 +319,7 @@ "LabelStopping": "Megállítás", "LabelSubtitleFormatHelp": "Például: srt", "LabelSubtitlePlaybackMode": "Felirat mód:", - "LabelSubtitles": "Feliratok:", + "LabelSubtitles": "Feliratok", "LabelTagline": "Címke:", "LabelTheme": "Kinézet:", "LabelTime": "Idő:", @@ -336,7 +336,7 @@ "LabelUsername": "Felhasználónév:", "LabelVersionInstalled": "{0} telepítve", "LabelVersionNumber": "Verzió {0}", - "LabelVideo": "Videó:", + "LabelVideo": "Videó", "LabelYear": "Év:", "LabelYourFirstName": "Keresztneved:", "LabelYoureDone": "Készen vagy!", diff --git a/src/strings/it.json b/src/strings/it.json index 6ba6df0d1..cf9e06910 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -749,7 +749,7 @@ "LabelSubtitleDownloaders": "Downloader sottotitoli:", "LabelSubtitleFormatHelp": "Esempio: srt", "LabelSubtitlePlaybackMode": "Modalità Sottotitolo:", - "LabelSubtitles": "Sottotitoli:", + "LabelSubtitles": "Sottotitoli", "LabelSupportedMediaTypes": "Tipi di media supportati:", "LabelTVHomeScreen": "Schermata iniziale della modalità TV:", "LabelTagline": "Slogan:", @@ -1317,7 +1317,7 @@ "HeaderRestartingServer": "Riavvio Server", "Home": "Home", "LabelAlbum": "Album:", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelCache": "Cache:", "ButtonAddImage": "Aggiungi Immagine", "CopyStreamURL": "Copia Indirizzo dello Stream", @@ -1398,7 +1398,7 @@ "LabelTranscodingProgress": "Progresso di trascodifica:", "DashboardVersionNumber": "Versione: {0}", "DashboardServerName": "Server: {0}", - "LabelVideo": "Video:", + "LabelVideo": "Video", "DashboardArchitecture": "Architettura: {0}", "LabelWeb": "Web:", "LaunchWebAppOnStartup": "Lancia l'interfaccia web quando viene avviato il server", diff --git a/src/strings/ja.json b/src/strings/ja.json index 9a881bce0..4a15d798c 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -558,7 +558,7 @@ "LabelOriginalAspectRatio": "元のアスペクト比:", "LabelPrevious": "前へ", "LabelServerName": "サーバー名:", - "LabelSubtitles": "字幕:", + "LabelSubtitles": "字幕", "LabelSupportedMediaTypes": "サポートされているメディアタイプ:", "LabelTVHomeScreen": "TVモードホームスクリーン:", "LabelTextColor": "文字色:", @@ -858,7 +858,7 @@ "LabelAllowedRemoteAddresses": "リモートIPアドレスフィルター:", "LabelAppNameExample": "例: スケートボード、ソナー", "LabelArtists": "アーティスト:", - "LabelAudio": "音声:", + "LabelAudio": "音声", "LabelAudioBitDepth": "音声ビット深度:", "LabelAudioBitrate": "音声ビットレート:", "LabelAudioChannels": "音声チャンネル:", @@ -963,7 +963,7 @@ "DashboardVersionNumber": "バージョン: {0}", "DashboardServerName": "サーバー: {0}", "DashboardArchitecture": "アーキテクチャ: {0}", - "LabelVideo": "映像:", + "LabelVideo": "映像", "LabelVideoBitrate": "映像ビットレート:", "LabelYourFirstName": "名前:", "Share": "共有", diff --git a/src/strings/kk.json b/src/strings/kk.json index 665091106..852e408a3 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -536,7 +536,7 @@ "LabelAppNameExample": "Mysaly: Sickbeard, Sonarr", "LabelArtists": "Oryndaýshylar:", "LabelArtistsHelp": "Birneshýin mynaýmen bólińiz ;", - "LabelAudio": "Dybys:", + "LabelAudio": "Dybys", "LabelAudioLanguagePreference": "Dybys tiliniń teńshelimi:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Metaderekterdi Internetten avtomatty jańartý:", "LabelBindToLocalNetworkAddress": "Jergilikti jeli mekenjaıyna baılastyrý:", @@ -807,7 +807,7 @@ "LabelSubtitleDownloaders": "Sýbtıtrler júkteýshileri:", "LabelSubtitleFormatHelp": "Mysal: srt", "LabelSubtitlePlaybackMode": "Sýbtıtr rejimi:", - "LabelSubtitles": "Sýbtıtrler:", + "LabelSubtitles": "Sýbtıtrler", "LabelSupportedMediaTypes": "Qoldaýdaǵy tasyǵyshderekter túrleri:", "LabelTVHomeScreen": "TD rejimindegi basqy ekran:", "LabelTag": "Teg:", @@ -849,7 +849,7 @@ "LabelVersion": "Nusqa:", "LabelVersionInstalled": "{0} ornatylǵan", "LabelVersionNumber": "Nýsqasy: {0}", - "LabelVideo": "Beıne:", + "LabelVideo": "Beıne", "LabelXDlnaCap": "X-DLNA sıpattary:", "LabelXDlnaCapHelp": "urn:schemas-dlna-org:device-1-0 ataýlar keńistigindegi X_DLNACAP elementi mazmunyn anyqtaıdy.", "LabelXDlnaDoc": "X-DLNA tásimi:", diff --git a/src/strings/ko.json b/src/strings/ko.json index b96642d8d..833f8ccb1 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -1025,7 +1025,7 @@ "LabelWeb": "웹:", "LabelVideoCodec": "비디오 코덱:", "LabelVideoBitrate": "비디오 비트레이트:", - "LabelVideo": "비디오:", + "LabelVideo": "비디오", "DashboardArchitecture": "아키텍처: {0}", "DashboardOperatingSystem": "운영체제: {0}", "DashboardServerName": "서버: {0}", @@ -1042,7 +1042,7 @@ "LabelTheme": "테마:", "LabelTextSize": "글자 크기:", "LabelTextColor": "글자 색:", - "LabelSubtitles": "자막:", + "LabelSubtitles": "자막", "LabelSubtitleFormatHelp": "예시: srt", "LabelSubtitleDownloaders": "자막 다운로더:", "LabelStopping": "중지", @@ -1082,7 +1082,7 @@ "LabelAudioCodec": "오디오 코덱:", "LabelAudioChannels": "오디오 채널:", "LabelAudioBitrate": "오디오 비트레이트:", - "LabelAudio": "오디오:", + "LabelAudio": "오디오", "Items": "항목", "Kids": "어린이", "Home": "홈", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index 07d1b790a..c87628316 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -784,7 +784,7 @@ "HeaderLoginFailure": "Prisijungimo klaida", "Hide": "Paslėpti", "LabelAll": "Visi", - "LabelAudio": "Garsas:", + "LabelAudio": "Garsas", "LabelCancelled": "Atšaukta", "LabelCertificatePassword": "Sertifikato slaptažodis:", "LabelCertificatePasswordHelp": "Jei sertifikatui reikalingas slaptažodis, jį įveskite čia.", diff --git a/src/strings/lv.json b/src/strings/lv.json index 660ebcd97..8c19b23ad 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -52,7 +52,7 @@ "LabelVideoResolution": "Video izšķirtspēja:", "LabelVideoCodec": "Video kodeks:", "LabelVideoBitrate": "Video bitu-ātrums:", - "LabelVideo": "Video:", + "LabelVideo": "Video", "DashboardArchitecture": "Arhitektūra: {0}", "DashboardOperatingSystem": "Operētājsistēma: {0}", "DashboardServerName": "Serveris: {0}", @@ -85,7 +85,7 @@ "LabelTag": "Tags:", "LabelTVHomeScreen": "TV režīma mājas ekrāns:", "LabelSupportedMediaTypes": "Atbalstītie Multivides Veidi:", - "LabelSubtitles": "Subtitri:", + "LabelSubtitles": "Subtitri", "LabelSubtitlePlaybackMode": "Subtitru veids:", "LabelSubtitleFormatHelp": "Piemērs: srt", "LabelSubtitleDownloaders": "Subtitru lejupielādētāji:", @@ -222,7 +222,7 @@ "LabelBirthYear": "Dzimšanas gads:", "LabelBirthDate": "Dzimšanas datums:", "LabelAudioLanguagePreference": "Ieteicamā audio valoda:", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelArtistsHelp": "Atdali vairākus izmantojot ;", "LabelArtists": "Izpildītājs:", "LabelAppNameExample": "Piemēram: Sickbeard, Sonarr", diff --git a/src/strings/nb.json b/src/strings/nb.json index 373cdc8a5..3d863d17e 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1179,7 +1179,7 @@ "MediaInfoSampleRate": "Samplingsfrekvens", "MediaInfoStreamTypeData": "Data", "Option3D": "3D", - "LabelVideo": "Video:", + "LabelVideo": "Video", "OptionAlbum": "Album", "OptionAlbumArtist": "Albumartist", "Filters": "Filtre", @@ -1313,7 +1313,7 @@ "Horizontal": "Horisontal", "HttpsRequiresCert": "For å bruke sikker tilkobling må du legge inn et klarert SSL-sertifikat, for eksempel fra Let's Encrypt. Du må enten legge inn et sertifikat, eller deaktivere sikker tilkobling.", "LabelAlbumArtPN": "Albumomslag PN:", - "LabelAudio": "Lyd:", + "LabelAudio": "Lyd", "LabelAuthProvider": "Autentiserings-metode:", "LabelBitrate": "Bithastighet:", "LabelBurnSubtitles": "Brenn inn undertekst:", @@ -1342,7 +1342,7 @@ "LabelSpecialSeasonsDisplayName": "Visningsnavn for spesialsesong:", "LabelStatus": "Status:", "LabelSubtitleDownloaders": "Kilder for undertekst:", - "LabelSubtitles": "Undertekster:", + "LabelSubtitles": "Undertekster", "LabelTVHomeScreen": "Hjemskjerm for TV-modus:", "LabelTag": "Tagg:", "LabelTextBackgroundColor": "Tekstbagrunnsfarge:", diff --git a/src/strings/nl.json b/src/strings/nl.json index 5ca394dc2..2acfe8341 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -744,7 +744,7 @@ "LabelSubtitleDownloaders": "Ondertiteldownloaders:", "LabelSubtitleFormatHelp": "Voorbeeld: srt", "LabelSubtitlePlaybackMode": "Ondertitel mode:", - "LabelSubtitles": "Ondertitels:", + "LabelSubtitles": "Ondertitels", "LabelSupportedMediaTypes": "Ondersteunde Media Types:", "LabelTVHomeScreen": "TV mode begin scherm", "LabelTextBackgroundColor": "Tekst achtergrond kleur:", @@ -1310,7 +1310,7 @@ "ItemCount": "{0} items", "Items": "Items", "LabelAlbum": "Album:", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelAuthProvider": "Authenticatie Aanbieder:", "LabelCache": "Cache:", "LabelDidlMode": "DIDL mode:", @@ -1429,7 +1429,7 @@ "LabelXDlnaCap": "X-DLNA cap:", "DashboardVersionNumber": "Versie: {0}", "DashboardArchitecture": "Architectuur: {0}", - "LabelVideo": "Video:", + "LabelVideo": "Video", "MediaInfoStreamTypeAudio": "Audio", "MediaInfoStreamTypeData": "Data", "MediaInfoStreamTypeSubtitle": "Ondertiteling", diff --git a/src/strings/pl.json b/src/strings/pl.json index 71a4ba06e..32e9a9798 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -523,7 +523,7 @@ "LabelAppNameExample": "Przykład: Sickbeard, Sonarr", "LabelArtists": "Wykonawcy:", "LabelArtistsHelp": "Oddzielaj używając ;", - "LabelAudio": "Dźwięk:", + "LabelAudio": "Dźwięk", "LabelAudioLanguagePreference": "Preferowany język ścieżki dźwiękowej:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Odświeżaj automatycznie metadane z Internetu:", "LabelBindToLocalNetworkAddress": "Przypisz do lokalnego adresu sieciowego:", @@ -789,7 +789,7 @@ "LabelSubtitleDownloaders": "Dostawcy napisów:", "LabelSubtitleFormatHelp": "Przykład: srt", "LabelSubtitlePlaybackMode": "Tryb napisów:", - "LabelSubtitles": "Napisy:", + "LabelSubtitles": "Napisy", "LabelSupportedMediaTypes": "Obsługiwane typy mediów:", "LabelTVHomeScreen": "Ekran startowy trybu telewizyjnego:", "LabelTag": "Znacznik:", @@ -827,7 +827,7 @@ "LabelVersion": "Wersja:", "LabelVersionInstalled": "Zainstalowano {0}", "LabelVersionNumber": "Wersja {0}", - "LabelVideo": "Wideo:", + "LabelVideo": "Wideo", "LabelXDlnaCapHelp": "Określa zawartość elementu X_DLNACAP w przestrzeni nazw urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDocHelp": "Określa zawartość elementu X_DLNADOC w przestrzeni nazw urn:schemas-dlna-org:device-1-0.", "LabelYear": "Rok:", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index c5b426fea..f1bffad58 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -506,7 +506,7 @@ "LabelAppNameExample": "Exemplo: Sickbeard, Sonarr", "LabelArtists": "Artistas:", "LabelArtistsHelp": "Separa vários usando ;", - "LabelAudio": "Áudio:", + "LabelAudio": "Áudio", "LabelAudioLanguagePreference": "Idioma preferido de áudio:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Atualizar automaticamente os metadados da internet:", "LabelBindToLocalNetworkAddress": "Vincular a um endereço de rede local:", @@ -768,7 +768,7 @@ "LabelSubtitleDownloaders": "Downloaders de legendas:", "LabelSubtitleFormatHelp": "Exemplo: srt", "LabelSubtitlePlaybackMode": "Modo de legenda:", - "LabelSubtitles": "Legendas:", + "LabelSubtitles": "Legendas", "LabelSupportedMediaTypes": "Tipos de Mídia Suportados:", "LabelTVHomeScreen": "Tela inicial do modo TV:", "LabelTagline": "Slogan:", @@ -804,7 +804,7 @@ "LabelVersion": "Versão:", "LabelVersionInstalled": "{0} instalado", "LabelVersionNumber": "Versão {0}", - "LabelVideo": "Vídeo:", + "LabelVideo": "Vídeo", "LabelXDlnaCapHelp": "Determina o conteúdo do elemento X_DLNACAP no namespace urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDocHelp": "Determina o conteúdo do elemento X_DLNADOC no namespace urn:schemas-dlna-org:device-1-0.", "LabelYear": "Ano:", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index f80bc1f5a..d4a81580f 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -955,7 +955,7 @@ "LabelBindToLocalNetworkAddress": "Endereço local para colocar o servidor à escuta:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Atualizar metadados automaticamente a partir da Internet:", "LabelAuthProvider": "Provedor de autenticação:", - "LabelAudio": "Áudio:", + "LabelAudio": "Áudio", "LabelAllowedRemoteAddressesMode": "Tipo de filtro de IP remoto:", "LabelAllowedRemoteAddresses": "Filtro de IP remoto:", "LabelAllowHWTranscoding": "Permitir transcodificação por hardware", @@ -1306,7 +1306,7 @@ "LabelWeb": "Web:", "LabelVideoCodec": "Codec de vídeo:", "LabelVideoBitrate": "Taxa de bits de vídeo:", - "LabelVideo": "Vídeo:", + "LabelVideo": "Vídeo", "DashboardArchitecture": "Arquitetura: {0}", "DashboardOperatingSystem": "Sistema Operativo: {0}", "DashboardServerName": "Servidor: {0}", @@ -1320,7 +1320,7 @@ "LabelTextColor": "Côr do texto:", "LabelTextBackgroundColor": "Côr de fundo do texto:", "LabelTag": "Etiqueta:", - "LabelSubtitles": "Legendas:", + "LabelSubtitles": "Legendas", "LabelSportsCategories": "Categorias de Desporto:", "FetchingData": "A transferir informação adicional", "List": "lista", diff --git a/src/strings/pt.json b/src/strings/pt.json index a7cd41299..57787e93e 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -450,7 +450,7 @@ "LabelAudioCodec": "Codec de áudio:", "LabelAudioChannels": "Canais de áudio:", "LabelAudioBitrate": "Taxa de bits de áudio:", - "LabelAudio": "Áudio:", + "LabelAudio": "Áudio", "LabelArtistsHelp": "Separe múltiplos com ;", "LabelArtists": "Artistas:", "LabelAppNameExample": "Exemplo: Sickbeard, NzbDrone", diff --git a/src/strings/ro.json b/src/strings/ro.json index a5b938e7e..427ccff48 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -653,7 +653,7 @@ "LabelTag": "Etichetă:", "LabelTVHomeScreen": "Ecran de pornire în modul TV:", "LabelSupportedMediaTypes": "Tipuri media suportate:", - "LabelSubtitles": "Subtitrări:", + "LabelSubtitles": "Subtitrări", "LabelSubtitlePlaybackMode": "Mod subtitrare:", "LabelSubtitleFormatHelp": "Exemplu: srt", "LabelSubtitleDownloaders": "Descărcare subtitrări:", @@ -903,7 +903,7 @@ "LabelAudioChannels": "Canale audio:", "LabelAudioBitrate": "Rata de biți audio:", "LabelAudioBitDepth": "Adâncimea bitului audio:", - "LabelAudio": "Audio:", + "LabelAudio": "Audio", "LabelAppNameExample": "Exemplu: Sickbeard, Sonarr", "LabelAppName": "Nume app", "LabelAllowedRemoteAddressesMode": "Modul de filtrare a adresei IP de la distanță:", @@ -1146,7 +1146,7 @@ "LabelWeb": "Web:", "LabelVideoCodec": "Codec video:", "LabelVideoBitrate": "Rata de biți a video-ului:", - "LabelVideo": "Video:", + "LabelVideo": "Video", "DashboardArchitecture": "Arhitectură: {0}", "DashboardOperatingSystem": "Sistem de operare: {0}", "DashboardServerName": "Server: {0}", diff --git a/src/strings/ru.json b/src/strings/ru.json index 4986855da..d50bcacca 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -525,7 +525,7 @@ "LabelAppNameExample": "Пример: Sickbeard, Sonarr", "LabelArtists": "Исполнители:", "LabelArtistsHelp": "Для разделения используйте точку с запятой ;", - "LabelAudio": "Аудио:", + "LabelAudio": "Аудио", "LabelAudioLanguagePreference": "Выбор языка аудио:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Автоматически обновлять метаданные из Интернета:", "LabelBindToLocalNetworkAddress": "Привязка к адресу в локальной сети:", @@ -792,7 +792,7 @@ "LabelSubtitleDownloaders": "Загрузчики субтитров:", "LabelSubtitleFormatHelp": "Пример: srt", "LabelSubtitlePlaybackMode": "Режим субтитров:", - "LabelSubtitles": "Субтитры:", + "LabelSubtitles": "Субтитры", "LabelSupportedMediaTypes": "Поддерживаемые типы медиаданных:", "LabelTVHomeScreen": "Главная страница ТВ-режима:", "LabelTag": "Тег:", @@ -830,7 +830,7 @@ "LabelVersion": "Версия:", "LabelVersionInstalled": "Установлена: {0}", "LabelVersionNumber": "Версия {0}", - "LabelVideo": "Видео:", + "LabelVideo": "Видео", "LabelXDlnaCap": "Свойства X-Dlna:", "LabelXDlnaCapHelp": "Определяется содержание из элемента X_DLNACAP во пространстве имён urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDoc": "Схема X-Dlna:", diff --git a/src/strings/sk.json b/src/strings/sk.json index 2727fe01d..e0bebec52 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -471,7 +471,7 @@ "LabelStartWhenPossible": "Spustiť akonáhle je možné:", "LabelStatus": "Stav:", "LabelSubtitleFormatHelp": "Príklad: srt", - "LabelSubtitles": "Titulky:", + "LabelSubtitles": "Titulky", "LabelSupportedMediaTypes": "Podporované typy médií:", "LabelTextBackgroundColor": "Farba pozadia textu:", "LabelTextColor": "Farba textu:", @@ -960,7 +960,7 @@ "HeaderVideoType": "Typ videa", "HeaderVideoTypes": "Typy videí", "LabelAirsBeforeSeason": "Vysielané pred sériou:", - "LabelAudio": "Zvuk:", + "LabelAudio": "Zvuk", "LabelBlockContentWithTags": "Blokovať položky s tagmi:", "LabelDisplayMode": "Režim zobrazenia:", "LabelDisplaySpecialsWithinSeasons": "Zobraziť špeciálne epizódy v sérií, v ktorej boli odvysielané", @@ -1327,7 +1327,7 @@ "LabelXDlnaCap": "X-DLNA cap:", "LabelVideoCodec": "Video kodek:", "LabelVideoBitrate": "Dátový tok videa:", - "LabelVideo": "Video:", + "LabelVideo": "Video", "LabelVaapiDeviceHelp": "Toto je vykreslovací node, ktorý sa používa na hardvérovú akceleráciu.", "LabelVaapiDevice": "VA API zariadenie:", "LabelUserRemoteClientBitrateLimitHelp": "Prepíše východzie globálne hodnoty nastavené v nastavení prehrávania servera.", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 9b74efe3a..a692edbd3 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -594,7 +594,7 @@ "LabelAppName": "Ime aplikacije", "LabelAppNameExample": "Primer: Sickbeard, Sonarr", "LabelArtistsHelp": "Loči več z ;", - "LabelAudio": "Zvok:", + "LabelAudio": "Zvok", "LabelAudioBitrate": "Bitna hitrost zvoka:", "LabelAudioChannels": "Kanali zvoka:", "LabelAudioCodec": "Zvočni kodek:", @@ -1185,7 +1185,7 @@ "LabelTextBackgroundColor": "Barva ozadja besedila:", "LabelTag": "Oznaka:", "LabelSupportedMediaTypes": "Podprti tipi predstavnosti:", - "LabelSubtitles": "Podnapisi:", + "LabelSubtitles": "Podnapisi", "LabelSubtitlePlaybackMode": "Način podnapisov:", "LabelSubtitleFormatHelp": "Primer: srt", "LabelSubtitleDownloaders": "Pridobivanje podnapisov:", diff --git a/src/strings/sv.json b/src/strings/sv.json index 2dd5ec2dc..595780f07 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -480,7 +480,7 @@ "LabelAppNameExample": "Exempel: Sickbeard, Sonarr", "LabelArtists": "Artister:", "LabelArtistsHelp": "Separera med vid flera ;", - "LabelAudio": "Ljud:", + "LabelAudio": "Ljud", "LabelAudioLanguagePreference": "Önskat ljudspråk:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Uppdatera metadata automatiskt ifrån internet:", "LabelBindToLocalNetworkAddress": "Knyt till lokal nätverksadress:", @@ -740,7 +740,7 @@ "LabelSubtitleDownloaders": "Undertextskällor:", "LabelSubtitleFormatHelp": "Exempel: srt", "LabelSubtitlePlaybackMode": "Undertextläge:", - "LabelSubtitles": "Undertexter:", + "LabelSubtitles": "Undertexter", "LabelSupportedMediaTypes": "Mediaformat som stöds:", "LabelTVHomeScreen": "Hemskärm i TV-läge:", "LabelTag": "Etikett:", @@ -1451,7 +1451,7 @@ "LabelVideoResolution": "Video upplösning:", "LabelVideoCodec": "Video codec:", "LabelVideoBitrate": "Video bitrate:", - "LabelVideo": "Video:", + "LabelVideo": "Video", "DashboardArchitecture": "Arkitektur: {0}", "DashboardOperatingSystem": "Operativsystem: {0}", "DashboardServerName": "Server: {0}", diff --git a/src/strings/tr.json b/src/strings/tr.json index 7d2afd756..5588a3091 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -649,7 +649,7 @@ "LabelAudioSampleRate": "Ses örnekleme hızı:", "LabelAudioCodec": "Ses kodeği:", "LabelAudioChannels": "Ses kanalları:", - "LabelAudio": "Ses:", + "LabelAudio": "Ses", "LabelAppName": "Uygulama adı", "LabelAllowHWTranscoding": "Donanım kod dönüştürmesine izin ver", "LabelAll": "Tümü", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 271be38b5..1a3aa1e4d 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -753,7 +753,7 @@ "LabelSubtitleDownloaders": "字幕下载器:", "LabelSubtitleFormatHelp": "例如:SRT", "LabelSubtitlePlaybackMode": "字幕模式:", - "LabelSubtitles": "字幕:", + "LabelSubtitles": "字幕", "LabelSupportedMediaTypes": "支持的媒体类型:", "LabelTVHomeScreen": "TV 模式主屏幕:", "LabelTag": "标签:", @@ -1327,7 +1327,7 @@ "HeaderFavoriteVideos": "最爱的视频", "HeaderVideoType": "视频类型", "Items": "项目", - "LabelAudio": "音频:", + "LabelAudio": "音频", "LabelServerName": "服务器名称:", "LabelTranscodePath": "转码路径:", "LabelTranscodes": "转码:", @@ -1363,7 +1363,7 @@ "LabelUserLoginAttemptsBeforeLockout": "用户被封禁前可尝试的次数:", "DashboardVersionNumber": "版本:{0}", "DashboardServerName": "服务器:{0}", - "LabelVideo": "视频:", + "LabelVideo": "视频", "LabelWeb": "网站:", "LeaveBlankToNotSetAPassword": "您可以将此字段留空以设置空密码。", "LinksValue": "链接:{0}", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 59ab7fcdd..718cb4d57 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -915,7 +915,7 @@ "LabelAppNameExample": "例如: Sickbeard, Sonarr", "LabelArtists": "藝人:", "LabelArtistsHelp": "分開多重使用 ;", - "LabelAudio": "音頻:", + "LabelAudio": "音頻", "LabelAuthProvider": "認證提供者:", "LabelAutomaticallyRefreshInternetMetadataEvery": "從網路自動刷新數據:", "LabelBindToLocalNetworkAddress": "聯結本地網絡地址:", @@ -1044,7 +1044,7 @@ "LabelExtractChaptersDuringLibraryScan": "於媒體庫掃描時擷取章節圖片", "LabelHttpsPort": "本地 HTTPS 端口:", "LabelFailed": "失敗", - "LabelSubtitles": "字幕:", + "LabelSubtitles": "字幕", "LabelSupportedMediaTypes": "支援的媒體類型:", "LabelTextBackgroundColor": "文字背景顏色:", "LabelTextColor": "文字顏色:", @@ -1060,7 +1060,7 @@ "LabelTypeText": "文本", "LabelUsername": "使用者名稱:", "DashboardOperatingSystem": "作業系統:{0}", - "LabelVideo": "影片:", + "LabelVideo": "影片", "LabelVideoCodec": "影片編碼:", "LabelYear": "年:", "LatestFromLibrary": "最新 {0}", From 37ebb772e8443c602f61d7f8746b98aa008789e5 Mon Sep 17 00:00:00 2001 From: Fernando Date: Thu, 26 Mar 2020 19:25:34 +0000 Subject: [PATCH 06/16] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index 3d56ff56d..f99c06410 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -5,7 +5,7 @@ "AddToCollection": "Añadir a la colección", "AddToPlaylist": "Añadir a la lista de reproducción", "AddedOnValue": "Añadido {0}", - "AdditionalNotificationServices": "Visite el catálogo de complementos para instalar servicios de notificación adicionales.", + "AdditionalNotificationServices": "Visite el catálogo de extensiones para instalar servicios de notificación adicionales.", "Albums": "Álbumes", "Alerts": "Alertas", "All": "Todo", @@ -40,7 +40,7 @@ "Box": "Caja", "BoxRear": "Caja (trasera)", "Browse": "Explorar", - "BrowsePluginCatalogMessage": "Navegar el catalogo de complementos para ver los complementos disponibles.", + "BrowsePluginCatalogMessage": "Explore el catálogo de extensiones para ver las extensiones disponibles.", "ButtonAdd": "Añadir", "ButtonAddMediaLibrary": "Añadir biblioteca de medios", "ButtonAddScheduledTaskTrigger": "Agregar Activador", @@ -818,16 +818,16 @@ "MessageItemSaved": "Elemento grabado.", "MessageItemsAdded": "Ítems añadidos.", "MessageLeaveEmptyToInherit": "Dejar en blanco para heredar la configuración del elemento padre, o el valor global por defecto.", - "MessageNoAvailablePlugins": "No hay complementos disponibles.", + "MessageNoAvailablePlugins": "No hay extensiones disponibles.", "MessageNoMovieSuggestionsAvailable": "No hay sugerencias de películas disponibles. Comience ver y calificar sus películas y vuelva para ver las recomendaciones.", - "MessageNoPluginsInstalled": "No tiene complementos instalados.", + "MessageNoPluginsInstalled": "No hay extensiones instaladas.", "MessageNoTrailersFound": "No se han encontrado tráilers. Instala el canal de tráilers para mejorar su experiencia añadiendo una biblioteca de tráilers por internet.", "MessageNothingHere": "Nada aquí.", "MessagePasswordResetForUsers": "Se ha restablecido las contraseñas a los siguientes usuarios. Ahora pueden iniciar sesión con los códigos PIN que usaron para el restablecimiento.", "MessagePleaseEnsureInternetMetadata": "Asegúrate de que la descarga de etiquetas desde internet está activada.", "MessagePleaseWait": "Por favor, espere.", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento inicia sesión en tu servidor local directamente.", - "MessagePluginInstallDisclaimer": "Los complementos creados por los miembros de la comunidad de Jellyfin son una buena forma de mejorar tu experiencia Jellyfin con características adicionales y otros beneficios. Antes de instalarlos considera los efectos que pueden tener en tu servidor Jellyfin, como escaneos de la biblioteca más largos, procesado en segundo plano adicional y una reducción de la estabilidad del sistema.", + "MessagePluginInstallDisclaimer": "Las extensiones creadas por los miembros de la comunidad de Jellyfin son una buena forma de mejorar tu experiencia con características adicionales y otros beneficios. Antes de instalarlos considera los efectos que pueden tener en tu servidor Jellyfin, como escaneos de la biblioteca más largos, procesado en segundo plano adicional y una reducción de la estabilidad del sistema.", "MessageReenableUser": "Mira abajo para reactivarlo", "MessageSettingsSaved": "Ajustes guardados.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Se eliminarán las siguientes ubicaciones de medios de tu biblioteca:", @@ -1138,7 +1138,7 @@ "TabMovies": "Películas", "TabMusic": "Música", "TabMusicVideos": "Videos musicales", - "TabMyPlugins": "Mis complementos", + "TabMyPlugins": "Mis extensiones", "TabNetworks": "Cadenas", "TabNfoSettings": "Ajustes de NFO", "TabNotifications": "Notificaciones", @@ -1418,7 +1418,7 @@ "TV": "Televisión", "TabInfo": "Info", "TabLogs": "Registros", - "TabPlugins": "Complementos", + "TabPlugins": "Extensiones", "TabSeries": "Series", "TabTrailers": "Tráilers", "TagsValue": "Etiquetas: {0}", From 499f9835b48fa27847f368dd0c6f5737363a7644 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 26 Mar 2020 21:04:37 +0100 Subject: [PATCH 07/16] Remove Last Played label on details page --- src/assets/css/librarybrowser.css | 3 ++- src/controllers/itemdetailpage.js | 13 ------------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index b599ddde3..4e3f36921 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -1140,11 +1140,12 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { } .trackSelections .selectContainer { - margin: 0 0 0.15em !important; + margin: 0 0 0.3em !important; } .detailsGroupItem .label, .trackSelections .selectContainer .selectLabel { + cursor: default; flex-grow: 0; flex-shrink: 0; flex-basis: 6.25em; diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 3d74ab432..23a672751 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -703,18 +703,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } } - function renderUserInfo(page, item) { - var lastPlayedElement = page.querySelector(".itemLastPlayed"); - - if (item.UserData && item.UserData.LastPlayedDate) { - lastPlayedElement.classList.remove("hide"); - var datePlayed = datetime.parseISO8601Date(item.UserData.LastPlayedDate); - lastPlayedElement.innerHTML = globalize.translate("DatePlayed") + ": " + datetime.toLocaleDateString(datePlayed) + " " + datetime.getDisplayTime(datePlayed); - } else { - lastPlayedElement.classList.add("hide"); - } - } - function renderLinks(linksElem, item) { var html = []; @@ -1123,7 +1111,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti reloadUserDataButtons(page, item); renderLinks(externalLinksElem, item); - renderUserInfo(page, item); renderTags(page, item); renderSeriesAirTime(page, item, isStatic); } From af3176af7c31e50bb94c6a12337b6966b8ff1a6a Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 26 Mar 2020 21:13:26 +0100 Subject: [PATCH 08/16] Fix oversized track selector on details page --- src/assets/css/librarybrowser.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 4e3f36921..965adec94 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -1159,6 +1159,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { .trackSelections .selectContainer .detailTrackSelect { font-size: inherit; padding: 0; + overflow: hidden; } .trackSelections .selectContainer .selectArrowContainer .selectArrow { From f3b5c804a323a72803824e673936f3b72447b90b Mon Sep 17 00:00:00 2001 From: Cameron Cordes Date: Thu, 19 Mar 2020 21:20:47 -0400 Subject: [PATCH 09/16] Migrate some easy components to ES6 --- package.json | 22 +- src/components/filedownloader.js | 28 +- src/components/filesystem.js | 29 +-- src/components/input/keyboardnavigation.js | 290 ++++++++++----------- src/components/sanitizefilename.js | 154 ++++++----- 5 files changed, 256 insertions(+), 267 deletions(-) diff --git a/package.json b/package.json index 2de78b821..9bf666a74 100644 --- a/package.json +++ b/package.json @@ -70,11 +70,23 @@ "whatwg-fetch": "^3.0.0" }, "babel": { - "presets": ["@babel/preset-env"], - "overrides": [{ - "test": ["src/components/cardbuilder/cardBuilder.js"], - "plugins": ["@babel/plugin-transform-modules-amd"] - }] + "presets": [ + "@babel/preset-env" + ], + "overrides": [ + { + "test": [ + "src/components/cardbuilder/cardBuilder.js", + "src/components/filedownloader.js", + "src/components/filesystem.js", + "src/components/input/keyboardnavigation.js", + "src/components/sanatizefilename.js" + ], + "plugins": [ + "@babel/plugin-transform-modules-amd" + ] + } + ] }, "browserslist": [ "last 2 Firefox versions", diff --git a/src/components/filedownloader.js b/src/components/filedownloader.js index 08b6176a0..d64e48967 100644 --- a/src/components/filedownloader.js +++ b/src/components/filedownloader.js @@ -1,18 +1,14 @@ -define(['multi-download'], function (multiDownload) { - 'use strict'; +import multiDownload from "multi-download" - return { - download: function (items) { +export function download(items) { - if (window.NativeShell) { - items.map(function (item) { - window.NativeShell.downloadFile(item.url); - }); - } else { - multiDownload(items.map(function (item) { - return item.url; - })); - } - } - }; -}); + if (window.NativeShell) { + items.map(function (item) { + window.NativeShell.downloadFile(item.url); + }); + } else { + multiDownload(items.map(function (item) { + return item.url; + })); + } +} diff --git a/src/components/filesystem.js b/src/components/filesystem.js index aac697415..3c14020d1 100644 --- a/src/components/filesystem.js +++ b/src/components/filesystem.js @@ -1,18 +1,13 @@ -define([], function () { - 'use strict'; +export function fileExists(path) { + if (window.NativeShell && window.NativeShell.FileSystem) { + return window.NativeShell.FileSystem.fileExists(path); + } + return Promise.reject(); +} - return { - fileExists: function (path) { - if (window.NativeShell && window.NativeShell.FileSystem) { - return window.NativeShell.FileSystem.fileExists(path); - } - return Promise.reject(); - }, - directoryExists: function (path) { - if (window.NativeShell && window.NativeShell.FileSystem) { - return window.NativeShell.FileSystem.directoryExists(path); - } - return Promise.reject(); - } - }; -}); +export function directoryExists(path) { + if (window.NativeShell && window.NativeShell.FileSystem) { + return window.NativeShell.FileSystem.directoryExists(path); + } + return Promise.reject(); +} diff --git a/src/components/input/keyboardnavigation.js b/src/components/input/keyboardnavigation.js index 0359ee743..bdcb73317 100644 --- a/src/components/input/keyboardnavigation.js +++ b/src/components/input/keyboardnavigation.js @@ -1,165 +1,157 @@ -define(["inputManager", "layoutManager"], function (inputManager, layoutManager) { - "use strict"; +import inputManager from "inputManager"; +import layoutManager from "layoutManager"; - /** - * Key name mapping. - */ - // Add more to support old browsers - var KeyNames = { - 13: "Enter", - 19: "Pause", - 27: "Escape", - 32: "Space", - 37: "ArrowLeft", - 38: "ArrowUp", - 39: "ArrowRight", - 40: "ArrowDown", - // MediaRewind (Tizen/WebOS) - 412: "MediaRewind", - // MediaStop (Tizen/WebOS) - 413: "MediaStop", - // MediaPlay (Tizen/WebOS) - 415: "MediaPlay", - // MediaFastForward (Tizen/WebOS) - 417: "MediaFastForward", - // Back (WebOS) - 461: "Back", - // Back (Tizen) - 10009: "Back", - // MediaTrackPrevious (Tizen) - 10232: "MediaTrackPrevious", - // MediaTrackNext (Tizen) - 10233: "MediaTrackNext", - // MediaPlayPause (Tizen) - 10252: "MediaPlayPause" - }; +/** + * Key name mapping. + */ +const KeyNames = { + 13: "Enter", + 19: "Pause", + 27: "Escape", + 32: "Space", + 37: "ArrowLeft", + 38: "ArrowUp", + 39: "ArrowRight", + 40: "ArrowDown", + // MediaRewind (Tizen/WebOS) + 412: "MediaRewind", + // MediaStop (Tizen/WebOS) + 413: "MediaStop", + // MediaPlay (Tizen/WebOS) + 415: "MediaPlay", + // MediaFastForward (Tizen/WebOS) + 417: "MediaFastForward", + // Back (WebOS) + 461: "Back", + // Back (Tizen) + 10009: "Back", + // MediaTrackPrevious (Tizen) + 10232: "MediaTrackPrevious", + // MediaTrackNext (Tizen) + 10233: "MediaTrackNext", + // MediaPlayPause (Tizen) + 10252: "MediaPlayPause" +}; - /** - * Keys used for keyboard navigation. - */ - var NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]; +/** + * Keys used for keyboard navigation. + */ +const NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]; - var hasFieldKey = false; - try { - hasFieldKey = "key" in new KeyboardEvent("keydown"); - } catch (e) { - console.error("error checking 'key' field"); +let hasFieldKey = false; +try { + hasFieldKey = "key" in new KeyboardEvent("keydown"); +} catch (e) { + console.error("error checking 'key' field"); +} + +if (!hasFieldKey) { + // Add [a..z] + for (let i = 65; i <= 90; i++) { + KeyNames[i] = String.fromCharCode(i).toLowerCase(); } +} - if (!hasFieldKey) { - // Add [a..z] - for (var i = 65; i <= 90; i++) { - KeyNames[i] = String.fromCharCode(i).toLowerCase(); +/** + * Returns key name from event. + * + * @param {KeyboardEvent} event keyboard event + * @return {string} key name + */ +export function getKeyName(event) { + return KeyNames[event.keyCode] || event.key; +} + +/** + * Returns _true_ if key is used for navigation. + * + * @param {string} key name + * @return {boolean} _true_ if key is used for navigation + */ +export function isNavigationKey(key) { + return NavigationKeys.indexOf(key) != -1; +} + +export function enable() { + document.addEventListener("keydown", function (e) { + const key = getKeyName(e); + + // Ignore navigation keys for non-TV + if (!layoutManager.tv && isNavigationKey(key)) { + return; } - } - /** - * Returns key name from event. - * - * @param {KeyboardEvent} keyboard event - * @return {string} key name - */ - function getKeyName(event) { - return KeyNames[event.keyCode] || event.key; - } + let capture = true; - /** - * Returns _true_ if key is used for navigation. - * - * @param {string} key name - * @return {boolean} _true_ if key is used for navigation - */ - function isNavigationKey(key) { - return NavigationKeys.indexOf(key) != -1; - } + switch (key) { + case "ArrowLeft": + inputManager.handle("left"); + break; + case "ArrowUp": + inputManager.handle("up"); + break; + case "ArrowRight": + inputManager.handle("right"); + break; + case "ArrowDown": + inputManager.handle("down"); + break; - function enable() { - document.addEventListener("keydown", function (e) { - var key = getKeyName(e); + case "Back": + inputManager.handle("back"); + break; - // Ignore navigation keys for non-TV - if (!layoutManager.tv && isNavigationKey(key)) { - return; - } - - var capture = true; - - switch (key) { - case "ArrowLeft": - inputManager.handle("left"); - break; - case "ArrowUp": - inputManager.handle("up"); - break; - case "ArrowRight": - inputManager.handle("right"); - break; - case "ArrowDown": - inputManager.handle("down"); - break; - - case "Back": + case "Escape": + if (layoutManager.tv) { inputManager.handle("back"); - break; - - case "Escape": - if (layoutManager.tv) { - inputManager.handle("back"); - } else { - capture = false; - } - break; - - case "MediaPlay": - inputManager.handle("play"); - break; - case "Pause": - inputManager.handle("pause"); - break; - case "MediaPlayPause": - inputManager.handle("playpause"); - break; - case "MediaRewind": - inputManager.handle("rewind"); - break; - case "MediaFastForward": - inputManager.handle("fastforward"); - break; - case "MediaStop": - inputManager.handle("stop"); - break; - case "MediaTrackPrevious": - inputManager.handle("previoustrack"); - break; - case "MediaTrackNext": - inputManager.handle("nexttrack"); - break; - - default: + } else { capture = false; - } + } + break; - if (capture) { - console.debug("disabling default event handling"); - e.preventDefault(); - } - }); - } + case "MediaPlay": + inputManager.handle("play"); + break; + case "Pause": + inputManager.handle("pause"); + break; + case "MediaPlayPause": + inputManager.handle("playpause"); + break; + case "MediaRewind": + inputManager.handle("rewind"); + break; + case "MediaFastForward": + inputManager.handle("fastforward"); + break; + case "MediaStop": + inputManager.handle("stop"); + break; + case "MediaTrackPrevious": + inputManager.handle("previoustrack"); + break; + case "MediaTrackNext": + inputManager.handle("nexttrack"); + break; - // Gamepad initialisation. No script is required if no gamepads are present at init time, saving a bit of resources. - // Whenever the gamepad is connected, we hand all the control of the gamepad to gamepadtokey.js by removing the event handler - function attachGamepadScript(e) { - console.log("Gamepad connected! Attaching gamepadtokey.js script"); - window.removeEventListener("gamepadconnected", attachGamepadScript); - require(["components/input/gamepadtokey"]); - } + default: + capture = false; + } - // No need to check for gamepads manually at load time, the eventhandler will be fired for that - window.addEventListener("gamepadconnected", attachGamepadScript); + if (capture) { + console.debug("disabling default event handling"); + e.preventDefault(); + } + }); +} - return { - enable: enable, - getKeyName: getKeyName, - isNavigationKey: isNavigationKey - }; -}); +// Gamepad initialisation. No script is required if no gamepads are present at init time, saving a bit of resources. +// Whenever the gamepad is connected, we hand all the control of the gamepad to gamepadtokey.js by removing the event handler +function attachGamepadScript(e) { + console.log("Gamepad connected! Attaching gamepadtokey.js script"); + window.removeEventListener("gamepadconnected", attachGamepadScript); + require(["components/input/gamepadtokey"]); +} + +// No need to check for gamepads manually at load time, the eventhandler will be fired for that +window.addEventListener("gamepadconnected", attachGamepadScript); diff --git a/src/components/sanitizefilename.js b/src/components/sanitizefilename.js index f53ce613f..adfb852e1 100644 --- a/src/components/sanitizefilename.js +++ b/src/components/sanitizefilename.js @@ -1,96 +1,90 @@ // From https://github.com/parshap/node-sanitize-filename -define([], function () { - 'use strict'; +const illegalRe = /[\/\?<>\\:\*\|":]/g; +// eslint-disable-next-line no-control-regex +const controlRe = /[\x00-\x1f\x80-\x9f]/g; +const reservedRe = /^\.+$/; +const windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i; +const windowsTrailingRe = /[\. ]+$/; - var illegalRe = /[\/\?<>\\:\*\|":]/g; - // eslint-disable-next-line no-control-regex - var controlRe = /[\x00-\x1f\x80-\x9f]/g; - var reservedRe = /^\.+$/; - var windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i; - var windowsTrailingRe = /[\. ]+$/; +function isHighSurrogate(codePoint) { + return codePoint >= 0xd800 && codePoint <= 0xdbff; +} - function isHighSurrogate(codePoint) { - return codePoint >= 0xd800 && codePoint <= 0xdbff; +function isLowSurrogate(codePoint) { + return codePoint >= 0xdc00 && codePoint <= 0xdfff; +} + +function getByteLength(string) { + if (typeof string !== "string") { + throw new Error("Input must be string"); } - function isLowSurrogate(codePoint) { - return codePoint >= 0xdc00 && codePoint <= 0xdfff; - } - - function getByteLength(string) { - if (typeof string !== "string") { - throw new Error("Input must be string"); - } - - var charLength = string.length; - var byteLength = 0; - var codePoint = null; - var prevCodePoint = null; - for (var i = 0; i < charLength; i++) { - codePoint = string.charCodeAt(i); - // handle 4-byte non-BMP chars - // low surrogate - if (isLowSurrogate(codePoint)) { - // when parsing previous hi-surrogate, 3 is added to byteLength - if (prevCodePoint != null && isHighSurrogate(prevCodePoint)) { - byteLength += 1; - } else { - byteLength += 3; - } - } else if (codePoint <= 0x7f) { + const charLength = string.length; + let byteLength = 0; + let codePoint = null; + let prevCodePoint = null; + for (let i = 0; i < charLength; i++) { + codePoint = string.charCodeAt(i); + // handle 4-byte non-BMP chars + // low surrogate + if (isLowSurrogate(codePoint)) { + // when parsing previous hi-surrogate, 3 is added to byteLength + if (prevCodePoint != null && isHighSurrogate(prevCodePoint)) { byteLength += 1; - } else if (codePoint >= 0x80 && codePoint <= 0x7ff) { - byteLength += 2; - } else if (codePoint >= 0x800 && codePoint <= 0xffff) { + } else { byteLength += 3; } - prevCodePoint = codePoint; + } else if (codePoint <= 0x7f) { + byteLength += 1; + } else if (codePoint >= 0x80 && codePoint <= 0x7ff) { + byteLength += 2; + } else if (codePoint >= 0x800 && codePoint <= 0xffff) { + byteLength += 3; } - - return byteLength; + prevCodePoint = codePoint; } - function truncate(string, byteLength) { - if (typeof string !== "string") { - throw new Error("Input must be string"); - } + return byteLength; +} - var charLength = string.length; - var curByteLength = 0; - var codePoint; - var segment; - - for (var i = 0; i < charLength; i += 1) { - codePoint = string.charCodeAt(i); - segment = string[i]; - - if (isHighSurrogate(codePoint) && isLowSurrogate(string.charCodeAt(i + 1))) { - i += 1; - segment += string[i]; - } - - curByteLength += getByteLength(segment); - - if (curByteLength === byteLength) { - return string.slice(0, i + 1); - } else if (curByteLength > byteLength) { - return string.slice(0, i - segment.length + 1); - } - } - - return string; +function truncate(string, byteLength) { + if (typeof string !== "string") { + throw new Error("Input must be string"); } - return { - sanitize: function (input, replacement) { - var sanitized = input - .replace(illegalRe, replacement) - .replace(controlRe, replacement) - .replace(reservedRe, replacement) - .replace(windowsReservedRe, replacement) - .replace(windowsTrailingRe, replacement); - return truncate(sanitized, 255); + const charLength = string.length; + let curByteLength = 0; + let codePoint; + let segment; + + for (let i = 0; i < charLength; i += 1) { + codePoint = string.charCodeAt(i); + segment = string[i]; + + if (isHighSurrogate(codePoint) && isLowSurrogate(string.charCodeAt(i + 1))) { + i += 1; + segment += string[i]; } - }; -}); + + curByteLength += getByteLength(segment); + + if (curByteLength === byteLength) { + return string.slice(0, i + 1); + } else if (curByteLength > byteLength) { + return string.slice(0, i - segment.length + 1); + } + } + + return string; +} + +export function sanitize(input, replacement) { + const sanitized = input + .replace(illegalRe, replacement) + .replace(controlRe, replacement) + .replace(reservedRe, replacement) + .replace(windowsReservedRe, replacement) + .replace(windowsTrailingRe, replacement); + return truncate(sanitized, 255); +} From 9f18abb938b1207034f6a27525d43fa127ee9bce Mon Sep 17 00:00:00 2001 From: Cameron Cordes Date: Thu, 26 Mar 2020 18:53:10 -0400 Subject: [PATCH 10/16] Fix package.json formatting --- package.json | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 9bf666a74..81dd250ab 100644 --- a/package.json +++ b/package.json @@ -70,23 +70,17 @@ "whatwg-fetch": "^3.0.0" }, "babel": { - "presets": [ - "@babel/preset-env" - ], - "overrides": [ - { + "presets": ["@babel/preset-env"], + "overrides": [{ "test": [ - "src/components/cardbuilder/cardBuilder.js", - "src/components/filedownloader.js", - "src/components/filesystem.js", - "src/components/input/keyboardnavigation.js", - "src/components/sanatizefilename.js" + "src/components/cardbuilder/cardBuilder.js", + "src/components/filedownloader.js", + "src/components/filesystem.js", + "src/components/input/keyboardnavigation.js", + "src/components/sanatizefilename.js" ], - "plugins": [ - "@babel/plugin-transform-modules-amd" - ] - } - ] + "plugins": ["@babel/plugin-transform-modules-amd"] + }] }, "browserslist": [ "last 2 Firefox versions", From b9dbad421a4214ee70586959b9a4f76451c9e0de Mon Sep 17 00:00:00 2001 From: Danilo Date: Fri, 27 Mar 2020 00:13:50 +0000 Subject: [PATCH 11/16] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 116 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 112 insertions(+), 4 deletions(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index ecd6ccb07..8457cb9f8 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -340,7 +340,7 @@ "LabelHttpsPort": "Número da porta HTTPS local:", "LabelHomeScreenSectionValue": "Secção {0} do Painel Principal:", "LabelHomeNetworkQuality": "Qualidade da rede interna:", - "LabelHardwareAccelerationTypeHelp": "Esta funcionalidade é experimental e está disponível apenas em sistemas suportados.", + "LabelHardwareAccelerationTypeHelp": "A aceleração de hardware requer configuração adicional.", "LabelHardwareAccelerationType": "Aceleração por hardware:", "LabelEncoderPreset": "Predefinição para codificação H264:", "LabelH264Crf": "CRF para codificação H264:", @@ -377,7 +377,7 @@ "LabelEnableDlnaClientDiscoveryInterval": "Intervalo para descoberta de clientes (segundos)", "LabelEnableBlastAliveMessagesHelp": "Activar esta opção se o servidor não for convenientemente detectado por outros dispositivos UPnP na rede.", "LabelEnableBlastAliveMessages": "Enviar mensagens de reconhecimento", - "LabelEnableAutomaticPortMapHelp": "Tenta correponder automaticamente a porta pública para a porta local através de UPnP. Isto poderá não funcionar em alguns modelos de routers.", + "LabelEnableAutomaticPortMapHelp": "Tenta corresponder automaticamente a porta pública para a porta local através de UPnP. Isto poderá não funcionar em alguns modelos de roteadores. As alterações não serão até reinicialização do servidor.", "LabelEnableAutomaticPortMap": "Activar a correspondência automática de portas", "LabelEmbedAlbumArtDidlHelp": "Alguns dispositivos preferem este método para obter a capa do álbum. Outros pode não ser capazes de reproduzir com esta opção activada.", "LabelEmbedAlbumArtDidl": "Incorporar a capa do álbum no DIDL", @@ -1092,7 +1092,7 @@ "AuthProviderHelp": "Seleccione um mecanismo de autenticação a ser utilizado para validar as credenciais deste utilizador.", "Audio": "Áudio", "AttributeNew": "Novo", - "AspectRatio": "Formato", + "AspectRatio": "Proporção da tela", "Ascending": "Crescente", "Art": "Capa", "AroundTime": "Por volta das {0}", @@ -1218,5 +1218,113 @@ "LabelUserLoginAttemptsBeforeLockout": "Número de tentativas de login falhadas antes do bloqueio do utilizador:", "LabelTrackNumber": "Número da faixa:", "LabelSportsCategories": "Categorias de Desportos:", - "Yesterday": "Ontem" + "Yesterday": "Ontem", + "MusicVideo": "Vídeo de música", + "MusicLibraryHelp": "Reveja o {0} guia de nomes de músicas {1}.", + "MusicArtist": "Artista musical", + "MusicAlbum": "Álbum de música", + "MovieLibraryHelp": "Reveja o {0} guia de nomeação de filmes {1}.", + "MoveRight": "Mover para a direita", + "MoveLeft": "Mova à esquerda", + "MoreMediaInfo": "Informações sobre mídia", + "MoreFromValue": "Mais de {0}", + "MediaInfoRefFrames": "Quadros de referência", + "MediaInfoContainer": "Container", + "MediaInfoAnamorphic": "Anamorphic", + "LabelVideoResolution": "Resolução do vídeo:", + "LabelTypeMetadataDownloaders": "{0} metadata downloaders:", + "LabelTranscodePath": "Caminho da transcodificação:", + "OnlyImageFormats": "Somente formatos de imagem (VOBSUB, PGS, SUB, etc)", + "OnlyForcedSubtitlesHelp": "Apenas as legendas marcadas como forçadas serão carregadas.", + "OnlyForcedSubtitles": "Apenas legendas forçadas", + "Off": "Desligar", + "NumLocationsValue": "{0} pastas", + "Normal": "Normal", + "None": "Nenhum", + "NoSubtitlesHelp": "As legendas não serão carregadas por padrão. Eles ainda podem ser ativados manualmente durante a reprodução.", + "NoSubtitles": "Sem legendas", + "NoSubtitleSearchResultsFound": "Nenhum resultado encontrado.", + "NoNewDevicesFound": "Não foram encontrados novos dispositivos. Para adicionar um novo sintonizador, feche esta caixa de diálogo e insira as informações do dispositivo manualmente.", + "NoCreatedLibraries": "Parece que você ainda não criou nenhuma biblioteca. {0} Deseja criar um agora? {1}", + "No": "Não", + "Mobile": "Celular", + "MetadataSettingChangeHelp": "A alteração das configurações de metadados afetará o novo conteúdo adicionado a partir de agora. Para atualizar o conteúdo existente, abra a tela de detalhes e clique no botão Atualizar ou execute atualizações em massa usando o gerenciador de metadados.", + "MetadataManager": "Gestor de metadados", + "Metadata": "Metadados", + "MessageYouHaveVersionInstalled": "Você possui a versão {0} atualmente instalada.", + "MessageUnsetContentHelp": "O conteúdo será exibido como pastas simples. Para obter melhores resultados, use o gerenciador de metadados para definir os tipos de conteúdo das subpastas.", + "MessageSettingsSaved": "Configurações salvas.", + "MessagePleaseWait": "Por favor, espere. Isso pode levar um minuto.", + "MessagePlayAccessRestricted": "A reprodução deste conteúdo está atualmente restrita. Entre em contato com o administrador do servidor para obter mais informações.", + "MessageNoServersAvailable": "Nenhum servidor foi encontrado usando a descoberta automática de servidores.", + "MessageNoCollectionsAvailable": "As coleções permitem que você desfrute de agrupamentos personalizados de filmes, séries e álbuns. Clique no botão + para começar a criar coleções.", + "MessageConfirmAppExit": "Você quer sair?", + "MediaInfoLayout": "Layout", + "MediaInfoLanguage": "Língua", + "MediaInfoInterlaced": "Entrelaçada", + "MediaInfoFramerate": "Taxa de quadros", + "MediaInfoForced": "Forçar", + "MediaInfoExternal": "Externo", + "MediaInfoDefault": "Padrão", + "MediaInfoCodecTag": "Codec tag", + "MediaInfoCodec": "Codec", + "MediaInfoBitrate": "Taxa de bits", + "MediaInfoBitDepth": "Profundidade de bits", + "MediaInfoAspectRatio": "Proporção da tela", + "ManageRecording": "Gerenciar gravações", + "Logo": "Logo", + "List": "Lista", + "LinksValue": "Links: {0}", + "Like": "Gostei", + "LeaveBlankToNotSetAPassword": "Você pode deixar esse campo em branco para definir nenhuma senha.", + "LearnHowYouCanContribute": "Aprenda como você pode contribuir.", + "LaunchWebAppOnStartupHelp": "Open the web client in your default web browser when the server initially starts. This will not occur when using the restart server function.", + "LaunchWebAppOnStartup": "Inicie a interface da web ao iniciar o servidor", + "Large": "Amplo", + "LanNetworksHelp": "Comma separated list of IP addresses or IP/netmask entries for networks that will be considered on local network when enforcing bandwidth restrictions. If set, all other IP addresses will be considered to be on the external network and will be subject to the external bandwidth restrictions. If left blank, only the server's subnet is considered to be on the local network.", + "LabelffmpegPathHelp": "O caminho para o arquivo do aplicativo ffmpeg ou pasta que contém o ffmpeg.", + "LabelffmpegPath": "FFmpeg caminho:", + "LabelYear": "Ano:", + "LabelXDlnaDoc": "X-DLNA doc:", + "LabelXDlnaCap": "X-DLNA cap:", + "LabelWeb": "Web:", + "LabelVideoCodec": "Vídeo: codec:", + "LabelVideoBitrate": "Vídeo taxa de bits:", + "LabelVideo": "Vídeo:", + "DashboardArchitecture": "Arquitetura: {0}", + "DashboardServerName": "Servidor: {0}", + "DashboardVersionNumber": "Versão: {0}", + "LabelVersion": "Versão:", + "LabelVaapiDeviceHelp": "Este é o nó de renderização usado para aceleração de hardware.", + "LabelVaapiDevice": "VA API Dispositivo:", + "LabelUserAgent": "Agente de usuário", + "LabelTranscodes": "Transcodificação:", + "LabelTranscodingFramerate": "Transcodificação frame por segundo:", + "LabelTranscodingProgress": "Progresso da transcodificação:", + "LabelTitle": "Título:", + "LabelTheme": "Tema:", + "LabelTextColor": "Cor do texto:", + "LabelTextBackgroundColor": "Cor do plano de fundo do texto:", + "LabelTag": "Tag:", + "LabelTVHomeScreen": "Tela inicial do modo TV:", + "LabelSubtitles": "Legendas:", + "LabelSubtitleDownloaders": "Downloaders de legendas:", + "LabelStreamType": "Tipo de fluxo:", + "LabelSpecialSeasonsDisplayName": "Nome de exibição da temporada especial:", + "LabelSoundEffects": "Efeitos sonoros:", + "LabelSortTitle": "Classificar título:", + "LabelSortOrder": "Ordem da Ordenação", + "LabelSortBy": "Ordenar por:", + "LabelSkin": "Skin:", + "EnableFastImageFadeInHelp": "Habilite uma animação mais rápida para imagens carregadas", + "EnableFastImageFadeIn": "Efeito de imagem fade-in rápido", + "LabelRemoteClientBitrateLimitHelp": "Um limite opcional de taxa de bits por fluxo para todos os dispositivos fora da rede. Isso é útil para impedir que os dispositivos solicitem uma taxa de bits mais alta do que a sua conexão à Internet pode suportar. Isso pode resultar no aumento da carga da CPU no servidor para transcodificar vídeos em tempo real para uma taxa de bits mais baixa.", + "LabelPlayerDimensions": "Dimensões do reprodutor:", + "LabelParentNumber": "Número pai:", + "LabelMetadataSavers": "Economizadores de metadados:", + "LabelDroppedFrames": "Quadros caídos:", + "LabelCorruptedFrames": "Quadros corrompidos:", + "LabelAudioBitDepth": "Profundidade do bit de áudio:", + "ClientSettings": "Configurações do Cliente", + "AllowFfmpegThrottlingHelp": "Quando uma transcodificação ou remux se aproximar da posição atual de reprodução, pause o processo para que consuma menos recursos. Isso é mais útil ao assistir sem procurar com frequência. Desative isso se você tiver problemas de reprodução." } From a02fe56a871b3ad43df44e5bb6c74e8d5ce5c085 Mon Sep 17 00:00:00 2001 From: Danilo Date: Fri, 27 Mar 2020 00:34:22 +0000 Subject: [PATCH 12/16] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index 8457cb9f8..a66f98916 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -1326,5 +1326,6 @@ "LabelCorruptedFrames": "Quadros corrompidos:", "LabelAudioBitDepth": "Profundidade do bit de áudio:", "ClientSettings": "Configurações do Cliente", - "AllowFfmpegThrottlingHelp": "Quando uma transcodificação ou remux se aproximar da posição atual de reprodução, pause o processo para que consuma menos recursos. Isso é mais útil ao assistir sem procurar com frequência. Desative isso se você tiver problemas de reprodução." + "AllowFfmpegThrottlingHelp": "Quando uma transcodificação ou remux se aproximar da posição atual de reprodução, pause o processo para que consuma menos recursos. Isso é mais útil ao assistir sem procurar com frequência. Desative isso se você tiver problemas de reprodução.", + "MySubtitles": "Minhas legendas" } From 63a05df3a8dd9a192819b5fede49d51e500bff64 Mon Sep 17 00:00:00 2001 From: Danilo Date: Fri, 27 Mar 2020 00:34:29 +0000 Subject: [PATCH 13/16] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index a66f98916..e9a0f2dd0 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -1327,5 +1327,6 @@ "LabelAudioBitDepth": "Profundidade do bit de áudio:", "ClientSettings": "Configurações do Cliente", "AllowFfmpegThrottlingHelp": "Quando uma transcodificação ou remux se aproximar da posição atual de reprodução, pause o processo para que consuma menos recursos. Isso é mais útil ao assistir sem procurar com frequência. Desative isso se você tiver problemas de reprodução.", - "MySubtitles": "Minhas legendas" + "MySubtitles": "Minhas legendas", + "Name": "Nome" } From 000f6e776d481b9af69a674f6a965c0b40958ee2 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 27 Mar 2020 15:52:50 +0300 Subject: [PATCH 14/16] Fix dom addEventListener/removeEventListener for case of undefined options --- src/components/dom.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/dom.js b/src/components/dom.js index cc37e2fc5..b91e5b168 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -74,17 +74,17 @@ define([], function () { } function addEventListenerWithOptions(target, type, handler, options) { - var optionsOrCapture = options; + var optionsOrCapture = options || {}; if (!supportsCaptureOption) { - optionsOrCapture = options.capture; + optionsOrCapture = optionsOrCapture.capture; } target.addEventListener(type, handler, optionsOrCapture); } function removeEventListenerWithOptions(target, type, handler, options) { - var optionsOrCapture = options; + var optionsOrCapture = options || {}; if (!supportsCaptureOption) { - optionsOrCapture = options.capture; + optionsOrCapture = optionsOrCapture.capture; } target.removeEventListener(type, handler, optionsOrCapture); } From 5dfc5d6c2be8cc7957af11dae6dc0951691be033 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 29 Mar 2020 12:48:55 +0200 Subject: [PATCH 15/16] Fix admin drawer logo showing up everywhere --- src/assets/css/dashboard.css | 6 +++++- src/assets/css/librarybrowser.css | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 8c8a9ca7f..894d7332f 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -63,6 +63,10 @@ progress[aria-valuenow]::before { } .adminDrawerLogo { + display: none; +} + +.layout-mobile .adminDrawerLogo { padding: 1.5em 1em 1.2em; border-bottom: 1px solid #e0e0e0; margin-bottom: 1em; @@ -161,7 +165,7 @@ div[data-role=controlgroup] a.ui-btn-active { @media all and (min-width: 40em) { .content-primary { - padding-top: 7em; + padding-top: 4.6em; } .withTabs .content-primary { diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 13265e40d..1b0fab8d1 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -313,7 +313,7 @@ } .dashboardDocument .mainDrawer-scrollContainer { - margin-top: 6em !important; + margin-top: 4.6em !important; } } From 0afe5f62ef5f709db5710174aa5b68f6e7f5888b Mon Sep 17 00:00:00 2001 From: bg56530 Date: Sun, 29 Mar 2020 15:58:21 +0000 Subject: [PATCH 16/16] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index aab47271c..234f8dace 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1470,5 +1470,6 @@ "NoCreatedLibraries": "Il semblerait que vous n'ayez créé aucune librairie. {0}Voulez-vous en créer une maintenant ?{1}", "PlaybackErrorNoCompatibleStream": "Problème de profil client, le serveur n’a pas pu envoyer un format média compatible.", "PreferEmbeddedEpisodeInfosOverFileNames": "Préférer les informations intégrées aux noms de fichiers", - "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Utilise les informations des métadonnées intégrées, si disponible." + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Utilise les informations des métadonnées intégrées, si disponible.", + "ClientSettings": "Paramètres Client" }